diff --git a/BE_SGBD_LIBRARY.ddl b/BE_SGBD_LIBRARY.ddl index a4c170ba0f0a8c1f5a99585618ce857a7ff1b476..7b2ed0fb66c0e662ffe9d12f49349e3f035c5d53 100644 --- a/BE_SGBD_LIBRARY.ddl +++ b/BE_SGBD_LIBRARY.ddl @@ -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);