Uvažujme databázi obsahující produkty, zákazníky a jejich objednávky.
Každá objednávka patří zákazníkovi a může obsahovat jeden nebo více zakoupených produktů. Stejný produkt může být zakoupen několika různými zákazníky nebo stejným zákazníkem v několika objednávkách.
Takto vypadá naše Databáze šema:
Přímé a nepřímé vztahy
Přímé vztahy (interní vztahy)one-to-one, one-to-many
Přímý vztah mezi dvěma tabulkami A a B je vztah, kdy je tabulka A přímo spojena s tabulkou B cizím klíčem, ať už povinným, nebo nepovinným. Tento druh vztahu může být one-to-one nebo one-to-many.
V našem příkladu je pole orders.customers_id v přímém vztahu k poli customers.id. Pole orders.customers_id je cizí klíč.
Tento vztah umožňuje přiřadit každou objednávku k zákazníkovi.
Pomocí generátoru PHP CRUD nám umožní zobrazit jméno zákazníka každé objednávky v seznamu objednávek.
Na kartě Sestavit seznam generátoru CRUD uvidíte vztah zobrazený tímto způsobem:
Nepřímé vztahy (externí vztahy)mnoho k mnoha
Nepřímý vztah slouží k propojení několika záznamů v tabulce A s několika záznamy v tabulce B. K tomuto účelu používáme mezitabulku, která se obvykle skládá ze dvou cizích klíčů, z nichž každý umožňuje identifikovat záznamy v tabulkách A a B. Tento vztah je vztahem typu mnoho k mnoha.
V našem příkladu je mezitabulkou tabulka products_orders. Ta nám umožňuje přiřadit objednané výrobky k objednávkám. Tabulky products_orders.products_id a products_orders.orders_id jsou cizí klíče.
Pomocí generátoru PHP CRUD umožní zobrazit všechny produkty každé objednávky ve vnořené tabulce v seznamu objednávek.
Generátor také umožňuje vybrat pole produktů, která chcete zobrazit, a zda uživatelé panelu správce mohou přidávat/upravovat/mazat produkty přímo ze seznamu objednávek READ.
Pomocí generátoru PHP CRUD nám umožní zobrazit jméno zákazníka každé objednávky v seznamu objednávek.
Na kartě Sestavit seznam generátoru CRUD uvidíte vztah zobrazený tímto způsobem:
Identifikační a neidentifikační vztahy
Identifikace vztahů
Identifikující vztah lze definovat, když jsou dvě tabulky spojeny stejným identifikátorem. Jinými slovy, záznamy v druhé tabulce jsou inherentními prvky nebo charakteristikami první tabulky.
Například: kniha se skládá z kapitol. Každá kapitola je součástí jedinečné identifikované knihy. V tomto případě bude cizí klíč chapters.books_id uveden jako druhý primární klíč tabulky chapters.
Tento typ vztahu se dnes používá jen velmi zřídka. Místo toho se obvykle používá nepřímý vztah, který je obecnější a méně omezující.
Neidentifikovatelné vztahy
Neidentifikující vztah je vztah, ve kterém jsou dvě tabulky spojeny společnou příslušností nebo atributy nebo začleněním.
Například: každá objednávka patří zákazníkovi; každá objednávka obsahuje jeden nebo více produktů.