sql >> Databáze >  >> RDS >> PostgreSQL

Jak vytvořit relační tabulky na oboustranném trhu

Musíte porozumět základnímu způsobu zaznamenávání informací vztahově, tj. v tabulkách.

Nalezení dostatečného počtu tabulek

Stačí mít základní tabulku pro každý výrok, který potřebujete k popisu obchodní situace:

User(user_id,name,...)
    // User [user_id] is named [name]
Contacted(contact_id,item,offer_id)
    // user [contact_id] was contacted re item [item] offered by user [offer_id]
...etc...

Parametry příkazu jsou sloupce tabulky.

Pokud chcete mluvit o částech něčeho, o čem si myslíte, že má více částí (heterogenní nebo homogenní), znamená to, že některá tvrzení budou zahrnovat věc a její části:

table request(request_id,start_date,end_date,...)
    // [request_id] goes from [start_date] to [end_date] and ...
table requested(request_id,item_id,person_id,...)
    // person [person_id] requested item [item_id] in request [request_id]

Co je v tabulce

Hodnota základní tabulky jsou řádky, které činí její tvrzení pravdivým. (Každý podvýraz dotazu má také příkaz a jeho hodnotou jsou řádky, které činí jeho příkaz pravdivým.)

Nepleťte si tabulkové příkazy s obchodními pravidly. Obchodní pravidla říkají pravdy. Ale tabulkový příkaz je výrok, který nějaká n-tice učiní pravdivým (a jde do tabulky) nebo nepravdivým (je vynechán z tabulky). Všechna pravdivá a nepravdivá tvrzení z tabulek vám řeknou vše, co potřebujete vědět o podnikání. Obchodní pravidla jim nikdy nebudou odporovat. (Protože jsou vždy pravdivé.)

Přeuspořádání na lepší stoly

Klíč je sada sloupců, jejichž funkcemi jsou všechny ostatní sloupce, ale žádná z podmnožin nemá tuto vlastnost. Tabulka může mít více než jeden klíč.

Chcete-li databázi snadněji aktualizovat a dotazovat, měli byste rozdělit určité příkazy, které jsou jinými příkazy spojenými pomocí AND. Rozdělte se, dokud se každý příkaz nebude skládat z příkazu pouze o klíčových sloupcích A doplněného příkazy v tomto tvaru:

[my_column]=my_function([key_k_column_1],[key_k_column_2],...)

kde key_k_column_1,... jsou sloupce stejného klíče key_n.

(Taková tabulka je "v páté normální formě" a téma je "normalizace".)




  1. SQLSTATE[HY000]:Obecná chyba:1364 Pole 'fotografie' nemá výchozí hodnotu v laravel 5.5

  2. MySQL:sečte datatimes bez počítání překrývajících se období dvakrát

  3. Získejte záznamy z jedné tabulky, kde v jiné není žádný záznam

  4. Nasazení replikace MariaDB pro vysokou dostupnost