Envoyé par
SQLPro
1) chaque table doit être en situation de ne pas avoir de NULL dans toutes ses colonnes, donc les information des tables doivent être propres à l'entité que la table concrétise
2) la modification d'une information, ne doit pas entraîner la modification de plus d'une ligne dans une table
3) les colonnes des tables ne doivent contenir que des informations atomiques (non sécables)
Par extension de 3 : des colonnes similaires pouvant être regroupées au sein d'un tableau ne doivent jamais figurer directement dans la table.
Sur 1 : un téléphone n'a rien à faire dans une table client ou personne, car il existe des personnes n'ayant pas de téléphone ! (les attributs doivent être propres à l'entité)
Sur 2 : une civilité ne doit pas figurer en tant que colonne dans une table de personne; Ce doit être une table de référence. En effet, que se passera t-il si vous devez passer de Melle à Mme ? (une seule information modifiée => impacte des centaines de lignes... inacceptable !)
Sur 3 : un numéro de sécurité social doit être découpé en plusieurs parties car il n'est pas atomique (contient des info de sexe, date de naissance et lieu de naissance).
Sur 3 extension : TEL1, TEL2, FAX, GSM dans la même table est idiot, car nul n'est censé avoir impérativement (pas de NULL) 2 téléphone fixe un fax et un mobile ! Dans ce cas une table secondaire à double entrée, sera mille fois mieux (Type Tel et n°).
Partager