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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
CREATE TABLE Constructeur(
Id_Constructeur INT AUTO_INCREMENT,
libelle VARCHAR(50) NOT NULL,
CONSTRAINT Constructeur_PK PRIMARY KEY(Id_Constructeur)
)ENGINE=InnoDB;
#-------------------------------------------------------------------------
# La table qui pose problème.
#-------------------------------------------------------------------------
CREATE TABLE Modele(
Id_Modele INT,
Id_Constructeur INT,
libelle VARCHAR(50) NOT NULL,
CONSTRAINT Modele_PK PRIMARY KEY(Id_Constructeur, Id_Modele),
CONSTRAINT MODELE_AK UNIQUE (Id_Constructeur,Id_Modele),
CONSTRAINT Modele_Constructeur_FK FOREIGN KEY(Id_Constructeur) REFERENCES Constructeur(Id_Constructeur),
CONSTRAINT MODELE_UK UNIQUE (Id_Constructeur,libelle)
)ENGINE=InnoDB;
#-------------------------------------------------------------------------
# Les autres tables.
#-------------------------------------------------------------------------
CREATE TABLE Caracteristique(
Id_Caracteristique INT AUTO_INCREMENT,
libelle VARCHAR(50) NOT NULL,
CONSTRAINT Caracteristique_PK PRIMARY KEY(Id_Caracteristique)
)ENGINE=InnoDB;
CREATE TABLE Caracteristique_value(
Id_Caracteristique_value INT AUTO_INCREMENT,
valeur VARCHAR(50),
Id_Constructeur INT NOT NULL,
Id_Modele INT NOT NULL,
Id_Caracteristique INT NOT NULL,
CONSTRAINT Caracteristique_value_PK PRIMARY KEY(Id_Caracteristique_value),
CONSTRAINT Caracteristique_value_Modele_FK FOREIGN KEY(Id_Constructeur, Id_Modele) REFERENCES Modele(Id_Constructeur, Id_Modele),
CONSTRAINT Caracteristique_value_Caracteristique_FK FOREIGN KEY(Id_Caracteristique) REFERENCES Caracteristique(Id_Caracteristique)
)ENGINE=InnoDB;
CREATE TABLE Utilisateur(
Id_user INT AUTO_INCREMENT,
estAdmin TINYINT(1),
email VARCHAR(50),
motDePasse VARCHAR(50),
CONSTRAINT Utilisateur_PK PRIMARY KEY(Id_user)
)ENGINE=InnoDB;
CREATE TABLE Adresse(
Id_Adresse INT AUTO_INCREMENT,
adresse VARCHAR(50),
complement VARCHAR(50),
codePostal VARCHAR(5),
commune VARCHAR(45),
pays VARCHAR(50),
CONSTRAINT Adresse_PK PRIMARY KEY(Id_Adresse)
)ENGINE=InnoDB;
CREATE TABLE Professionnel(
Id_Professionnel INT AUTO_INCREMENT,
estHomme TINYINT(1),
societe VARCHAR(50),
nom VARCHAR(50),
prenom VARCHAR(50),
siret VARCHAR(14),
telephone VARCHAR(10),
dateInscription DATE,
Id_user INT NOT NULL,
CONSTRAINT Professionnel_PK PRIMARY KEY(Id_Professionnel),
CONSTRAINT Professionnel_Utilisateur_FK FOREIGN KEY(Id_user) REFERENCES Utilisateur(Id_user)
)ENGINE=InnoDB;
CREATE TABLE Garage(
Id_Garage INT AUTO_INCREMENT,
nom VARCHAR(50),
email VARCHAR(50),
telephone VARCHAR(10),
Id_Adresse INT NOT NULL,
Id_Professionnel INT NOT NULL,
CONSTRAINT Garage_PK PRIMARY KEY(Id_Garage),
CONSTRAINT Garage_Adresse_FK FOREIGN KEY(Id_Adresse) REFERENCES Adresse(Id_Adresse),
CONSTRAINT Garage_Professionnel_FK FOREIGN KEY(Id_Professionnel) REFERENCES Professionnel(Id_Professionnel)
)ENGINE=InnoDB;
CREATE TABLE Annonce(
Id_Annonce INT AUTO_INCREMENT,
annee DATE,
kilometrage INT,
prix INT,
description VARCHAR(200),
dateAnnonce DATE,
Immatriculation VARCHAR(50),
garantie INT,
reference VARCHAR(50),
Id_Constructeur INT NOT NULL,
Id_Modele INT NOT NULL,
Id_Garage INT NOT NULL,
CONSTRAINT Annonce_PK PRIMARY KEY(Id_Annonce),
CONSTRAINT Annonce_Modele_FK FOREIGN KEY(Id_Constructeur, Id_Modele) REFERENCES Modele(Id_Constructeur, Id_Modele),
CONSTRAINT Annonce_Garage_FK FOREIGN KEY(Id_Garage) REFERENCES Garage(Id_Garage)
)ENGINE=InnoDB;
CREATE TABLE Photo(
Id_Photo INT AUTO_INCREMENT,
emplacement VARCHAR(255),
estPrincipal TINYINT(1),
Id_Annonce INT NOT NULL,
CONSTRAINT Photo_PK PRIMARY KEY(Id_Photo),
CONSTRAINT Photo_Annonce_FK FOREIGN KEY(Id_Annonce) REFERENCES Annonce(Id_Annonce)
)ENGINE=InnoDB; |