mysql - problemi inserimento dati nel database, consigli.

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Ciao a tutti, ho creato due tabelle utenti e videos dove un utente una volta registrato può inserire anche dei video . Ovviamente un utente ha la possibilità di inserire più video nella stessa sessione di registrazione. Purtroppo ho notato facendo dei test che ogni volta che voglio inserire dai due e piu video il database non lo registra. Ho usato l' indirizzo e-mail come parametro distintivo tra i vari utenti. questo costringerebbe a loggarsi con piu indirizzi e-mail 2, 3 ecc volte per permettere di inserire 2, 3 volte i video. Posto il mio script per rendere l'idea. Penso che il problema risieda dal' uso errato delle chiavi.

CREATE TABLE videos(
nomevideo varchar(150) ,
id_video int(8) AUTO_INCREMENT PRIMARY KEY,
settore varchar(20) ,
descrizione mediumtext, // testo media lunghezza ,,, descrizione.
upload datetime CURRENT_TIMESTAMP,
idvideo varchar(30) PRIMARY KEY //corrisponde l'indirizzo email del utente come parametro identificativo tra i video. viene inserito però una volta sola nella tabella nel momento del log in? Come e possibile?
)

So di non essere stato chiarissimo. Ringrazio anticipatamente , e importante.


Grazie. Giorgio.
 

marino51

Utente Attivo
28 Feb 2013
2.903
160
63
Lombardia
nelle tabelle esiste una sola chiave primaria, ne hai definite due
in particolare la chiave primaria deve essere associata ad una colonna che contenga valori univoci
che, nel caso rappresentato, è "id_video"

la seconda chiave "idvideo" deve essere definita come "foreign key" e non ha l'obbligo dell'univocità degli elementi

se non strettamente necessaria, è possibile evitare la primary key,
non la colonna "id_video" che identifica in modo univoco ciascun elemento della tabella,
in questo modo si risparmierà lo spazio su disco per l'indice ed al motore del database la gestione dello stesso

giusto una breve lettura sull'argomento
http://www.mysqltutorial.org/mysql-primary-key/

infine,
cerca di usare nomi attinenti, per "id_video" e "idvideo" tra qualche mese ti chiederai qual è il nome da usare
 

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Ciao Marino51 grazie.. quindi mi consigli di togliere tutte le chiavi primarie? oppure tengo id_video come chiave primaria e idvideo come foreign key?
Grazie anticipatamente.
Giorgio.
 

marino51

Utente Attivo
28 Feb 2013
2.903
160
63
Lombardia
sicuramente ti serve "idvideo" come foreign key per indicizzare la tabella e rendere più rapide le ricerche, mentre

tutto ciò che è presente ma non serve è dannoso (in questo caso per lo spazio e per il lavoro aggiuntivo al motore) e può essere fonte di guai,

definisci id_video come primary key solo se ti serve per creare un collegamento con altre tabelle dove l'elemento di riconoscimento è lo specifico video (potrai comunque aggiungerlo in seguito al momento del bisogno)