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

- Melmen
- Člen | 132
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
Jedním z řešení je přesedlat na ORM a nepřemýšlet v tabulkách ale entitách. :-)

- Tharos
- Člen | 1030
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 :)?

- Filip Procházka
- Moderator | 4668
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
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
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.