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".)