Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-09-2006, 19:48   #1
anonimizzato
 
Messaggi: n/a
Progetto Database

Ciao a tutti,

in questi giorni, con molta umiltà, stavo cercando di implementare la struttura di un Database per un sito che amministro da un pò di tempo che per ora è totalmente statico.

Il sito è www.lalocomotivaweb.it

quello che volevo fare era creare un DB che archiviasse le numerose informazioni sui corsi principalmente.

Pur non essendo certo difficile ho notato che dai dati presenti si venivano a creare moltre relazioni M:N (molti a molti)

Ora ho "risolto" in questo modo (nel file allegato).

Volevo sapere, alla luce di quello che potete vedere da sito, se il DB regge oppure ci sono errori macroscopici o mancanze.

Allego anche uno screenshot.

Grazie a tutti coloro che vorranno darmi un aiuto o suggerimento.

Scusate ma è il mio primo progetto.

Cerco di spiegare un pò le tabelle

Corso: identificazione generica dei vari programmi, es:
Corso di inglese di 1° livello (base)
Corso di inglese di 2° livello (medio)
ecc.

CORSI:
Nella quasi totalità dei casi hanno informazioni generiche quale il costo, la durata in mesi, il metodo di insegnamento utilizzato, il luogo di svolgimento (ovvero le aule e non le palestre ad esempio.) e sono comuni per tutti i livelli.

LIVELLI:
Ovvero una delle varie parti del Corso (se inteso come categoria)
In inglese potrebbe essere inteso in base al livello di insegnamento mentre in informatica in base al software studiato, in ginnastica se per adulti o per ragazzi ecc.

PROGRAMMA:
è la mega tabella di collegamento che ho creato per identificare in modo univoco le relazioni:
un programma può essere

ProgrammaID
Corso: INGLESE
Livello: Livello 1
Giorno: martedì
Orario da: 18.00
Orario a: 20.00
Luogo: Aule corsi
Ciclo: dal 07/10/2006 al 04/02/2007



il ciclo è importante per esempio perchè uno stesso identico corso potrebbe essere fatto più avanti ma sempre nello stesso posto allo stesso giorno con gli stessi orari ecc.
in questo modo ho un record PROGRAMMAID "univoco".

CICLI:
Una sorta di periodo di svolgimento, lo hanno solo alcuni corsi, ed immaginatelo come i trimestri i scuola.
Dal DATA al DATA

LIVELLI_INFORMATICA
Lo impostata solo come sotto-tabella dei corsi di informatica che in base al livello studiato cambiano in durata e costi in quanto non esiste un valore univoco di costo e durata come per gli altri corsi questo per evitare di aver nella tabella LIVELLI dei campi quasi sempre vuoti come "numero lezioni", "numero ore", "costo" associate solo ai corsi di informatica.

Ultima modifica di anonimizzato : 25-07-2007 alle 19:51.
  Rispondi citando il messaggio o parte di esso
Old 15-09-2006, 20:23   #2
anonimizzato
 
Messaggi: n/a
uppettino
  Rispondi citando il messaggio o parte di esso
Old 15-09-2006, 22:06   #3
vetto78
Member
 
L'Avatar di vetto78
 
Iscritto dal: Nov 2000
Città: Treviso
Messaggi: 158
Mi potresti spiegare meglio che tipo di informazioni ti servono?
Il tuo schema secondo me si può semplificare ma vorrei capire cosa ti serve e cosa no...
vetto78 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 09:44   #4
anonimizzato
 
Messaggi: n/a
Ciao,

quello che mi serve è mostrare sulle pagine del sito tutti i vari programmi disponibili per i corsi presentati sul sito www.lalocomotivaweb.it

Ogni Corso come vedi ha dei dati comuni quali: LUOGO, COSTO, DURATA, METODO, ecc. (anche se non sempre)

e poi una differenziazione per i LIVELLI (se ve ne sono, altrimenti si intende come UNICO) circa: GIORNI, ORARI, CICLO (periodo da/a) ecc.

quello che vorrei fare è avere meno dati ridondati possibili ed una struttura efficiente senza impazzire nel mare di relazione 1:N M:N che presenterebbe.

Quello che non mi serve è qualcosa a livello di UTENTE in quanto non esiste interazione, tipo iscirizioni online ecc. è solo una vetrina dei Corsi proposti.

