Jak řešíte návrh databáze?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Melmen
Člen | 132
+
0
-

Ahojte,

Předem se omlouvám za možný offtopic…

Ale jak řešíte návrh databáze? Do doby než jsem poznal Nette jsem neměl ani potuchy o nějakém ORM, cizích klíčích atd, prostě sem vytvořil databázi, naklikal tabulky, sloupce a čau babi. Jenže když tomu všemu začínám přicházet na kloub, trápí mě návrh databáze.
Dám příklad::

Mám tabulku Users a v ní sloupce id, nickname, password, email, registration, lastlogin, avatar, atd atd :)
Po přečtení Třetí normální formy se mi ale tenhle návrh nelíbí. Udělal bych to na víc tabulek, např tabulka Emails, kde by byl sloupec id, user_id a mail. A podobně s nickname, registration, avatar, a všechno to spojit přes cizí klíče (nebo si s tím NotORM poradí i jinak? Jak bych pak přistupoval v modelu třeba k tomu emailu?)

Nevím jestli to nepřeháním nebo jestli mi z toho už nezačlo hrabat, ale každopádně se mi to zdá víc cool ;)

Díky za odpovědi

Patrik Votoček
Člen | 2221
+
0
-

Jedním z řešení je přesedlat na ORM a nepřemýšlet v tabulkách ale entitách. :-)

nAS
Člen | 277
+
0
-

Pokud může mít jeden uživatel více nicků (a stejně i pro ostatní sloupečky), je rozložení nezbytné. Pokud nemůže, je zbytečné (máš s tím více práce ty a hlavně databáze).

Tharos
Člen | 1030
+
0
-

Patrik Votoček napsal(a):

Jedním z řešení je přesedlat na ORM a nepřemýšlet v tabulkách ale entitách. :-)

Tohle je ale tak trochu utopie, nebo ne :)? Stejně nakonec bude muset znát SQL, umět entity namapovat, u složitějších dotazů „poradit“ ORMku… Nebo už se tohle zlepšilo :)?

arron
Člen | 464
+
0
-

Nu Doctrine 2 už to má vyřešené IMHO celkem obstojně…ale tuším, že od jisté složitosti jí člověk bude muset trochu pomoct :-) Kde přesně je ta hranice, tak to nevim (dělám si toho běžně ručně docela dost, takže jsem tu hranici netestoval:-)).

Filip Procházka
Moderator | 4668
+
0
-

Tharos napsal(a):

Tohle je ale tak trochu utopie, nebo ne :)? Stejně nakonec bude muset znát SQL …

Jak se to vezme. Zatím jsem nepotřeboval nic, co by nezvládlo DQL. A DQL je abstrakce SQLka nad entitami, né nad tabulkami.

umět entity namapovat, u složitějších dotazů „poradit“ ORMku…

Doctrina mi všechno mapuje sama, stačí napsat to tolik nenáviděné DQL a o nic jiného se nestarám :)

Nebo už se tohle zlepšilo :)?

Ono to bylo někdy ve dvojce špatné?

Tharos
Člen | 1030
+
0
-

Máte pravdu. Asi ta má skepse vyplývá tak trochu z toho, že kdykoliv jsem s Doctrine 2 pracoval, stejně jsem jí vždycky za zády koukal, co že mi to s databází provádí a jak hezky (a někdy nehezky) se jí ptá. :) Faktem je, že u Doctrine 2 už to asi opravdu není nezbytně nutné. A tak tedy asi to až taková utopie není, sorry :).

Patrik Votoček
Člen | 2221
+
0
-

Tharos napsal(a):

Tohle je ale tak trochu utopie, nebo ne :)? Stejně nakonec bude muset znát SQL, umět entity namapovat, u složitějších dotazů „poradit“ ORMku… Nebo už se tohle zlepšilo :)?

Dokonalosti nedosáhneš nikdy. Jak píše HosipLan tak díky DQL to taková tragédie není. A ano pozadí budeš muset znát i nadále. Nicméně jakmile začneš uvažovat například o inheritance místo stávajícího myšlení nad joinama tak je to o něčem jiném.

Melmen
Člen | 132
+
0
-

Díky všem za odpovědi, mrknu na tu Doctrine2 ;)