CREATE TABLE MARQUE
(
marqueId INT,
marqueNom VARCHAR(48) NOT NULL,
CONSTRAINT MARQUE_PK PRIMARY KEY(marqueId)
);
CREATE TABLE MODELE
(
marqueId INT,
modeleId INT,
modeleNom VARCHAR(48) NOT NULL,
CONSTRAINT MODELE_PK PRIMARY KEY(marqueId, modeleId),
CONSTRAINT MODELE_MARQUE_FK FOREIGN KEY(marqueId)
REFERENCES MARQUE(marqueId),
------------- CONSTRAINT MODELE_UK UNIQUE(marqueId, modeleNom),
);
CREATE TABLE ANNONCE
(
annonceId INT,
marqueId INT,
modeleId INT NOT NULL,
description VARCHAR(48) NOT NULL,
CONSTRAINT ANNONCE_PK PRIMARY KEY(annonceId),
CONSTRAINT ANNONCE_MODELE_FK FOREIGN KEY(marqueId, modeleId)
REFERENCES MODELE(marqueId, modeleId)
);
INSERT INTO MARQUE (marqueId, marqueNom)
VALUES
(1, 'Marque 1')
, (2, 'Marque 2')
;
SELECT * FROM MARQUE ;
INSERT INTO MODELE (marqueId, modeleId, modeleNom)
VALUES
(1, 1, 'M1')
, (1, 2, 'M2')
, (1, 3, 'M3')
--------- , (2, 1, 'M1') -- Ok, deux marques peuvent avoir des modèles ayant même nom
, (2, 1, 'M4')
;
SELECT * FROM MODELE ;
INSERT INTO ANNONCE (annonceId, marqueId, modeleId, description)
VALUES
(1, 1, 1, 'occasion à saisir')
;
SELECT * FROM ANNONCE
;
=>