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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
| CREATE TABLE directeur (
entreprise_id int4 NOT NULL,
employe_id int4 NOT NULL,
magasin_id int4 NOT NULL,
PRIMARY KEY (entreprise_id,
employe_id),
CONSTRAINT directeur_ak1
UNIQUE (entreprise_id, magasin_id));
CREATE TABLE employe_mag (
entreprise_id int4 NOT NULL,
employe_id int4 NOT NULL,
magasin_id int4 NOT NULL,
PRIMARY KEY (entreprise_id,
employe_id),
CONSTRAINT emp_mag_ak_1
UNIQUE (entreprise_id, employe_id, magasin_id));
CREATE TABLE responsable (
employe_id int4 NOT NULL,
PRIMARY KEY (employe_id));
CREATE TABLE employe (
entreprise_id int4 NOT NULL,
employe_id int4 NOT NULL UNIQUE,
PRIMARY KEY (entreprise_id,
employe_id));
CREATE TABLE metier (
metier_id SERIAL NOT NULL,
lib varchar(30) NOT NULL,
PRIMARY KEY (metier_id));
CREATE TABLE mra (
mra_id int4 NOT NULL,
metier_id int4 NOT NULL,
PRIMARY KEY (mra_id));
CREATE TABLE vendeur (
vendeur_id int4 NOT NULL,
PRIMARY KEY (vendeur_id));
CREATE TABLE magasin (
vendeur_id int4 NOT NULL,
magasin_id int4 NOT NULL UNIQUE,
siret varchar(14) NOT NULL,
logo varchar(255) NOT NULL,
PRIMARY KEY (vendeur_id,
magasin_id));
CREATE TABLE prefixes (
id SERIAL NOT NULL,
lib varchar(30) NOT NULL,
lib_court varchar(10) NOT NULL,
CONSTRAINT pk_prefixes
PRIMARY KEY (id));
CREATE TABLE statut (
statut_id SERIAL NOT NULL,
lib varchar(20) NOT NULL,
PRIMARY KEY (statut_id));
CREATE TABLE societe (
societe_id int4 NOT NULL,
statut_id int4 NOT NULL,
capital varchar(20) NOT NULL,
PRIMARY KEY (societe_id));
CREATE TABLE ent_immat (
ent_immat_id int4 NOT NULL,
tribunal_rcs varchar(50) NOT NULL UNIQUE,
siren varchar(9) NOT NULL UNIQUE,
tva_intra varchar(20) NOT NULL UNIQUE,
PRIMARY KEY (ent_immat_id));
CREATE TABLE entreprise (
entreprise_id int4 NOT NULL,
rs varchar(50) NOT NULL,
PRIMARY KEY (entreprise_id));
CREATE TABLE organisme (
organisme_id int4 NOT NULL,
name varchar(50) NOT NULL,
PRIMARY KEY (organisme_id));
CREATE TABLE membre (
membre_id int4 NOT NULL,
pseudo varchar(30) NOT NULL,
logo varchar(255) NOT NULL,
PRIMARY KEY (membre_id));
CREATE TABLE main_phone (
actor_id int4 NOT NULL UNIQUE,
phone_id int2 NOT NULL,
PRIMARY KEY (actor_id,
phone_id));
CREATE TABLE main_address (
actor_id int4 NOT NULL UNIQUE,
addresse_id int2 NOT NULL,
PRIMARY KEY (actor_id,
addresse_id));
CREATE TABLE main_email (
actor_id int4 NOT NULL UNIQUE,
email_id int2 NOT NULL,
PRIMARY KEY (actor_id,
email_id));
CREATE TABLE personne (
personnne_id int4 NOT NULL,
prefixe int4 NOT NULL,
name varchar(50) NOT NULL,
firstname varchar(50) NOT NULL,
CONSTRAINT persons_pk
PRIMARY KEY (personnne_id));
CREATE TABLE phone (
actor_id int4 NOT NULL,
phone_id int2 NOT NULL,
lib varchar(50) NOT NULL,
number varchar(20) NOT NULL,
CONSTRAINT phones_pk
PRIMARY KEY (actor_id,
phone_id));
CREATE TABLE email (
actor_id int4 NOT NULL,
email_id int2 NOT NULL,
lib varchar(50) NOT NULL,
address varchar(320) NOT NULL,
CONSTRAINT emails_pk
PRIMARY KEY (actor_id,
email_id));
CREATE TABLE addresse (
actor_id int4 NOT NULL,
addresse_id int2 NOT NULL,
lib varchar(50) NOT NULL,
chez varchar(38) DEFAULT '' NOT NULL,
line_1 varchar(38) NOT NULL,
line_2 varchar(38) DEFAULT '' NOT NULL,
line_3 varchar(38) DEFAULT '' NOT NULL,
code_postal char(5) NOT NULL,
ville varchar(32) NOT NULL,
CONSTRAINT adresses_pk
PRIMARY KEY (actor_id,
addresse_id));
CREATE TABLE actor (
actor_id SERIAL NOT NULL,
CONSTRAINT actors_pk
PRIMARY KEY (actor_id));
CREATE TABLE demolition (
magasin_id int4 NOT NULL,
agrement varchar(20) NOT NULL,
qualicert varchar(20) DEFAULT '' NOT NULL,
PRIMARY KEY (magasin_id));
ALTER TABLE phone ADD CONSTRAINT actor_phone_actor_id_fk FOREIGN KEY (actor_id) REFERENCES actor (actor_id) ON DELETE Cascade;
ALTER TABLE email ADD CONSTRAINT actor_email_actor_id_fk FOREIGN KEY (actor_id) REFERENCES actor (actor_id) ON DELETE Cascade;
ALTER TABLE addresse ADD CONSTRAINT actors_addresses__fk FOREIGN KEY (actor_id) REFERENCES actor (actor_id) ON DELETE Cascade;
ALTER TABLE main_email ADD CONSTRAINT email_main_email_actor_id_email_id_fk FOREIGN KEY (actor_id, email_id) REFERENCES email (actor_id, email_id) ON DELETE Cascade;
ALTER TABLE main_phone ADD CONSTRAINT phone_main_phone_actor_id_phone_id_fk FOREIGN KEY (actor_id, phone_id) REFERENCES phone (actor_id, phone_id) ON DELETE Cascade;
ALTER TABLE main_address ADD CONSTRAINT addresse_main_address_actor_id_addresse_id_fk FOREIGN KEY (actor_id, addresse_id) REFERENCES addresse (actor_id, addresse_id) ON DELETE Cascade;
ALTER TABLE membre ADD CONSTRAINT actor_membre_membre_id_fk FOREIGN KEY (membre_id) REFERENCES actor (actor_id) ON DELETE Cascade;
ALTER TABLE organisme ADD CONSTRAINT membre_organisme_organisme_id_fk FOREIGN KEY (organisme_id) REFERENCES membre (membre_id) ON DELETE Cascade;
ALTER TABLE personne ADD CONSTRAINT membre_personne_personnne_id_fk FOREIGN KEY (personnne_id) REFERENCES membre (membre_id) ON DELETE Cascade;
ALTER TABLE entreprise ADD CONSTRAINT membre_entreprise_entreprise_id_fk FOREIGN KEY (entreprise_id) REFERENCES membre (membre_id) ON DELETE Cascade;
ALTER TABLE ent_immat ADD CONSTRAINT entreprise_ent_immat_ent_immat_id_fk FOREIGN KEY (ent_immat_id) REFERENCES entreprise (entreprise_id) ON DELETE Cascade;
ALTER TABLE societe ADD CONSTRAINT ent_immat_societe_societe_id_fk FOREIGN KEY (societe_id) REFERENCES ent_immat (ent_immat_id) ON DELETE Cascade;
ALTER TABLE societe ADD CONSTRAINT statut_societe_statut_id_fk FOREIGN KEY (statut_id) REFERENCES statut (statut_id);
ALTER TABLE personne ADD CONSTRAINT prefixes_persons_fk FOREIGN KEY (prefixe) REFERENCES prefixes (id) ON UPDATE No action ON DELETE No action;
ALTER TABLE vendeur ADD CONSTRAINT ent_immat_vendeur_vendeur_id_fk FOREIGN KEY (vendeur_id) REFERENCES ent_immat (ent_immat_id) ON DELETE Cascade;
ALTER TABLE mra ADD CONSTRAINT entreprise_mra_mra_id_fk FOREIGN KEY (mra_id) REFERENCES entreprise (entreprise_id) ON DELETE Cascade;
ALTER TABLE mra ADD CONSTRAINT metier_mra_metier_id_fk FOREIGN KEY (metier_id) REFERENCES metier (metier_id);
ALTER TABLE magasin ADD CONSTRAINT vendeur_magasin_vendeur_id_fk FOREIGN KEY (vendeur_id) REFERENCES vendeur (vendeur_id) ON DELETE Cascade;
ALTER TABLE magasin ADD CONSTRAINT actor_magasin_magasin_id_fk FOREIGN KEY (magasin_id) REFERENCES actor (actor_id);
ALTER TABLE employe ADD CONSTRAINT personne_employe_employe_id_fk FOREIGN KEY (employe_id) REFERENCES personne (personnne_id) ON DELETE Cascade;
ALTER TABLE employe ADD CONSTRAINT entreprise_employe_entreprise_id_fk FOREIGN KEY (entreprise_id) REFERENCES entreprise (entreprise_id);
ALTER TABLE responsable ADD CONSTRAINT employe_responsable_employe_id_fk FOREIGN KEY (employe_id) REFERENCES employe (employe_id) ON DELETE Cascade;
ALTER TABLE employe_mag ADD CONSTRAINT employe_employe_mag_entreprise_id_employe_id_fk FOREIGN KEY (entreprise_id, employe_id) REFERENCES employe (entreprise_id, employe_id) ON DELETE Cascade;
ALTER TABLE employe_mag ADD CONSTRAINT magasin_employe_mag_entreprise_id_magasin_id_fk FOREIGN KEY (entreprise_id, magasin_id) REFERENCES magasin (vendeur_id, magasin_id) ON DELETE Cascade;
ALTER TABLE directeur ADD CONSTRAINT employe_mag_directeur_entreprise_id_employe_id_magasin_id_fk FOREIGN KEY (entreprise_id, employe_id, magasin_id) REFERENCES employe_mag (entreprise_id, employe_id, magasin_id) ON DELETE Cascade;
ALTER TABLE demolition ADD CONSTRAINT magasin_demolition_magasin_id_fk FOREIGN KEY (magasin_id) REFERENCES magasin (magasin_id) ON DELETE Cascade;
ALTER TABLE personne ADD CONSTRAINT actors_persons_fk FOREIGN KEY (personnne_id) REFERENCES actor (actor_id) ON UPDATE No action ON DELETE Cascade;
CREATE INDEX personne
ON personne (name, firstname);
CREATE INDEX addresse
ON addresse (code_postal); |
Partager