CREATE TABLE Personne (
N°SS CHAR(13) PRIMARY KEY,
Nom VARCHAR(25) NOT NULL,
Prenom VARCHAR(25) NOT NULL,
Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65),
Mariage CHAR(13) REFERENCES Personne(N°SS),
Codepostal INTEGER(5),
Pays VARCHAR(50),
UNIQUE (Nom, Prenom),
FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)
);
CREATE TABLE Adresse (
CP INTEGER(5) NOT NULL,
Pays VARCHAR(50) NOT NULL,
Initiale CHAR(1) CHECK (Initiale = LEFT(Pays, 1)),
PRIMARY KEY (CP, Pays)
);
CREATE TABLE Personne (
N°SS CHAR(13) ,
Nom VARCHAR(25) NOT NULL,
Prenom VARCHAR(25) NOT NULL,
Age INTEGER(3) ,
Mariage CHAR(13),
Codepostal INTEGER(5),
Pays VARCHAR(50),
PRIMARY KEY (N°SS),
UNIQUE (Nom, Prenom),
CHECK (Age BETWEEN 18 AND 65),
FOREIGN KEY (Mariage) REFERENCES Personne(N°SS),
FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)
);
CREATE TABLE Adresse (
CP INTEGER(5) NOT NULL,
Pays VARCHAR(50) NOT NULL,
Initiale CHAR(1),
PRIMARY KEY (CP, Pays),
CHECK (Initiale = LEFT(Pays, 1))
);
Ce schéma est strictement le même que le précédent, simplement les contraintes ont toutes été réécrites comme des contraintes de table.