Skip to content
Snippets Groups Projects
Commit 73cc907c authored by Olivier Hugo's avatar Olivier Hugo
Browse files

Edited .ddl for better types and fields

parent 09d08ab5
Branches
No related tags found
No related merge requests found
......@@ -23,109 +23,107 @@ create database MAIN;
-- _____________
create table a (
ID_PUB numeric(10) not null,
mot char(1) not null,
ID_PUB bigint not null,
mot varchar(100) not null,
constraint ID_a_ID primary key (ID_PUB, mot));
create table ACHAT (
ID_EXE numeric(10) not null,
date char(1) not null,
prix char(1) not null,
lieu char(1) not null,
code char(1) not null,
ID_EXE bigint not null,
date timestamp not null,
prix numeric(10,2) not null,
lieu varchar(300) not null,
code char(3) not null,
constraint FKprovient_d_un_ID primary key (ID_EXE));
create table Auteur (
nom char(1) not null,
nom varchar(300) not null,
constraint ID_Auteur_ID primary key (nom));
create table autorise_l_acces (
nom char(1) not null,
email -- Compound attribute -- not null,
constraint ID_autorise_l_acces_ID primary key (email -- Compound attribute --, nom));
nom varchar(300) not null,
email varchar(300) not null,
constraint ID_autorise_l_acces_ID primary key (email, nom));
create table DEVISE (
code char(1) not null,
taux char(1) not null,
symbole char(1) not null,
code char(3) not null,
taux numeric(30,10) not null,
symbole char(3) not null,
constraint ID_DEVISE_ID primary key (code));
create table EXEMPLAIRE (
ID_EXE -- Sequence attribute not implemented -- not null,
statut char(1) not null,
nom char(1) not null,
email -- Compound attribute --,
ID_PUB numeric(10) not null,
ID_EXE bigint not null,
statut smallint not null,
nom varchar(300) not null,
email varchar(300),
ID_PUB bigint not null,
constraint ID_ID primary key (ID_EXE));
create table interesse_par (
mot char(1) not null,
email -- Compound attribute -- not null,
constraint ID_interesse_par_ID primary key (mot, email -- Compound attribute --));
mot varchar(100) not null,
email varchar(300) not null,
constraint ID_interesse_par_ID primary key (mot, email));
create table LABORATOIRE (
nom char(1) not null,
nom varchar(300) not null,
constraint ID_LABORATOIRE_ID primary key (nom));
create table LIVRE (
ISBN char(13) not null,
editeur char(1) not null,
edition char(1) not null,
annee_de_publication numeric(4) not null,
categorie1 char(1),
categorie2 char(1),
categorie3 char(1),
categorie4 char(1),
editeur varchar(300) not null,
edition varchar(100) not null,
annee_de_publication smallint not null,
categorie1 varchar(100),
categorie2 varchar(100),
categorie3 varchar(100),
categorie4 varchar(100),
constraint ID_LIVRE_ID primary key (ISBN));
create table MOT_CLE (
mot char(1) not null,
mot varchar(100) not null,
constraint ID_MOT_CLE_ID primary key (mot));
create table PERIODIQUE (
numero char(1) not null,
editeur char(1) not null,
edition char(1) not null,
annee_de_publication char(1) not null,
constraint ID_PERIODIQUE_ID primary key (numero, editeur, edition, annee_de_publication));
ID_PER bigint not null,
numero char(5) not null,
editeur varchar(300) not null,
edition varchar(100) not null,
annee_de_publication smallint not null,
constraint ID_PERIODIQUE_ID primary key (ID_PER));
create table propose (
ID_PUB numeric(10) not null,
date char(1) not null,
email -- Compound attribute -- not null,
ID_PUB bigint not null,
date datetime not null,
email varchar(300),
constraint FKpro_PUB_ID primary key (ID_PUB));
create table PUBLICATION (
ID_PUB -- Sequence attribute not implemented -- not null,
numero char(1),
editeur char(1),
edition char(1),
annee_de_publication char(1),
id char(1),
ID_PUB bigint not null,
ID_PER bigint,
ID_RAP bigint,
ISBN char(13),
type char(1) not null,
type smallint not null,
constraint ID_ID primary key (ID_PUB),
constraint FKou_est_un_ID unique (numero, editeur, edition, annee_de_publication),
constraint FKou_encore_est_un_ID unique (id),
constraint FKou_est_un_ID unique (ID_PER),
constraint FKou_encore_est_un_ID unique (ID_RAP),
constraint FKest_un_ID unique (ISBN));
create table RAPPORT (
titre char(1) not null,
id char(1) not null,
titre varchar(300) not null,
ID_RAP bigint not null,
annee_de_publication char(1) not null,
constraint ID_RAPPORT_ID primary key (id));
constraint ID_RAPPORT_ID primary key (ID_RAP));
create table redige_par (
nom char(1) not null,
id char(1) not null,
constraint ID_redige_par_ID primary key (id, nom));
nom varchar(300) not null,
ID_RAP bigint not null,
constraint ID_redige_par_ID primary key (ID_RAP, nom));
create table UTILISATEUR (
email -- Compound attribute -- not null,
constraint ID_UTILISATEUR_ID primary key (email -- Compound attribute --));
email varchar(300) not null,
constraint ID_UTILISATEUR_ID primary key (email));
create table ecrit_par (
nom char(1) not null,
nom varchar(300) not null,
ISBN char(13) not null,
constraint ID_ecrit_par_ID primary key (nom, ISBN));
......@@ -150,7 +148,7 @@ alter table ACHAT add constraint FKprovient_d_un_FK
references EXEMPLAIRE;
alter table autorise_l_acces add constraint FKaut_UTI
foreign key (email -- Compound attribute --)
foreign key (email)
references UTILISATEUR;
alter table autorise_l_acces add constraint FKaut_LAB_FK
......@@ -162,7 +160,7 @@ alter table EXEMPLAIRE add constraint FKpossede_FK
references LABORATOIRE;
alter table EXEMPLAIRE add constraint FKemprunte_FK
foreign key (email -- Compound attribute --)
foreign key (email)
references UTILISATEUR;
alter table EXEMPLAIRE add constraint FKcomporte_FK
......@@ -170,7 +168,7 @@ alter table EXEMPLAIRE add constraint FKcomporte_FK
references PUBLICATION;
alter table interesse_par add constraint FKint_UTI_FK
foreign key (email -- Compound attribute --)
foreign key (email)
references UTILISATEUR;
alter table interesse_par add constraint FKint_MOT
......@@ -187,10 +185,10 @@ alter table LIVRE add constraint ID_LIVRE_CHK
alter table PERIODIQUE add constraint ID_PERIODIQUE_CHK
check(exists(select * from PUBLICATION
where PUBLICATION.numero = numero and PUBLICATION.editeur = editeur and PUBLICATION.edition = edition and PUBLICATION.annee_de_publication = annee_de_publication));
where PUBLICATION.ID_PER = ID_PER));
alter table propose add constraint FKpro_UTI_FK
foreign key (email -- Compound attribute --)
foreign key (email)
references UTILISATEUR;
alter table propose add constraint FKpro_PUB_FK
......@@ -198,15 +196,15 @@ alter table propose add constraint FKpro_PUB_FK
references PUBLICATION;
alter table PUBLICATION add constraint FKou_est_un_FK
foreign key (numero, editeur, edition, annee_de_publication)
foreign key (ID_PER)
references PERIODIQUE;
alter table PUBLICATION add constraint FKou_est_un_CHK
check((numero is not null and editeur is not null and edition is not null and annee_de_publication is not null)
or (numero is null and editeur is null and edition is null and annee_de_publication is null));
check((ID_PER not null)
or (ID_PER is null));
alter table PUBLICATION add constraint FKou_encore_est_un_FK
foreign key (id)
foreign key (ID_RAP)
references RAPPORT;
alter table PUBLICATION add constraint FKest_un_FK
......@@ -215,14 +213,14 @@ alter table PUBLICATION add constraint FKest_un_FK
alter table RAPPORT add constraint ID_RAPPORT_CHK
check(exists(select * from PUBLICATION
where PUBLICATION.id = id));
where PUBLICATION.ID_RAP = ID_RAP));
alter table RAPPORT add constraint ID_RAPPORT_CHK
check(exists(select * from redige_par
where redige_par.id = id));
where redige_par.ID_RAP = ID_RAP));
alter table redige_par add constraint FKred_RAP
foreign key (id)
foreign key (ID_RAP)
references RAPPORT;
alter table redige_par add constraint FKred_Aut_FK
......@@ -257,7 +255,7 @@ create unique index ID_Auteur_IND
on Auteur (nom);
create unique index ID_autorise_l_acces_IND
on autorise_l_acces (email -- Compound attribute --, nom);
on autorise_l_acces (email, nom);
create index FKaut_LAB_IND
on autorise_l_acces (nom);
......@@ -272,16 +270,16 @@ create index FKpossede_IND
on EXEMPLAIRE (nom);
create index FKemprunte_IND
on EXEMPLAIRE (email -- Compound attribute --);
on EXEMPLAIRE (email);
create index FKcomporte_IND
on EXEMPLAIRE (ID_PUB);
create unique index ID_interesse_par_IND
on interesse_par (mot, email -- Compound attribute --);
on interesse_par (mot, email);
create index FKint_UTI_IND
on interesse_par (email -- Compound attribute --);
on interesse_par (email);
create unique index ID_LABORATOIRE_IND
on LABORATOIRE (nom);
......@@ -293,10 +291,10 @@ create unique index ID_MOT_CLE_IND
on MOT_CLE (mot);
create unique index ID_PERIODIQUE_IND
on PERIODIQUE (numero, editeur, edition, annee_de_publication);
on PERIODIQUE (ID_PER);
create index FKpro_UTI_IND
on propose (email -- Compound attribute --);
on propose (email);
create unique index FKpro_PUB_IND
on propose (ID_PUB);
......@@ -305,16 +303,16 @@ create unique index ID_IND
on PUBLICATION (ID_PUB);
create unique index FKou_est_un_IND
on PUBLICATION (numero, editeur, edition, annee_de_publication);
on PUBLICATION (ID_PER);
create unique index FKou_encore_est_un_IND
on PUBLICATION (id);
on PUBLICATION (ID_RAP);
create unique index FKest_un_IND
on PUBLICATION (ISBN);
create unique index ID_RAPPORT_IND
on RAPPORT (id);
on RAPPORT (ID_RAP);
create unique index ID_redige_par_IND
on redige_par (id, nom);
......@@ -323,7 +321,7 @@ create index FKred_Aut_IND
on redige_par (nom);
create unique index ID_UTILISATEUR_IND
on UTILISATEUR (email -- Compound attribute --);
on UTILISATEUR (email);
create unique index ID_ecrit_par_IND
on ecrit_par (nom, ISBN);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment