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.