Autor Zpráva
joe
Profil
Ahoj po delší době, jdu si pro radu, jak by měl vypadat návrh databáze - potřebuji entitu, která bude mít různé vlastnosti a já nad nimi budu téměř pořád filtrovat (takže by asi měly být pod indexem).

Reálný příklad, kniha, která má vlastnosti název, originální název, rok vydání, počet stran, ...atd. Těch parametrů bude třeba 40 (a každá kniha bude mít stejné vždy stejné parametry). Aplikace bude umožňovat fltrování nad knihami a záznamů bude hodně.

Jak by podle vás měly vypadat tabulky? Prosím o radu, díky!
Kajman
Profil
A kolik rozdílných entit čekáš? A bude se nějak společně pracovat i s různými entitami nebo se spíše bude hledat jen v knihách? Má být v administraci možnost přidání dalších entit nebo jejich parametrů?
joe
Profil
Samotných entit 5 milionů a více. S ostatními entitami v závilosti ke knize se teď pracovat nebude.

Knihy bude moci přidávat, ale parametry budou neměnné.

Návrh databáze mi říká (podle mých požadavků) umísti sloupce do tabulky s knihama, ale rozumu se to nezdá :) Hodně záznamů a zároveň by musel být nad každým tím sloupcem index, tak nechci udělat špatný návrh hned v začátku.
joe
Profil
Ještě bych možná doplnil, že by se hodilo mít i vlastnosti, u kterých se dá určit více hodnot.
Kajman
Profil
Měl jsem na mysli počet druhů entit (kniha, hračka, pračka,...) a těch asi 5 mil. nebude. Nepřesně jsem to napsal.

Pro knihy bych si udělal jednu základní tabulku pro vlastnosti, které nemívají více než jednu hodnotu (v některých databázích bych zvažoval dvě tabulky pro rozdělení sloupců se statickými a dynamickými rozměry). Pokud se nebude zapisovat každou minutu třeba 1000x do této tabulky, tak bych se většího počtu indexů nebál - jen zaberou více místa na disku.

Pak další vazební tabulky pro provázání s jinými tabulkami, kde těch hodnot může být víc - např. na autory, žánry.

A pak tabulku na definici dalších vlastností (s možností více hodnot) a tabulku na provázání kniha-vlastnost-hodnota.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0