Ho aperto un thread qua

dove un utente mi dice che il DB non è male, ma credo anch'io si possa fare qualcosa per migliorarlo.

Grazie per la risposta.

Ultima modifica di anonimizzato : 16-09-2006 alle 09:47.
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 10:34   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi sembra che vada bene...duplicazioni non ne vedo...

Fammi capire la relazioni luogo-programma...
Io metterei una relazione luogo-corso...ma bisogna vedere se è corretta...
Lo stesso corso si può svolgere in più luoghi ? In questo momento stai esprimendo che lo stesso programma si può svolgere in più luoghi...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 10:54   #6
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Mi sembra che vada bene...duplicazioni non ne vedo...

Fammi capire la relazioni luogo-programma...
Io metterei una relazione luogo-corso...ma bisogna vedere se è corretta...
Lo stesso corso si può svolgere in più luoghi ? In questo momento stai esprimendo che lo stesso programma si può svolgere in più luoghi...
Si esatto si può svolgere in più luoghi

guarda il corso di ginnastica ad esempio:http://www.lalocomotivaweb.it/corsi-di-ginnastica.htm

Lo stesso corso può svolgersi in diverse palestre quindi mi sembrava giusto metterlo a livello di PROGRAMMA come si vede.

Quello che hanno in comune e che è condiviso a livello di CORSI è la durata, la frequenza settimanale, il costo, l'insegnate ecc.

GINNASTICA DOLCE e GINNASTICA DI MANTENIMENTO, che hanno quote, diverse, li tratti a tutti gli effetti come corsi diversi ... anche perchè lo sono pur essendo sempre "ginnastica".
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:05   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Però allora non capisco la distinzione fra Programma e Corso...

Prendendo come esempio quella pagina sai dirmi come verrebbero composte le tabelle Programma e Corso ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:08   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
ok ok ci sono arrivato...va bene... Io eliminerei la relazione Ciclo... Sei sicuro che siano preventivabili cicli successivi a quello corrente ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:13   #9
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Però allora non capisco la distinzione fra Programma e Corso...

Prendendo come esempio quella pagina sai dirmi come verrebbero composte le tabelle Programma e Corso ?
è perchè se no dovrei ripetere una marea di informazioni per ogni PROGRAMMA e alla fine mi verrebbe fuori un foglio di excel e non un DB

Cmq vedo che l'avevi notato
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:15   #10
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
ok ok ci sono arrivato...va bene... Io eliminerei la relazione Ciclo... Sei sicuro che siano preventivabili cicli successivi a quello corrente ?
Nei corsi di informatica http://www.lalocomotivaweb.it/corsi-di-informatica.htm

Ci sono ad esempio 4 cicli

1° Ciclo
02 Ottobre 2006
2° Ciclo
27 Novembre 2006
3° Ciclo
05 Febbraio 2007
4° Ciclo
02 Aprile 2007

In questo caso non è specificata la data di fine per ogni ciclo quindi pensavo di fare in modo da renderla facoltativa nell'interfaccia (PHP)
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:20   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho capito anche ciclo...ok...va bene, ma non mi torno una cosa...
Posto così com'è in luoghi diversi non potresti realizzare cicli diversi...ti torna ? Secondo me cicli dovrebbe avere come FK programma_id e dovrebbe essere una relazione tutta chiave... L'ciclo_id in questo caso è una informazione non necessaria...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:23   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Anche livelli secondo me ha qualche problema... Tutti i livelli del corso costano uguale ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:28   #13
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Ho capito anche ciclo...ok...va bene, ma non mi torno una cosa...
Posto così com'è in luoghi diversi non potresti realizzare cicli diversi...ti torna ? Secondo me cicli dovrebbe avere come FK programma_id e dovrebbe essere una relazione tutta chiave... L'ciclo_id in questo caso è una informazione non necessaria...
Umh spetta perchè non ho capito bene ..
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:30   #14
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Anche livelli secondo me ha qualche problema... Tutti i livelli del corso costano uguale ?
No esatto se vedi livelli_informatica vedrai che ho aggiunto un campo circa la quota di partecipazione che è diversa a seconda che uno faccia WORD oppure WINDOWS.

quindi ho due campi "quota di partecipazione" sia in CORSI che LIVELLI_INFORMATICA.

