Vous êtes sur la page 1sur 4

CREATE TABLE DEPARTEMENT (

Code_dep INT NOT NULL PRIMARY KEY,


Intitule_dep VARCHAR(255) NOT NULL,
Nom_Chef VARCHAR(255),
Prenom_Chef VARCHAR(255)
);

CREATE TABLE EMPLOYE (


Code_emp INT NOT NULL PRIMARY KEY,
Nom_emp VARCHAR(255) NOT NULL,
Prenom_emp VARCHAR(255),
Grade_emp VARCHAR(255),
Fonction VARCHAR(255),
Code_dep INT NOT NULL,
FOREIGN KEY (Code_dep) REFERENCES DEPARTEMENT(Code_dep)
);

CREATE TABLE CATEGORIE (


Num_cat INT NOT NULL PRIMARY KEY,
Categorie VARCHAR(255) NOT NULL
);

CREATE TABLE PRODUIT (


Code_PRO INT NOT NULL PRIMARY KEY,
Designation VARCHAR(255) NOT NULL,
Qte_stock INT NOT NULL,
Date_stock DATE NOT NULL,
Seuil INT NOT NULL,
Type VARCHAR(255) NOT NULL,
Num_cat INT NOT NULL,
FOREIGN KEY(num_cat) REFERENCES CATEGORIE(num_cat)
);

CREATE TABLE FOURNISSEUR (


Code_fournisseur INT NOT NULL PRIMARY KEY,
Nom_fournisseur varchar(255) NOT NULL,
Num_compte int NOT NULL,
Nom_tel varchar(10) NOT NULL
);
CREATE TABLE Bon_SORTIE (
Num_bso INT NOT NULL PRIMARY KEY,
Date_sor DATE NOT NULL,
Code_emp INT NOT NULL,
FOREIGN KEY(Code_emp) REFERENCES EMPLOYE(Code_emp)
);

CREATE TABLE SE_REFERE(


Num_bso INT NOT NULL,
Code_PRO INT NOT NULL,
Qte_sortie INT NOT NULL,
CHECK(Qte_sortie >= 1),
PRIMARY KEY(Num_bso,Code_PRO),
FOREIGN KEY(Num_bso) REFERENCES Bon_sortie(Num_bso),
FOREIGN KEY(Code_PRO) REFERENCES produit(Code_PRO)
);

CREATE TABLE bon_affectation(


num_baf int not null primary key,
date_aff date not null,
code_emp int not null,
foreign key(code_emp) references employe(code_emp)
);

CREATE TABLE concerner(


Num_baf int not null,
Code_pro int not null,
qte_aff int not null,
CHECK(qte_aff >= 1)
primary key(Num_baf,Code_pro),
foreign key(Num_baf) REFERENCES Bon_affectation(Num_baf),
foreign key(Code_pro) REFERENCES produit(Code_pro)
);
CREATE TABLE COMMANDE(
Num_bco INT NOT NULL PRIMARY KEY,
Date_com DATE NOT NULL,
Code_fournisseur INT NOT NULL,
FOREIGN KEY(Code_fournisseur) REFERENCES fournisseur(Code_fournisseur)
);
CREATE TABLE CONTENIR(
Num_bco INT NOT NULL,
Code_PRO INT NOT NULL,
Qte_cde INT NOT NULL,
CHECK(Qte_cde >= 1)
PRIMARY KEY(Num_bco,Code_PRO),
FOREIGN KEY(Num_bco) REFERENCES COMMANDE(Num_bco),
FOREIGN KEY(Code_PRO) REFERENCES PRODUIT(Code_PRO)
);

CREATE TABLE Bon_livraison(


Num_bliv INT NOT NULL PRIMARY KEY,
Date_liv DATE NOT NULL,
quantite INT NOT NULL
);

CREATE TABLE RENFERMER (


Num_bliv INT NOT NULL,
Code_pro int not null,
Qte_liv int not null,
primary key(num_bliv,code_pro),
foreign key(num_bliv) references bon_livraison(num_bliv),
foreign key(code_pro) references produit(code_pro)
);

CREATE user user1 IDENTIFIED BY Asdfgh123654;


CREATE ROLE administrateur IDENTIFIED BY administrateur;
GRANT ALL PRIVILEGES TO administrateur;
GRANT administrateur TO user1;

CREATE user user2 IDENTIFIED BY Asdfgh123654;


CREATE user user3 IDENTIFIED BY Asdfgh123654;

GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON PRODUIT to user1;


GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON CATEGORIE to user1;
GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON COMMANDE to user1;
GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON EMPLOYE to user2;
GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON DEPARTEMENT to user2;

GRANT SELECT ON RENFERMER to user1;


GRANT SELECT ON CONTENIR to user1;
GRANT SELECT ON CONCERNER to user1;
GRANT SELECT ON SE_REFERE to user1;

CREATE OR REPLACE FUNCTION checkstock(qte_stock IN NUMBER,min_stock IN


NUMBER) RETURN BOOLEAN
AS BEGIN
IF (qte_stock < min_stock) THEN
RETURN(FALSE);
ELSE RETURN(TRUE);
end if; end;

GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON EMPLOYE to user2;


GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON DEPARTEMENT to user2;

GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON BON_SORTIE to user2;


GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON BON_AFFECTATION to
user2;

CREATE SEQUENCE dep_primary_key START WITH 1 INCREMENT BY 1;

ALTER TABLE DEPARTEMENT


MODIFY code_dep INT DEFAULT dep_primary_key.NEXTVAL;

GRANT UPDATE, DELETE, ALTER, INSERT, SELECT ON FOURNISSEUR to user3;

GRANT SELECT ON EMPLOYE to user3;


GRANT SELECT ON DEPARTEMENT to user3;
GRANT SELECT ON BON_LIVRAISON to user3;

CREATE PUBLIC SYNONYM employe FOR admin.employe;


CREATE PUBLIC SYNONYM departement FOR admin.departement;

Vous aimerez peut-être aussi