DB-MAIN - Le MCD, création d’une entité-type
par
, 27/03/2016 à 20h47 (9066 Affichages)
___________________________________________________________________________________________________
(1) Remarque préliminaire
Dans un billet précédent, on a traité de la création de la structure d’accueil pour le MCD CLIENTS. La situation est la suivante :
![]()
Il s’agit maintenant d’accéder à l’espace de travail permettant de créer les objets du MCD (entités-types et associations). Dans ce billet, on traite de la création des entités-types. Pour les associations, voir le billet ad-hoc.
(2) Création d’une entité-type
Pour créer une entité-type, on commence par cliquer sur le nom du schéma « Clients_MCD » qu’on a précédemment créé, schéma actuellement vide :
![]()
On a alors accès à l’espace de travail permettant de créer une entité-type. On clique sur l’icône « Entité-type », ce qui provoque l’affichage d’un curseur ad-hoc, que l’on déplace là où l’on veut placer l’entité-type :
![]()
Suite à un clic gauche de la souris (ou clic droit du reste !), on a droit à une entité-type nommée ENTITY :
![]()
Caveat : Le curseur est toujours là, de sorte qu’on puisse continuer à créer des entités-types à satiété, mais au bout d’un moment, ça suffit ! On se demande comment arrêter cela (alors qu’avec tel autre AGL il suffit d’un clic droit à la souris), au point d’en être passablement agacé : on est dans la situation du capitaine Haddock aux prises avec un morceau de scotch en forme d’entité-type :
![]()
Afin de se sortir de cette situation, il faut cliquer à nouveau sur l’cône Entité-type pour l’« éteindre »
![]()
Ou plus simplement, comme le rappelle nono02P, on ira plus vite à utiliser la touche « échap » du clavier...
N.B. On peut supprimer une entité-type dont on veut se débarrasser par un clic droit sur celle-ci (ENTITY_1 ci-dessous) et faire le choix « Delete » :
![]()
On peut maintenant attribuer le nom qu’on veut à l’entité-type, par exemple CLIENT à partir de la boîte de propriétés (Property box), en remplaçant dans cette boîte "ENTITY" par "CLIENT" :
![]()
Après avoir fait « Save changes », on constate qu’effectivement "CLIENT" a bien remplacé "ENTITY" :
![]()
(3) Ajout des attributs de l’entité-type CLIENT
Pour lui ajouter des attributs, on sélectionne l’entité-type CLIENT puis on clique sur l’icône « First att » (First attribute), qui est présente dans le ruban, mais aussi en bas de la boîte « Property box » (à l’usage, on utilise plutôt cette 2e possibilité) :
![]()
Le fait d’avoir cliqué sur l’une ou l’autre des icônes « First att », en résulte la création d’un 1er attribut, nommé « New attribute » :
![]()
Par le biais de la boîte de propriétés, on renomme cet attribut à son gré (propriété name), et au besoin on en change le type.
Pour changer le nom de l’attribut :
![]()
(4) Type d’un attribut
La collection des types est plutôt minimale (absence de INT, SMALLINT, TIMESTAMP, TIME...), mais bon...
![]()
En l’occurrence, comme le type INT n’est pas proposé, on retiendra par exemple NUMERIC(5). Les amateurs de clés SQL auto-incrémentées pourront préférer le type SEQUENCE, correctement généré par l’AGL, en fonction du SGBD qu’on aura choisi lors de la production du code SQL de création des tables. Eviter le type incongru INDEX.
Pour les attributs suivants, on passe par l’icône « Next att » :
![]()
Pour le nom d’un client, le type VARCHAR(32) est le plus souvent suffisant.
Encore un attribut :
![]()
On utilise l’icône « First attribut » uniquement pour le 1er attribut qu’on a défini. Pour les autres attributs on se sert exclusivement de l’icône « Next attribut ». En persistant (disons par mégarde) à utiliser l’icône « First attribut », on peut se retrouver dans la situation suivante (noter l’indentation des noms des attributs) :
![]()
Il en résulte la génération d’un script SQL pour le moins incomplet ! Dans lequel seul le dernier attribut a été pris en compte et qui plus est sert de clé primaire :
L’AGL permet de définir des attributs composés d’autres attributs, mais à quoi bon quand on est dans un contexte essentiellement merisien ? Balek ! Cuidado ! Achtung!CREATE TABLE CLIENT ( ClientIban VARCHAR(27) NOT NULL, CONSTRAINT CLIENT_PK PRIMARY KEY (ClientIban) );
(5) Ordre des attributs :
Pour changer l’ordre des attributs, par exemple faire passer ClientSiret devant ClientNom, utiliser les touches ALT et ↑ (alternativement, ALT et ↓ pour faire passer un attribut à la suite d’un autre).
![]()
(6) Définition d’un identifiant
Pour définir un identifiant, sélectionner l’attribut concerné, puis utiliser l’icône « ID ». Par exemple, si l’attribut ClientId doit donner lieu à l’identifiant de l’entité-type CLIENT :
![]()
Une fois qu’on a cliqué sr l’cône « ID », DB-MAIN génère l’identifiant voulu (et le qualifie de primaire) :
![]()
Si l’attribut ClientId est la source de l’identifiant, il en est en fait un composant et cet identifiant a néanmoins son propre nom, lequel ne deviendra pas comme on aurait pu le penser le nom de l’identifiant au niveau relationnel, puis SQL : dommage ! On peut changer le nom par défaut (disons CLIENT), par exemple à des fins de documentation, mais c’est tout. Ci-dessous, on a renommé l’identifiant en CLIENT_PK. Si l’on effectue directement la génération d’un script SQL, sans passer par la case MLD, la clé primaire aura effectivement comme nom CLIENT_PK, mais les clés étrangères n’étant pas générées, autant poubeller ce script. Tears.
![]()
(7) Identifiant alternatif
On peut définir un identifiant alternatif (avec DB-MAIN, le qualificatif est « secondaire »). Ainsi, le numéro de Siret (ClientSiret) est unique pour les entreprises clientes, on utilise là aussi l’icône « ID » :
![]()
Au passage, par référence à la norme relative la structure d’un numéro de Siret, on aura choisi le type DECIMAL(14) ou CHAR(14), chaque type ayant chacun ses avantages et ses inconvénients. Surveiller le type retenu par l’AGL pour SQL : ainsi, pour PostgreSQL DECIMAL(14) reste DECIMAL(14), mais pour MySQL, DECIMAL(14) est remplacé par BIGINT...
A noter que l’on peut définir plusieurs identifiants alternatifs pour une entité-type (tous caractérisés par le mickey « id’ » dans le cartouche des identifiants).
Exemple du IBAN (International Bank Account Number) :
![]()
Pour la suite des opérations, c'est-à-dire la création d’une association, se reporter au billet ad-hoc.
__________________________________________________________________________________