Cheia primara in relatia

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

DanieI
New Member
Mesaje: 2
Membru din: Joi Mar 26, 2015 10:31 pm
Localitate: Alba Iulia

Cheia primara in relatia

Mesajde DanieI » Sâm Mar 28, 2015 1:04 am

Buna,

Am ca proiect crearea unei baze de date pentru un cinematograf. Unul dintre tabele trebuie sa fie program, care trebuie sa contina urmatorul tabel:
ProgramCinema ( ziua, luna, an, ora, film )
Intrebarea mea este: in aceasta relatie care ar putea fi cheie primara ? In cazul in care as alege cheia primara ziua, se poate seta un auto increment pentru campul ziua care sa creasca de la 1 pana la 30 ? in timp ce pentru campurile luna si an sa setez valori fixe.
Imi puteti da va rog o sugestie ?



nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Cheia primara in relatia

Mesajde nevvermind » Sâm Mar 28, 2015 1:47 am

PK-urile sunt folosite sa distinga (deci sa identifice) intre randurile unui table.
PK trebuie sa fie unic in acel tabel. Or nu poti PK 1-30, wtf? Cum distingi intre doua programe din aceeasi zi? Oricum, engine-ul mysql nu te-ar lasa.
Cel mai bine faci o noua coloana - "program_id" - PK cu auto increment. Acum poti distinge intre programe, fara sa intervii in domeniul aplicatiei tale.

De ex., unii pun ca PK email-ul userilor. E valid, fiindca email-ul e unic, presupunand un tabel cu userii aplicatiei. Dar e urat, fiindca PK va fi string. Comparatiile cu string sunt greoaie etc.
Nu mai spun ca trebuie sa duplice acele email-uri in foreign key-uri.

Regula de baza: fa cate coloane vrei, dar prima pastreaz-o pt un PK de tip int/bigint. Joinurile si alte artifcii la nivel de mysql se vor folosi de acel PK, iar aplicatia ta php de celelalte coloane.

PS: Ce ai tu acolo e "one-to-many" - mai multe programe pt o singura cinema. In cazul asta se procedeaza asa:
- tabel "cinema": cinema_id (PK, AI, int 10), name (varchar, 255), address, tel
- tabel "programe": program_id (PK, AI, int 10), cinema_id (foreign key catre "cinema.cinema_id", int 10), movie, day, month, year
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

DanieI
New Member
Mesaje: 2
Membru din: Joi Mar 26, 2015 10:31 pm
Localitate: Alba Iulia

Re: Cheia primara in relatia

Mesajde DanieI » Sâm Mar 28, 2015 7:11 pm

Multumesc pentru raspuns.


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 19 vizitatori