Autor | Zpráva | ||
---|---|---|---|
Nikson Profil * |
#1 · Zasláno: 3. 6. 2012, 12:46:55
Zdravim,
vytvářím jakousi menší filmovou databázi a mám dvě tabulky Reziser a Film. Mezi nimi je vazba 1:N - film může režírovat pouze jeden režisér, ale režisér mohl režírovat N filmů. Půjdu rovnou k otázce - jak toto propojení řešit ve formuláři kde se budou přidávat nové filmy? Napadli mě 2 možnosti. 1) Bude jednotný formulář kde se bude vyplňovat vše co se filmu týče (název filmu,rok natočení...) + bude selectovací tlačítko do kterého načtu všechny režiséry co mám v databázi a uživatel si pak jen vybere. Pro mě pohodlná verze na naprogramování, ale trochu mě děsí situace kdy bych měl v DB tisíce režisérů - nevim jestli by to pak neovlivnilo načítání stránek apod. 2) Na prvním formuláři se vyplní opět věci týkající se filmu, VYJMA režiséra - po odeslaní se uloží do session, ty si pošlu na další formulář kde bude vyhledávací pole - podle přijmení se vyhledají odpovídající režiséři a kliknutím na vyhledaného režiséra se vše uloží do db. To mi přijde takové kostrbaté, ale asi vhodnější - co myslíte? Novým řešením se nebráním (pokud je pochopim :)). Jinak co se týče té odezvy - je mi jasné, že tam nikdy tolik režisérů mít nebudu, nicméně jde o školní projekt a dozajista (pokud by to vadilo) by tam tahle "co kdyby..." otázka padla. Předem děkuju za jakékoliv rady :) |
||
Someone Profil |
#2 · Zasláno: 3. 6. 2012, 12:53:24
1) Co když budu přidávat film, jehož režisér ještě není v databázi?
3) Já bych to udělal nějak takhle: 2 tabulky v DB: Režiséři ID | Jmeno Filmy ID | Nazev | Id_rezisera Udělal bych formulář, do kterého by se zadávalo jméno režiséra. Po odeslání bych zkontroloval zda nějaký režisér s tímto jménem existuje. existuje -> Získal bych jeho ID a vložil bych film do DB neexistuje -> Vložil bych ho do tabulky režiséři, získal bych ID pomocí mysql_insert_id() a opět bych vložil film do DB. |
||
Nikson Profil * |
#3 · Zasláno: 3. 6. 2012, 13:20:28
No, myslel jsem že to udělám tak, že režisér prostě musí být dřív než film - ale máš pravdu, to není nejlepší - přidám možnost přidat režiséra při tvorbě filmu.
Jinak u toho řešení co mi navrhuješ by mi určitě vytkli dvě veči 1) Uživatel se překlikne a místo Cameron napíše Camero a bude tam mít hned dalšího (nechtěného) režiséra 2) Můžu mít v DB dva naprosto identické režiséry - povinné je u nich jen jméno,přijmení a rok narození. Pravděpodobnost, že toto nastane je fakt mizivá, ale z hlediska DB systému se to (dle mého) musí brát v potaz. Čili by mohla nastat situace, že budou vybráni dva režiséři na místo jednoho. |
||
Someone Profil |
#4 · Zasláno: 3. 6. 2012, 13:23:49
Tak přidávání režiséru udělej jako věc druhou a tohle bych normálně řešil přes Ajax, uživatel začne psát jméno režiséra a ty mu budeš z databáze navrhovat shody.
|
||
Nikson Profil * |
#5 · Zasláno: 3. 6. 2012, 13:31:05
Když to je právě problém - ajax neumim. A navíc (a teď nevim jestli nekecám kraviny) když ho bude mít někdo vyplej tak mu to žádnou shodu nenajde, ne? Což je další podmínka - musí to být funkční i s vypnutým flashem/obrázky/jscriptem...
|
||
panther Profil |
#6 · Zasláno: 3. 6. 2012, 13:39:22
Nikson:
„když ho bude mít někdo vyplej tak mu to žádnou shodu nenajde, ne“ když bude vyplý JS, tak hledání bude fungovat, nebude fungovat pouze našeptávač. „1) Uživatel se překlikne a místo Cameron napíše Camero a bude tam mít hned dalšího (nechtěného) režiséra“ pokud se uklikne při vyhledávání, je to smůla. Když hledáš na googlu „hodinky“ a překlepneš se na „holínky“, taky je to smůla. „1) Můžu mít v DB dva naprosto identické režiséry“ možná data je třeba brát nejen teoreticky, ale i prakticky. Režisérů mnoho není, a šance, že budou dvě shodná jména (ta je relativně vysoká) a datum narození, je téměř nulová. To je k tomu, že tato situace téměř jistě nenastane. Ale, i když nastane, každý z těch „identických“ režisérů bude mít vlastní ID, kde je tedy problém? Návrh struktury DB v [#2] je správný. |
||
NouF Profil |
#7 · Zasláno: 3. 6. 2012, 13:53:56
1000 režisérů to je pro mysql prd, pokud to nebude fakt prasácky napsané.. Jestli se nepletu, tak do desítek milionů záznamu je vše v caiku.
|
||
Nikson Profil * |
#8 · Zasláno: 3. 6. 2012, 14:20:04
panther
Ad identičtí režiséři Šak ano, tak to mám řešené - každý má své unikátní ID. Jen jsem mluvil o tom, že jsem tu situaci uvažoval a že by se mohlo stát (kdyby postupoval podle rady od Someone), že by byli vybráni dva na místo jednoho. Ad holinky x holínky Ano s tím souhlasim, nicméně náš cvičící si potrpí na to aby aplikace byla totálně blbu vzdorná a tak mám pocit, že by mu tohle vadilo (i když uznávám, že máš pravdu). Nouf Fakt? Tak to by mělo být v pohodě. Ale neni to doufám až tak prasácké řešení, ne? Mě by právě zajímalo i jak se tyhle situace řeší v praxi. |
||
Tori Profil |
#9 · Zasláno: 3. 6. 2012, 16:52:00 · Upravil/a: Tori
Nikson:
„tabulky Reziser a Film. Mezi nimi je vazba 1:N - film může režírovat pouze jeden režisér“ Myslím si, že by to mělo spíš být M:N. Filmů s několika režiséry je sice méně, nicméně jsou (např. Matrix 1-3 nebo Bound od Andyho a Lany Wachowskich). „náš cvičící si potrpí na to aby aplikace byla totálně blbu vzdorná“ Tak to mu přeju dobré nervy. :) Šlo by udělat i to, že do DB vy sám uložíte pár desítek nejznámějších režisérů a uživateli pak ve formuláři zobrazíte pouze výběr z už uložených jmen. Pokud tam svého režiséra nenajde, bude muset zaškrtnout volbu "Přidat režiséra" a po odeslání se mu zobrazí 2.formulář jen na jméno a příjmení. Pro uživatele velmi nepohodlné řešení, nicméně trochu lépe zajistí konzistenci dat. Každopádně pokud data nezadáváte všechna sám, ale několik různých cizích lidí s různým stupněm motivace / pocitu spoluzodpovědnosti / znalostí, tak se šance na překlepy zvyšuje úměrně počtu osob a vkládaných záznamů. Příkladem budiž např. katalog hudebního odd. Městské knihovny Praha, kde je občas jeden skladatel uveden 2-4 způsoby (správně, s překlepem, nový záznam bez letopočtů narození/úmrtí, a případně i v transliteraci z (chybové) transpozice do azbuky). Ad shoda jmen několika režisérů: Pokud budou v rozbalovací nabídce, tak stačí např. za jménem uvést nejznámější film nebo jiný rozlišující znak. Koukněte třeba, jak vypadá vyhledávání na imdb.com. |
||
Časová prodleva: 12 let
|
0