
Envoyé par
CinePhil
Ceci ne me dispense pas de commencer toujours par un MCD Merise qui traduit schématiquement les phrases des contraintes exprimées sans se préoccuper encore des clés étrangères, des types et autres caractéristiques propres aux SGBD.
La représentation d’un MCD représente évidemment cette étape en amont qui est essentielle dans la réalisation d’un projet. Le MLD n’en est que la traduction au niveau de la base de données.
Ainsi, les clés étrangères de la base de données liant les tables d’une base de données relationnelle ne sont jamais que la traduction mécanique des liens statiques (anatomiques comme disait Codd) qui unissent les entités-types du MCD. Mais cela ne dispense pas de réfléchir en amont au métabolisme des entités-types : comment réagissent les entités liées, recevant les stimuli d’une entité que l’on cherche à supprimer ? Il est dommage d’attendre de coder un RESTRICT ou un CASCADE pour s’en préoccuper.
Quant aux types (ou domaines, dans le langage de Codd), il est bon de s’y intéresser au plus tôt, car leur dimension sémantique est fondamentale et il ne faut pas attendre d’être au niveau logique pour s’y intéresser : une date de facture et la date de naissance d’un employé sont-elles comparables ? Certes, d’un point de vue basique, on peut dire que leur type ancêtre est le type DATE, mais la réflexion doit-elle s’arrêter là ? L’identifiant d’un produit et l’identifiant d’un client ont peut-être pour ancêtre commun le type INTEGER, mais sont-ils comparables ? Peut-on leur appliquer les opérations arithmétiques qui valent pour les entiers ? Typer une donnée permet de pénétrer plus en avant dans la signification de ce que l’on manipule.
J’aime bien ce qu’écrivait Codd en 1990, au sujet des types, qu’il appelait domaines (cf. The Relational Model for Database Management: Version 2, page 45) :
Domains are the glue that holds a relational database together.
Partager