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 114 115 116
|
CREATE TABLE Ouvrage(
OuvrageId SERIAL,
OuvrageTitre VARCHAR(100) NOT NULL,
PRIMARY KEY(OuvrageId)
);
CREATE TABLE Editeur(
EditeurId SERIAL,
EditeurNom VARCHAR(100) ,
PRIMARY KEY(EditeurId)
);
CREATE TABLE EditionType(
EditionTypeId SERIAL,
EditionTypeLibelle VARCHAR(100) ,
PRIMARY KEY(EditionTypeId)
);
CREATE TABLE Format(
FormatId SERIAL,
FormatLibelle VARCHAR(100) ,
PRIMARY KEY(FormatId)
);
CREATE TABLE Contributeur(
ContributeurId SERIAL,
ContributeurNom VARCHAR(100) ,
PRIMARY KEY(ContributeurId)
);
CREATE TABLE ContributionType(
ContributionTypeId SERIAL,
ContributionTypeLibelle VARCHAR(100) ,
PRIMARY KEY(ContributionTypeId)
);
CREATE TABLE Edition(
OuvrageId INTEGER,
EditionNumero SERIAL,
AnneParution DATE,
EditeurId INTEGER NOT NULL,
PRIMARY KEY(OuvrageId, EditionNumero),
FOREIGN KEY(OuvrageId) REFERENCES Ouvrage(OuvrageId),
FOREIGN KEY(EditeurId) REFERENCES Editeur(EditeurId)
);
CREATE TABLE EditionNonPossedee(
Id_EditionNonPossedee SERIAL,
OuvrageId INTEGER NOT NULL,
EditionNumero INTEGER NOT NULL,
PRIMARY KEY(Id_EditionNonPossedee),
UNIQUE(EditionNumero),
FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero)
);
CREATE TABLE EditionPossedee(
Id_EditionPossedee SERIAL,
ISBN13 VARCHAR(13) ,
EditionDateAchat DATE,
FormatId INTEGER NOT NULL,
OuvrageId INTEGER NOT NULL,
EditionNumero INTEGER NOT NULL,
PRIMARY KEY(Id_EditionPossedee),
UNIQUE(EditionNumero),
FOREIGN KEY(FormatId) REFERENCES Format(FormatId),
FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero)
);
CREATE TABLE EdiEnfantFrancais(
Id_EdiEnfantFrancais SERIAL,
Id_EditionPossedee_SourceGrandFormatFrançais INTEGER NOT NULL,
Id_EditionPossedee_EnfantDeParentFrançais INTEGER NOT NULL,
PRIMARY KEY(Id_EdiEnfantFrancais),
UNIQUE(Id_EditionPossedee_SourceGrandFormatFrançais),
UNIQUE(Id_EditionPossedee_EnfantDeParentFrançais),
FOREIGN KEY(Id_EditionPossedee_SourceGrandFormatFrançais) REFERENCES EditionPossedee(Id_EditionPossedee),
FOREIGN KEY(Id_EditionPossedee_EnfantDeParentFrançais) REFERENCES EditionPossedee(Id_EditionPossedee)
);
CREATE TABLE EdiEnfantDeParentEtranger(
Id_EdiEnfantDeParentEtranger SERIAL,
Id_EditionPossedee_EnfantDeParentPasEnFrançais INTEGER NOT NULL,
PRIMARY KEY(Id_EdiEnfantDeParentEtranger),
UNIQUE(Id_EditionPossedee_EnfantDeParentPasEnFrançais),
FOREIGN KEY(Id_EditionPossedee_EnfantDeParentPasEnFrançais) REFERENCES EditionPossedee(Id_EditionPossedee)
);
CREATE TABLE Referencer(
Id_EditionPossedee INTEGER,
Id_EditionNonPossedee INTEGER,
PRIMARY KEY(Id_EditionPossedee, Id_EditionNonPossedee),
FOREIGN KEY(Id_EditionPossedee) REFERENCES EditionPossedee(Id_EditionPossedee),
FOREIGN KEY(Id_EditionNonPossedee) REFERENCES EditionNonPossedee(Id_EditionNonPossedee)
);
CREATE TABLE Edi_Type(
Id_EditionPossedee INTEGER,
EditeurId INTEGER,
EditionTypeId INTEGER,
AnneeParution DATE,
PRIMARY KEY(Id_EditionPossedee, EditeurId, EditionTypeId),
FOREIGN KEY(Id_EditionPossedee) REFERENCES EditionPossedee(Id_EditionPossedee),
FOREIGN KEY(EditeurId) REFERENCES Editeur(EditeurId),
FOREIGN KEY(EditionTypeId) REFERENCES EditionType(EditionTypeId)
);
CREATE TABLE Edi_Con(
Id_EditionPossedee INTEGER,
ContributeurId INTEGER,
ContributionTypeId INTEGER,
PRIMARY KEY(Id_EditionPossedee, ContributeurId, ContributionTypeId),
FOREIGN KEY(Id_EditionPossedee) REFERENCES EditionPossedee(Id_EditionPossedee),
FOREIGN KEY(ContributeurId) REFERENCES Contributeur(ContributeurId),
FOREIGN KEY(ContributionTypeId) REFERENCES ContributionType(ContributionTypeId)
); |
Partager