Autor | Zpráva | ||
---|---|---|---|
Mastodont Profil |
#1 · Zasláno: 15. 2. 2009, 14:27:12
Dejme tomu, že máme obsah, u kterého se některé atributy mohou opakovat. Například kontakty - u každého kontaktu lze evidovat více adres, více telefoních čísel, více e-mailů. Už v první normální formě je vyloučeno, aby se takové sloupce dávaly do hlavní tabulky. Pokud je však dám do zvláštní tabulky, bude velké množství údajů prázdných - například když budě většina kontaktů mít více e-mailů, ale jen jednu adresu. Dalo by se to řešit tak, že bych pro každý opakovaný atribut vytvořil zvláštní tabulku:
- kontakty_hlavni - kontakty_email - kontakty_telefon Ale to také není ideální, protože se zvyšuje počet joinů pro výběr dat. Uvažuji, že bych to řešil zdvojeným ukládáním dat: ve hlavní tabulce by měl každý opakovaný atribut jeden sloupec, ve kterém by hodnoty byly zapsány dohromady (s oddělovačem), kromě toho by existovaly pomocné tabulky pro vyhledávání, kde by byly hodnoty zvlášť. Znamená to sice víc místa na disku, ale určitě by se zjednodušilo načítání (žádný join). Je to OK nebo se to dělá jinak? |
||
nightfish Profil |
#2 · Zasláno: 15. 2. 2009, 14:29:10
předčasná optimalizace?
|
||
joe Profil |
#3 · Zasláno: 15. 2. 2009, 14:34:55 · Upravil/a: joe
Já bych měl jen jednu tabulku navic, treba dejme tomu ty kontakty
uzivatel_id | typ | hodnota uzivatelovo id - jasné typ - enum - telefon | email | icq | ... hodnota - taky jasné A bude to jen s jedním joinem. Nevím jestli to je zrovna dobré řešení, ale udělal bych to asi tak. EDIT: a nebo s tím oddělovačem a tabulkou navíc pro hledání. |
||
Mastodont Profil |
#4 · Zasláno: 15. 2. 2009, 14:49:15 · Upravil/a: Mastodont
nightfish
Jo, jako PO to asi vypadá, ale ona k tomu ještě přibude možnost ukládání starších verzí položek, takže se více tabulkám stejně nevyhnu. |
||
ninja Profil |
#5 · Zasláno: 15. 2. 2009, 15:48:41 · Upravil/a: ninja
Mastodont: uzivatel_id | typ | hodnota | timestamp
Nejnovejsi hodnota je aktualni. Respektive pokud ma byt mozne mit vice emailu pro jednoho uzivatele, tak uzivatel_id | typ | hodnota | timestamp | aktual |
||
AM_ Profil |
#6 · Zasláno: 15. 2. 2009, 19:56:47
joeovo řešení bych označil za optimální. A možnost s oddělovačem a tabulkou navíc bych bral v úvaho až jako poslední, cokoliv, co vede k duplicitě dat, vede také k potenciálním chybám.
|
||
Mastodont Profil |
#7 · Zasláno: 17. 2. 2009, 23:02:02
Díky za názory. Ještě jsem si trochu početl a udělám to tak, že na pozadí budou normalizované tabulky, ze kterých bude vytvářen materializovaný pohled pro zobrazení dat.
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0