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;