Modelování malých vyhledávacích entit

Dokončeno

Náš datový model zahrnuje dvě malé referenční datové entity ProductCategory a ProductTag. Tyto entity se používají pro referenční hodnoty a souvisejí s jinými entitami prostřednictvím 1:Many relationship.

Diagram znázorňující relaci kategorií produktů, produktů, značek produktů a tabulek značek produktů

V této lekci budeme modelovat ProductCategory entity a ProductTag v našem modelu dokumentu.

Kategorie produktů modelu

Nejprve u kategorií namodelujeme data se sloupci ID a name jako jediné vlastnosti a umístíme je do nového kontejneru s názvem ProductCategory.

Dále musíme zvolit klíč oddílu. Pojďme se podívat na operace, které musíme s daty provést.

Vytvoříme novou kategorii produktů, upravíme kategorii produktů a pak vypíšeme všechny kategorie produktů. Vytváření a úpravy kategorií produktů nejsou často spouštěné operace. Naše aplikace elektronického obchodování často zobrazí seznam všech kategorií produktů, když zákazníci navštíví web. Takže poslední operace je ta, která se spustí nejvíce.

Dotaz pro tuto poslední operaci bude vypadat takto: SELECT * FROM c. S ID jako vybraným klíčem oddílu teď bude tento dotaz křížový, i když se chceme pokusit optimalizovat tyto operace náročné na čtení, pokud je to možné, používají pouze jeden oddíl. Víme také, že data pro produktovou kategorii se nikdy nebudou blížit velikosti 20 GB, takže jak by nám tyto informace pomohly při modelování dat způsobem, který povede k dotazu na jeden oddíl, když vypíšeme všechny kategorie produktů.

Diagram znázorňující dotaz napříč oddíly pro výpis všech kategorií produktů

Abychom mohli převést toto malé množství dat zpět do jednoho oddílu, můžeme do schématu přidat entitu diskriminující vlastnost a použít ji jako klíč oddílu pro tento kontejner. Přiřazením konstantní hodnoty této vlastnosti pro všechny dokumenty tohoto typu v kontejneru zajistíme, že teď máme dotaz na jeden oddíl. V tomto případě zavoláme vlastnost type a poskytneme konstantní hodnotu category. Náš dotaz by teď vypadal takto: SELECT * FROM c WHERE c.type = ”category”.

Diagram znázorňující kategorii produktu modelovanou s klíčem oddílu jako typem a hodnotou jako category

Model značek produktů

Další je entita ProductTag . Tato entita je ve funkci téměř identická s ProductCategory entitou, o které jsme se bavili v předchozí části. V tomto případě použijeme stejný postup a namodelujme dokument tak, aby obsahoval vlastnosti ID a názvu, a vytvořte entitu s názvem type, v tomto případě s konstantní hodnotou tag. Pojďme vytvořit nový kontejner s názvem ProductTag a vytvořit type nový klíč oddílu.

Diagram znázorňující modelovaný kontejner značek produktů s klíčem oddílu jako typem a hodnotou jako značkou

Některým lidem připadá tato technika modelování malých vyhledávacích tabulek divná. Modelování dat tímto způsobem nám ale dává příležitost provést další optimalizaci v dalším modulu.