Vous devez comprendre la manière de base d'enregistrer des informations de manière relationnelle, c'est-à-dire dans des tableaux.
Trouver suffisamment de tables
Ayez simplement un tableau de base pour chaque énoncé dont vous avez besoin pour décrire une situation commerciale :
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...
Les paramètres de l'instruction sont les colonnes du tableau.
Si vous voulez parler des parties de quelque chose que vous considérez comme ayant plusieurs parties (hétérogènes ou homogènes), cela signifie simplement que certaines déclarations impliqueront une chose et ses parties :
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]
Que contient un tableau
La valeur d'une table de base correspond aux lignes qui rendent son énoncé vrai. (Chaque sous-expression de requête a également une déclaration, et sa valeur est les lignes qui rendent sa déclaration vraie.)
Ne confondez pas les instructions de table avec les règles métier. Les règles métier énoncent des vérités. Mais une déclaration de table est une déclaration qu'un tuple rend vraie (et va dans la table) ou fausse (est laissée en dehors de la table). Toutes les affirmations vraies et fausses des tableaux vous disent tout ce que vous devez savoir sur l'entreprise. Les règles métier ne les contrediront jamais. (Puisqu'ils sont toujours vrais.)
Réorganisation vers de meilleures tables
Une clé est un ensemble de colonnes dont toutes les autres colonnes sont de telles fonctions, mais dont aucun des sous-ensembles n'a cette propriété. Une table peut avoir plusieurs clés.
Pour rendre une base de données plus facile à mettre à jour et à interroger, vous devez décomposer certaines instructions qui sont d'autres instructions jointes par AND. Décomposer jusqu'à ce que chaque instruction se compose d'une instruction uniquement sur les colonnes clés ANDed avec des instructions de cette forme :
[my_column]=my_function([key_k_column_1],[key_k_column_2],...)
où key_k_column_1,... sont des colonnes de la même clé key_n.
(Un tel tableau est "en cinquième forme normale" et le sujet est "normalisation".)