Dici che debba spostare questo campo in PROGRAMMI?

Il fatto è che non avviene quasi mai questa differenziazione a livello di PROGRAMMA.
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:36   #15
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Ho capito anche ciclo...ok...va bene, ma non mi torno una cosa...
Posto così com'è in luoghi diversi non potresti realizzare cicli diversi...ti torna ? Secondo me cicli dovrebbe avere come FK programma_id e dovrebbe essere una relazione tutta chiave... L'ciclo_id in questo caso è una informazione non necessaria...
Ok forse ho capito:

intendi una tabella CICLI tipo:

PogrammaID
data_da
data_a

dove programmaID è PK e FK contemporaneamente.

quindi a tutti gli effetti una tabella sottoinsieme di PROGRAMMI che mette le informazioni del periodo solo per quei programmi che hanno cilci diversi giusto?
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:38   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Per ogni luogo in cui il corso si svolge c'è una tupla nella relazione programmi, ok ?
In questa tupla di programmi quindi ci sono orari e giorni diversi per ogni luogo, ma non puoi avere cicli in date diverse !!!

Senza contare che hai gli stessi cicli per ogni livello del corso...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:41   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Sgurbat
Ok forse ho capito:

intendi una tabella CICLI tipo:

PogrammaID
data_da
data_a

dove programmaID è PK e FK contemporaneamente.

quindi a tutti gli effetti una tabella sottoinsieme di PROGRAMMI che mette le informazioni del periodo solo per quei programmi che hanno cilci diversi giusto?
No, la tabella deve essere tutta chiave...in pratica la PK è (PogrammaID,data_da,data_a)

Select * from Cicli where programma_id = XXXX;

ti ritorna tutti i cicli di un dato programma...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 11:56   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ricapitolando i farei qualche modifica...a meno di non scriversi tutto a penna e portarla in una forma normale, io farei così:

Categorie(id_categoria (PK), nome, descrizione)
Corsi(id_corso (PK), id_categoria (PK), nome, descrizione)
Livelli(id_livello (PK), id_corso (FK), costi, rate, allievi, insegnanti e così via)
Luoghi(id_luogo (PK), ...così com'è ora)
Programmi(id_programma (PK), id_livello (FK), id_luogo (FK), orari vari)
Cicli(id_programma, da, a) tutta chiave
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 12:08   #19
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Ricapitolando i farei qualche modifica...a meno di non scriversi tutto a penna e portarla in una forma normale, io farei così:

Categorie(id_categoria (PK), nome, descrizione)
Corsi(id_corso (PK), id_categoria (PK), nome, descrizione)
Livelli(id_livello (PK), id_corso (FK), costi, rate, allievi, insegnanti e così via)
Luoghi(id_luogo (PK), ...così com'è ora)
Programmi(id_programma (PK), id_livello (FK), id_luogo (FK), orari vari)
Cicli(id_programma, da, a) tutta chiave
Azz... però così in Livelli avrei una marea di dati ridondanti circa costi, rate, insegnanti, allievi ecc. che tranne per informatica ed altri pochi casi sono generici a livello di corso.
  Rispondi citando il messaggio o parte di esso
Old 16-09-2006, 12:16   #20
anonimizzato
 
Messaggi: n/a
Quote:
Originariamente inviato da cionci
Per ogni luogo in cui il corso si svolge c'è una tupla nella relazione programmi, ok ?

Quote:
In questa tupla di programmi quindi ci sono orari e giorni diversi per ogni luogo,
Eatto perchè un uno o più programmi si possono svolgere nello stesso luogo

Quote:
ma non puoi avere cicli in date diverse !!!
Non ho capito mi potresti fare un esempio?

Quote:
Senza contare che hai gli stessi cicli per ogni livello del corso...
Si perchè più livelli di un corso si svolgono nello stesso periodo e poi, magari, il tutto riprende uguale in caso di nuovo ciclo.
Non vedo il problema
  Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
'Non avrete aumenti': la decisione shock...
TIM lancia il Pass Mondiali DAZN: 104 pa...
Tesla Roadster, promessa o miraggio? La ...
Mark Hamilton, la tavola periodica del m...
Hanger 13 annuncia Uomo d'Onore: espansi...
La battaglia delle HBM4 entra nel vivo: ...
Dopo 12 anni torna Alien: Isolation. Ecc...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v