48
Chapitre 4. Optimisation des objets et de la structure de la base de données
Dans sa représentation physique dans SQL Server, chaque ligne doit contenir
une valeur, elle ne pourra donc pas accepter de marqueur NULL. Elle sera le
plus souvent celle qui sera choisie comme clé étrangère, dans les associations.
• Candidate – La clé candidate pourrait avoir été la clé primaire. Elle constitue
une autre façon de garantir un tuple unique. Elle n’a pas été choisie comme clé
primaire soit par malchance pour elle, soit pour des raisons bassement physiques (sa taille par exemple, qui influe sur la taille des clés étrangères et potentiellement de l’index clustered – nous verrons ce concept dans le chapitre 6).
• Naturelle – Par opposition à une clé technique, une clé naturelle est créée sur
un attribut signifiant, qui existe dans le monde réel modélisé par le schéma.
Par exemple, un numéro ISBN, un EAN13, un numéro national d’identité, un
numéro de téléphone, etc. Le danger de la clé naturelle est son manque potentiel de stabilité, le fait que son format peut changer à la suite d’une décision
que vous ne maîtrisez pas, et la possibilité qu’elle soit réattribuée à travers le
temps. L’avantage est que la clé elle-même est déjà signifiante.
• Technique (surrogate) – Une clé technique est une clé en général numérique,
créée par défaut d’existence d’une clé naturelle, pour unifier les tuples. Elle est
souvent implémentée physiquement avec un procédé de calcul d’auto-incrément, comme un séquenceur ou la propriété IDENTITY en SQL Server. Elle a
souvent tendance à devenir « naturelle » pour les utilisateurs des données, qui
parlent alors du client 4567 ou de la facture 3453. Si vous souhaitez vous
prévenir de cette « dérive », il est bon de la cacher autant que possible dans
les interfaces utilisateur.
• Intelligente – Une clé intelligente est une clé qui contient plusieurs informations. Elle permet donc d’extraire des contenus utiles. Par exemple, un
numéro ISBN contient le numéro de zone linguistique, et le numéro d’éditeur.
Le Numéro national d’identité (numéro de sécurité sociale) donne le sexe
ainsi que l’année, le mois, le département et la commune de naissance. Elle
peut permettre de gagner du temps dans les recherches, cette logique pouvant
être extraite de la clé par programmation, sans recherche dans des tables de
référence (qu’il faut créer pour contrôle, mais qu’il ne sera pas toujours utile de
requêter dans les extractions). Une clé intelligente peut être générée par le
système avec des informations utiles. Par exemple, une clé destinée à unifier
un système réparti peut contenir un identifiant de base, de serveur ou de data
center.
• Étrangère – Une clé étrangère est une clé déplacée dans une table fille,
correspondant à une clé de la table mère.
Modélisation des relations
Les relations sont exprimées par des cardinalités, c’est-à-dire le nombre possible de
tuples de chaque côté de la relation. On en distingue plusieurs types :
• Cardinalité identifiante – La clé primaire d’une table est migrée dans la clé
primaire d’une autre table : relation de un-à-un.
Chapitre 4. Optimisation des objets et de la structure de la base de données
Dans sa représentation physique dans SQL Server, chaque ligne doit contenir
une valeur, elle ne pourra donc pas accepter de marqueur NULL. Elle sera le
plus souvent celle qui sera choisie comme clé étrangère, dans les associations.
• Candidate – La clé candidate pourrait avoir été la clé primaire. Elle constitue
une autre façon de garantir un tuple unique. Elle n’a pas été choisie comme clé
primaire soit par malchance pour elle, soit pour des raisons bassement physiques (sa taille par exemple, qui influe sur la taille des clés étrangères et potentiellement de l’index clustered – nous verrons ce concept dans le chapitre 6).
• Naturelle – Par opposition à une clé technique, une clé naturelle est créée sur
un attribut signifiant, qui existe dans le monde réel modélisé par le schéma.
Par exemple, un numéro ISBN, un EAN13, un numéro national d’identité, un
numéro de téléphone, etc. Le danger de la clé naturelle est son manque potentiel de stabilité, le fait que son format peut changer à la suite d’une décision
que vous ne maîtrisez pas, et la possibilité qu’elle soit réattribuée à travers le
temps. L’avantage est que la clé elle-même est déjà signifiante.
• Technique (surrogate) – Une clé technique est une clé en général numérique,
créée par défaut d’existence d’une clé naturelle, pour unifier les tuples. Elle est
souvent implémentée physiquement avec un procédé de calcul d’auto-incrément, comme un séquenceur ou la propriété IDENTITY en SQL Server. Elle a
souvent tendance à devenir « naturelle » pour les utilisateurs des données, qui
parlent alors du client 4567 ou de la facture 3453. Si vous souhaitez vous
prévenir de cette « dérive », il est bon de la cacher autant que possible dans
les interfaces utilisateur.
• Intelligente – Une clé intelligente est une clé qui contient plusieurs informations. Elle permet donc d’extraire des contenus utiles. Par exemple, un
numéro ISBN contient le numéro de zone linguistique, et le numéro d’éditeur.
Le Numéro national d’identité (numéro de sécurité sociale) donne le sexe
ainsi que l’année, le mois, le département et la commune de naissance. Elle
peut permettre de gagner du temps dans les recherches, cette logique pouvant
être extraite de la clé par programmation, sans recherche dans des tables de
référence (qu’il faut créer pour contrôle, mais qu’il ne sera pas toujours utile de
requêter dans les extractions). Une clé intelligente peut être générée par le
système avec des informations utiles. Par exemple, une clé destinée à unifier
un système réparti peut contenir un identifiant de base, de serveur ou de data
center.
• Étrangère – Une clé étrangère est une clé déplacée dans une table fille,
correspondant à une clé de la table mère.
Modélisation des relations
Les relations sont exprimées par des cardinalités, c’est-à-dire le nombre possible de
tuples de chaque côté de la relation. On en distingue plusieurs types :
• Cardinalité identifiante – La clé primaire d’une table est migrée dans la clé
primaire d’une autre table : relation de un-à-un.
