Návrh databáze – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Návrh databáze – MySQL – Fórum – Programujte.comNávrh databáze – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
kucape20
Newbie
24. 11. 2015   #1
-
0
-

Zdravím,

potřebuji navrhnout školní databázi a potřeboval bych to omrknout.

V podstatě by to měla být databáze předmětů s materiály.

Konceptuální model:

Připojen obrázek.

Popis:

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 ?

Nahlásit jako SPAM
IP: 85.207.89.–
ondrej39+1
Věrný člen
24. 11. 2015   #2
-
0
-

#1 kucape2
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.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
kucape20
Newbie
25. 11. 2015   #3
-
0
-

#2 ondrej39
Mohl byste mi prosím více popsat to řešení skupina s oprávněním navázaných na entitu uživatel ? Jak to udělat?

Nahlásit jako SPAM
IP: 85.207.89.–
Kit+15
Guru
25. 11. 2015   #4
-
0
-

#2 ondrej39
Správce předmětu bych spíš ponechal jednoho.

#1 kucape2
Tabulky je dobré pojmenovávat v jednotném čísle a malými_písmeny. Jinak se SQL dotazy docela blbě čtou.

Určitě bych sjednotil názvy primárních klíčů na "id". Lépe se s tím pracuje.

Tabulku se správci předmětu bych zrušil. Stačí, když tabulka předmět ponese atribut spravce_id, který bude odkazovat na tabulku uživatelů.

Uživatelé by měli mít atributy jméno a příjmení.

Součástí revize materiálu by měl být i její URL pro stažení.

Hodnocení by mělo být relací M:N tabulek uživatel a předmět. Jinak budou uživatelé klidně hodnotit i vícekrát stejný předmět.

Jeden předmět může být společný pro více oborů. Ta vazba by měla být M:N.

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.
kucape20
Newbie
25. 11. 2015   #5
-
0
-

#4 Kit

Děkuji za rady. Ještě bych se chtěl zeptat:

  • 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"?

Po úpravě tedy:

Připojen obráze

Připojen obrázek.

Nahlásit jako SPAM
IP: 85.207.89.–
Kit+15
Guru
25. 11. 2015   #6
-
0
-

#5 kucape2
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.
Kit+15
Guru
25. 11. 2015   #7
-
0
-

#5 kucape2
hodnoceni: uzivatel_id, predmet_id, hvezdicek.

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.
kucape20
Newbie
25. 11. 2015   #8
-
0
-

#7 Kit

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ší?

Nahlásit jako SPAM
IP: 2001:718:1001:700:200:5ef...–
peter
~ Anonymní uživatel
4016 příspěvků
25. 11. 2015   #9
-
0
-

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

Nahlásit jako SPAM
IP: 2001:718:2601:26c:a15b:fb...–
Kit+15
Guru
25. 11. 2015   #10
-
0
-

#8 kucape2
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.
kucape20
Newbie
25. 11. 2015   #11
-
0
-

Dobře ještě to poupravím, děkuju všem za rady :)

Nahlásit jako SPAM
IP: 85.207.89.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Návrh databáze — založil Dragon

Návrh databáze — založil Gooo

Návrh databáze skladu — založil Kolko-tolko

MySQL - Návrh databáze — založil panboure

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý