Autor Zpráva
4li
Profil
Ahoj.

Snazim sa vyriesit v hlave jeden problem.

Existuje tabulka v MySQL db, ktora vyzera takto (zoznam filmov):
ID MOVIE
1 Spiderman
2 Batman
3 Bond
4 Titanic
...

Existuje dalsia tabulka v tej iste db, ktora ma takuto podobu (zoznam uzivatelov):
ID NAME
1 Peter
2 Joseph
3 David
...

Existuje stranka, ktora sluzi na predaj listkov na film. Po prihlaseni je uzivatelovi umoznene kupit si listok na urcity film. Otazka znie, akym sposobom zaznamenavat v databaze udaje, kto si kupil aky listok na urcity film/filmy? Tj. Bude existovat kod, ktory pri volani skontroluje ci dotycny prihlaseny uzivatel ma kupeny listok na urcity film.

Ja osobne by som to riesil cez IDcka, tj. v tabulke filmov by bol dalsi stlpec a vyzeralo by to tako:
ID MOVIE TICKETS
1 Spiderman 1,2,
2 Batman 1,
3 Bond 1,
4 Titanic 3,

Z tohto vypliva, ze na Spidermana maju listky Peter a Joseph, na Batmana len Joseph atd.

Ten kod, ktory by to kontrolovat by rozlistoval jednotlive IDcka tak, ze kazde by bolo medzi dvomi ciarkami?


Dufam, ze ma niekto pochopi a poradi.. :)

Dik moc!
Joker
Profil
4li
No, skoro :-)

ID | movie | user_id
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 3 | 1
5 | 4 | 3

Takhle by to vypadalo pro zadaná data. Mimochodem, nebyl by od věci ještě sloupec pro počet lístků, co když si někdo bude chtít koupit víc než jeden lístek (sice by to bylo řešitelné tím, že by se prostě v tabulce vytvořilo víc řádků, ale sloupec pro počet by IMHO byl lepší)?
AM_
Profil
lepší je tabulka: USER MOVIE a unikátní klíč (USER, MOVIE) - tj nemůže se dvakrát vyskytnout stejný řádek, popř. může mít každý řádek ID, já ve všech tabulkách mám ID, myslím, že je to dobrý zvyk.
přičemž pokud si uživatel koupí lístky na dva filmy, přibudou dva řádky.
To je mnohem pružnější a jde s tím ve výsledku dělat víc věcí, než se seznamem odděleným čárkami.
4li
Profil
Joker & AM_
Supr, dik moc, pomohli ste mi! :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0