Databáze bude obsahovat předmět, který bude v nějákém oboru, může mít hodnocení a bude mít vždy jednoho správce. S předmětem budou spjaté materiály, které budou nahrávat uživatelé a navíc budou moct být prováděny revize (opravy) materiálů.
Prosím je konceptuální model v pořádku nebo tam jsou nějáké zásadní nedostatky ?
#1kucape2
Klidně bych dal možnost více správců jednoho předmětů. Také bych to spíše řešil skupina s oprávněním navázaných na entitu uživatel. Takhle ti tam vznikají dvě tabulke s podobnými údaji - správci předmětu a uživatelé.
Jinak je to tak malý systém, že na něm opravdu není téměř co pokazit.
Když sjednotím názvy primárních klíčů, například že dám všude jenom "ID" tak by pak mohlo docházelo ke kolizi jmen při převodu na relační model kdy se vytvoří cizí klíče ?
Hodnocení by mělo být relací M:N tabulek uživatel a předmět -> to znamená že tabulku uzivatel a predmet svážu jako M:N a vytvořím rozkladovou tabulku, kde přidám atribut "pocet_hvezdicek" a "popis"?
#5kucape2
Kolizemi se netrap, na to jsou názvy tabulek a aliasy. Naopak s oblibou používám shodné názvy sloupců různých tabulek podobného významu kvůli polymorfismu. Také se taková struktura mnohem lépe pamatuje a děláš pak méně chyb. Sloupce `id` a `name` mám téměř v každé tabulce a ničemu to nevadí.
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Ano, chápu, ale používám Oracle datamodeler, který neumožňuje mít stejné nazvy id v tabulkach v konceptuálním modelu (nebo mě to alespoň nejde, když dám stejné "id" v tabulkách, které jsou v relaci tak mi automaticky přidá k jednomu id_2.."), zkusím to ješte potom vyřešit.
U té tabulky hodnoceni, když to budu převádět do relačního modelu tak se mi vytvoří automaticky cizí klíče v tabulce hodnoceni - uzID (id uživatele) a uID (id předmět). Můžu pak tyto dva použít jako uzivatel_id, predmet_id abych nemusel vytvářet dva další?
Zajimave. Mozna je to chyba nebo mozna mas nekde nastavene, ze to je jakoze jedna tabulka rozdelena do dvou ramecku. A nebo je to zamer, abys vedel, ktera tabulka je hlavni a ktere se na ni pripojuji. A nebo se tim pokousi naznacit jednosmerny tok informaci jen do hlavni tabulky.
hlavni - idecko, nazev
pripojena - idecko2, nazev
#8kucape2
Pokud nemůžeš mít "id" ve všech tabulkách, je zde alternativa: Použij jako primární klíče názvy uzivatel_id, predmet_id, tedy stejné jako cizí klíče. Budeš moct používat direktivu USING v JOIN.
Je zde vidět, do jakého modelu Oracle tlačí, ale pokud nebudeš používat jejich datamodeller, tak tě nebude omezovat.
Samozřejmě stačí uzID a uID. Jen je tady problém v tom, že to jsou ve své podstatě špatné názvy. Jednoduché pravidlo pro tvorbu názvů: Tak, aby se ten název dal diktovat do telefonu. Tedy žádné zkratky (kromě obecně uznávaných), žádné slepence počátečních písmen apod.
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.