Bonjour,
Je souhaite ajouter des tables à ma base pour faire des statistiques sur le nombre d'objets déduits ou stockés par année/mois/jour et par catégorie et sous-catégorie.
J'ai des catégories d'objets, qui peuvent posséder une sous-catégorie. Les sous-catégorie ne peuvent appartenir qu'à une catégorie.
ex:
- catégorie : outils
-> sous-catégorie : jardinage
-> sous-catégorie : maçonnerie
- catégorie : visserie (pas de sous catégorie).
ex de comptage réalisé :
40000 outils stocké et 100 détruits l'année dernière.
Sachant que je ne souhaite pas utiliser d'héritage, voici un MCD qui répond au besoin :
Le code DDL qui permet de créer les tables :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 CREATE TABLE CATEGORIE ( id int, libelle VARCHAR(50) NOT NULL, CONSTRAINT CATEGORIE_PK PRIMARY KEY(id) ); CREATE TABLE SOUS_CATEGORIE ( id INT, idCategorie INT NOT NULL, libelle VARCHAR(50) NOT NULL, CONSTRAINT SOUS_CATEGORIE_PK PRIMARY KEY(id), CONSTRAINT SOUS_CATEGORIE_CATEGORIE_FK FOREIGN KEY(idCategorie) REFERENCES CATEGORIE(id) ); CREATE TABLE COMPTAGE ( id INT, idCategorie, idSousCategorie, dateComptage DATE NOT NULL, nbDestructions INT NOT NULL, nbStockages INT NOT NULL, CONSTRAINT COMPTAGE_PK PRIMARY KEY(id), CONSTRAINT COMPTAGE_CATEGORIE_FK FOREIGN KEY(idCategorie) REFERENCES CATEGORIE(id), CONSTRAINT COMPTAGE_SOUS_CATEGORIE_FK FOREIGN KEY(idSousCategorie) REFERENCES SOUS_CATEGORIE(id) );
Ma problématique est : pour faire les insertions dans la table COMPTAGE en respectant le modèle et notamment la contrainte d'exclusion, comment dois-je procéder ?
Par exemple, avec ces entrées en tables :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INSERT INTO CATEGORIE VALUES (1, 'outillage'); INSERT INTO CATEGORIE VALUES (2, 'visserie'); INSERT INTO SOUS_CATEGORIE VALUES (1, 1, 'jardinage'); INSERT INTO SOUS_CATEGORIE VALUES (2, 1, 'maconnerie');
Est-ce que je peux faire les insertions en mettant à null la clés étrangères idSousCategorie quand il n'y a pas de sous catégorie et renseigner idCategorie et idSousCategorie quand la sous catégorie existe ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO COMPTAGE VALUES (1, 1, 1, '20200612 01:23:09 PM', 10, 100); INSERT INTO COMPTAGE VALUES (2, 1, 2, '20200612 01:30:00 PM', 0, 50); INSERT INTO COMPTAGE VALUES (3, 2, null, '20200612 01:40:00 PM', 1000, 10000);
Ou est-ce que je dois faire les insertions en mettant à null la clé étrangère idSousCategorie quand la sous catégorie n'existe pas et mettre à null idCategorie quand la sous catégorie existe ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO COMPTAGE VALUES (1, null, 1, '20200612 01:23:09 PM', 10, 100); INSERT INTO COMPTAGE VALUES (2, null, 2, '20200612 01:30:00 PM', 0, 50); INSERT INTO COMPTAGE VALUES (3, 2, null, '20200612 01:40:00 PM', 1000, 10000);
Merci d'avance pour votre aide et à bientôt.
Partager