Gescom gère des clients dont on connaît le nom, l'adresse et la ville et auxquels elle a attribué un identifiant unique pour distinguer les homonymes.
Gescom gère les commandes des clients à l'aide des tables suivantes (extrait)
Niveau physique : tables (extrait) et SQL
Le niveau physique dépend du système utilisé. Il permet aussi de connaître le type de stockage (ici un SGBDr comme MariaDB ou Mysql).
Les clients
idClient |
nom |
adresse |
cp |
ville |
pays |
1 |
Anatole France |
Par ci, par là |
75000 |
Paris |
FRA |
15 |
Saida Sfarr |
Sur la Terre |
67000 |
Strasbourg |
FRA |
123 |
Faurecia Gérard |
15, rue de l'industrie |
67390 |
Marckolsheim |
FRA |
La valeur de l'identifiant idClient est unique pour chaque client. C'est la clé primaire.
Les commandes des clients
numero |
dateCde |
idClient |
statut |
2 |
2024-04-01 |
357 |
1 |
4 |
2024-04-02 |
15 |
1 |
357 |
2024-01-01 |
123 |
1 |
La colonne idClient contient des valeurs qui doivent exister dans la colonne idClient de la table des clients.
C'est grâce à cette relation de dépendance qu'on peut retrouver le client de chaque commande.
Les articles
codeArticle |
description |
prixUnHT |
poids |
type |
A1 |
Ancre |
45.00000 |
15.000 |
N |
A2 |
Manille |
2.50000 |
0.030 |
N |
A3 |
Sextant |
1250.00000 |
0.450 |
N |
A4 |
Bouée |
143.00000 |
1.300 |
N |
Chaque article possède un code unique (codeArticle). C'est l'identifiant pour chaque article.
Les articles contenus dans les commandes (association contenir)
numero |
codeArticle |
qté |
1 |
A1 |
5.00 |
1 |
A2 |
30.00 |
2 |
A2 |
25.00 |
4 |
A1 |
2.00 |
357 |
A1 |
1.00 |
357 |
A2 |
1.00 |
357 |
A3 |
1.00 |
357 |
A4 |
1.00 |
- Le couple (numéro,codeArticle) doit être unique pour chaque ligne car il représente l'identifiant de chaque ligne.
- Chaque champ du couple référence une valeur dans le champ correspondant des tables commande et article.
Requêtes de création des tables précédentes
La base de données est créé par des requêtes qui reprennent les tables et leurs champs.
[sql]
CREATE TABLE Client( idClient INT NOT NULL, nom VARCHAR (50), adresse TEXT, cp VARCHAR (10), ville VARCHAR (50), pays INT NOT NULL,
PRIMARY KEY (idClient)
);
CREATE TABLE Commande( numero INT NOT NULL, dateCde DATE NOT NULL, idClient INT NOT NULL,
PRIMARY KEY (numero),
FOREIGN KEY (idClient) REFERENCES Client(idClient)
);
CREATE TABLE Article( codeArticle VARCHAR (20) NOT NULL, description VARCHAR (50), prixUnHT DECIMAL (15,5), poids DECIMAL (9,2), type INT NOT NULL,
PRIMARY KEY (codeArticle)
);
CREATE TABLE contenir( numero INT NOT NULL, codeArticle VARCHAR (20) NOT NULL, qté DECIMAL (9,2),
PRIMARY KEY (numero, codeArticle),
FOREIGN KEY (numero) REFERENCES Commande(numero),
FOREIGN KEY (codeArticle) REFERENCES Article(codeArticle)
);
Les requêtes d'insertions des données ne sont pas écrites ici.
Niveau logique : on dessine les tables et les liens de clés étrangères (SLD)
Schéma relationnel des tables et requêtes sql précédentes
Le schéma relationnel reprend les tables et indique les clés primaires identifiant chaque ligne et les relation de dépendance des valeurs des clés étrangères.
Il fait partie du modèle logique des données (MLD)
[text]
client(idClient, nom, adresse, cp, ville, pays)
clé primaire : idClient
commande(numero, dateCde, idClient, statut)
clé primaire : numero
clé étrangère : l'attribut idClient est en dépendance de référence avec l'attribut idClient de la relation client.
article(codeArticle, description, prixUnHT, poids, type)
clé primaire : codeArticle
contenir(numero, codeArticle, qté)
clé primaire : numero, idClient ; le couple est la clé primaire
clé étrangère : numero référence numero dans commande.
clé étrangère : codeArticle référence codeArticle dans article.
Le schéma relationnel précédent est transformé en schéma logique de données. les relations deviennent des rectangles

Autres notions du modèle de données : forme normale, Boyce-Codd, algèbre relationnelle, privilèges CIMS.
A mettre en parallèle avec le modele organisationnel des traitements (MOT ou MOTa) et le diagramme événements/résultats décrivant les traitement et leur enchaînement ou les cas d'utilisation UML.
Niveau conceptuel : les relations deviennent des entités ou associations (SCD)

On dessine les entités à partir des relations dont la clé primaire n'est pas aussi une clé étrangère.
La clé primaire de la relation contenir ne contient pas de champ propre (qui n'est pas clé étrangère). Elle devient donc une association dans le SCD/MCD.
Les cardinalités représentent le nombre d'associations que peut avoir chaque ligne d'une entité avec une ou plusieurs autres lignes d'autres entités à travers une association.
Elles sont écrite sur les liens entre entités et asso.
Exemple : une commande n'a qu'un et un seul client (card = 1,1) ; un client peut avoir zéro à plusieurs commandes (card = 0,n).
Selon l'objet (entité ou association) à chaque bout des flèches du MLD, le lien portera une cardinalité différente.
debut et fin |
cardinalité résultante |
entité - association |
création d'un lien simple, porteur d'une cardinalité (0,n) ou (1,n) |
entités |
Création d'une association avec les cardinalités (1.1) côté origine de la flèche et (0.n) côté cible de la flèche. |
Les cardinalités qui commencent par (1,...) équivalent à : "au moins un à ...."
Les cardinalités qui commencent par (0,...) équivalent à : "un ou aucun à ...."

Les clés étrangères sont masquées dans le MCD. Elles sont déduites par la présence des associations