Autor Zpráva
johny d.
Profil *
Ahoj, rád bych se zeptal na jednu pro mě celkem důležitou věc, kterou zrovna řeším. Dělám na aplikaci, která je rozdělena do více podobně strukturováných částí (modulů). Každý z těchto modulů obsahuje podobné věci, ale každý obstarává jednu oblast aplikace, Je zde např. modul pro články, stránky, produkty atd. Jedná se o to, že každý z těchto modulů do databáze ukládá název, datum vytvoření, zda je aktivní či ne atd. Další data už pak nejsou společná, např. odkaz, který je jenom u některých modulů. Nyní to řeším tak, že pro každý modul existuje jedna samostatná tabulka. Do každé se tedy ukládá např. ten název. Napadlo mě, že lepší by bylo mít jen 2 tabulky a to tabulku abject a objectmeta (moglo by se jmenovat i jinak). Do tabulky object by se ukládala data, která obsahuje každý modul, tedy ten název, aktivita, datum vytvoření a další. Ostatní data by byla uložena v tabulce objectmeta, jako páry klíč / hodnota. Struktura by mohla být takováto.

object:

id int,
name varchar,
active tinyint(1),
created date;

objectmeta:

object_id int,
type varchar, (možná spíše enum - jako typ objektu/modulu, tedy article, page atd.),
key varchar,
value varchar;

V objectmeta by sloupečky key a value byly právě pro ukládání dodatečných hodnot. Např. pro článek by se název článku uložil do tabulky object, ale obrázek by se uložil do object meta, jako object_id např. 1, type => article, key => image a value => image_name.jpg. Bojím se ale, že tyto tabulky a hlavně objectmeta by neúnostně boptnala. Jaký je váš názor na takový návrh? Bylo by to dobré? A co z hlediska velikých objemů, kdy by např existovalo 1000 článků, 100 stránek a hromada dalších dat a všechny by byly uloženy pouze v těchto dvou tabulkách?
Kajman
Profil
johny d.:

Sloupec type by měl být v tabulce object. Někdy se dává do objectmeta více sloupců, pokud je třeba mít více typů hodnot (čísla uložená jako čísla, datumy uložené jako datumy, atp.). Pokud si vystačíte s varcharem, tak to tak můžete udělat.

A co z hlediska velikých objemů, kdy by např existovalo 1000 článků, 100 stránek a hromada dalších dat a všechny by byly uloženy pouze v těchto dvou tabulkách?

Pokud budou vhodně indexy, tak bude výkon dobrý - databáze jsou stavěné na mnohem větší objemy.

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: