Vous êtes sur la page 1sur 7

1.

2.
CREATE TABLE CATEGORIES
(
CODE_CATEGORIE NUMBER (6) NOT NULL ,
NOM_CATEGORIE VARCHAR2 (25) NOT NULL ,
DESCRIPTION VARCHAR2 (100) NOT NULL
);
ALTER TABLE CATEGORIES ADD CONSTRAINT CATEGORIES_PK PRIMARY KEY ( CODE_CATEGORIE ) ;

CREATE TABLE CLIENTS


(
CODE_CLIENT CHAR (5) NOT NULL ,
SOCIETE NVARCHAR2 (40) NOT NULL ,
ADRESSE NVARCHAR2 (60) NOT NULL ,
VILLE VARCHAR2 (30) NOT NULL ,
CODE_POSTAL VARCHAR2 (10) NOT NULL ,
PAYS VARCHAR2 (15) NOT NULL ,
TELEPHONE VARCHAR2 (24) NOT NULL ,
FAX VARCHAR2 (24)
);
ALTER TABLE CLIENTS ADD CONSTRAINT CLIENTS_PK PRIMARY KEY ( CODE_CLIENT ) ;
CREATE TABLE COMMANDES
(
NO_COMMANDE NUMBER(6) NOT NULL,
CODE_CLIENT CHAR(5) NOT NULL,
NO_EMPLOYE NUMBER(6) NOT NULL,
DATE_COMMANDE DATE NOT NULL,
DATE_ENVOI DATE NOT NULL,
PORT NUMBER(8,2),
LIVREE NUMBER(1) NOT NULL,
ACQUITEE NUMBER(1) NOT NULL,
ANNULEE NUMBER(1) NOT NULL,
ANNEE GENERATED ALWAYS AS (EXTRACT(YEAR FROM DATE_COMMANDE)),
TRIMESTRE GENERATED ALWAYS AS (TO_NUMBER(TO_CHAR(DATE_COMMANDE,'Q'))),
MOIS GENERATED ALWAYS AS (EXTRACT(MONTH FROM DATE_COMMANDE))
);
ALTER TABLE COMMANDES ADD CONSTRAINT COMMANDES_PK PRIMARY KEY ( NO_COMMANDE ) ;

CREATE TABLE DETAILS_COMMANDES


(
NO_COMMANDE NUMBER (6) NOT NULL ,
REF_PRODUIT NUMBER (6) NOT NULL ,
PRIX_UNITAIRE NUMBER (8,2) NOT NULL ,
QUANTITE NUMBER (5) NOT NULL ,
REMISE NUMBER (8,2) NOT NULL ,
RETOURNE NUMBER (1) NOT NULL ,
ECHANGE NUMBER (1) NOT NULL
);
ALTER TABLE DETAILS_COMMANDES ADD CONSTRAINT DETAILS_COMMANDES_PK PRIMARY KEY ( NO_COMMANDE, REF_PRODUIT ) ;

CREATE TABLE EMPLOYES


(
NO_EMPLOYE NUMBER (6) NOT NULL ,
REND_COMPTE NUMBER (6) NOT NULL ,
NOM NVARCHAR2 (40) NOT NULL ,
PRENOM NVARCHAR2 (30) NOT NULL ,
FONCTION VARCHAR2 (30) ,
TITRE VARCHAR2 (5) NOT NULL ,
DATE_NAISSANCE DATE NOT NULL ,
DATE_EMBAUCHE DATE NOT NULL ,
SALAIRE NUMBER (8,2) NOT NULL ,
COMMISSION NUMBER (8,2) ,
PAYS VARCHAR2 (20) ,
REGION VARCHAR2 (50)
);
ALTER TABLE EMPLOYES ADD CONSTRAINT EMPLOYES_PK PRIMARY KEY ( NO_EMPLOYE ) ;

CREATE TABLE FOURNISSEURS


(
NO_FOURNISSEUR NUMBER (6) NOT NULL ,
SOCIETE NVARCHAR2 (40) NOT NULL ,
ADRESSE NVARCHAR2 (60) NOT NULL ,
VILLE NVARCHAR2 (30) NOT NULL ,
CODE_POSTAL VARCHAR2 (10) NOT NULL ,
PAYS VARCHAR2 (24) NOT NULL ,
TELEPHONE VARCHAR2 (24) NOT NULL ,
FAX VARCHAR2 (24)
);
ALTER TABLE FOURNISSEURS ADD CONSTRAINT FOURNISSEURS_PK PRIMARY KEY ( NO_FOURNISSEUR ) ;

CREATE TABLE PRODUITS


(
REF_PRODUIT NUMBER (6) NOT NULL ,
NOM_PRODUIT NVARCHAR2 (50) ,
CODE_CATEGORIE NUMBER (6) NOT NULL ,
QUANTITE VARCHAR2 (30) ,
PRIX_UNITAIRE NUMBER (8,2) NOT NULL ,
UNITES_STOCK NUMBER (5) ,
UNITES_COMMANDESS NUMBER (5) ,
INDISPONIBLE NUMBER (1) NOT NULL ,
NO_FOURNISSEUR NUMBER (6) NOT NULL
);
ALTER TABLE PRODUITS ADD CONSTRAINT PRODUITS_PK PRIMARY KEY ( REF_PRODUIT ) ;

ALTER TABLE COMMANDES ADD CONSTRAINT COMMANDES_CLIENTS_FK FOREIGN KEY ( CODE_CLIENT ) REFERENCES CLIENTS
( CODE_CLIENT ) ON
DELETE CASCADE ;
ALTER TABLE COMMANDES ADD CONSTRAINT COMMANDES_EMPLOYES_FK FOREIGN KEY ( NO_EMPLOYE ) REFERENCES EMPLOYES
( NO_EMPLOYE ) ;
ALTER TABLE DETAILS_COMMANDES ADD CONSTRAINT DETAILS_COMMANDES_COMMANDES_FK FOREIGN KEY ( NO_COMMANDE )
REFERENCES COMMANDES ( NO_COMMANDE ) ;
ALTER TABLE DETAILS_COMMANDES ADD CONSTRAINT DETAILS_COMMANDES_PRODUITS_FK FOREIGN KEY ( REF_PRODUIT )
REFERENCES PRODUITS ( REF_PRODUIT ) ;
ALTER TABLE EMPLOYES ADD CONSTRAINT EMPLOYES_EMPLOYES_FK FOREIGN KEY ( REND_COMPTE ) REFERENCES EMPLOYES
( NO_EMPLOYE ) ;
ALTER TABLE PRODUITS ADD CONSTRAINT PRODUITS_CATEGORIES_FK FOREIGN KEY ( CODE_CATEGORIE ) REFERENCES CATEGORIES (
CODE_CATEGORIE ) ;
ALTER TABLE PRODUITS ADD CONSTRAINT PRODUITS_FOURNISSEURS_FK FOREIGN KEY ( NO_FOURNISSEUR )
REFERENCES FOURNISSEURS ( NO_FOURNISSEUR ) ;

3. Créer des tablespaces pour gérer les tables et un tablespace Undo.


4. Créer les tables en les assignant aux tablespaces correspondants.
CREATE TABLE CATEGORIES (
CODE_CATEGORIE NUMBER(6) CONSTRAINT CATEGORIES_PK PRIMARY KEY,
NOM_CATEGORIE VARCHAR2(25) NOT NULL,
DESCRIPTION VARCHAR2(100) NOT NULL
) TABLESPACE data_tablespace;

CREATE TABLE CLIENTS (


CODE_CLIENT CHAR(5) CONSTRAINT CLIENTS_PK PRIMARY KEY,
SOCIETE NVARCHAR2(40) NOT NULL,
ADRESSE NVARCHAR2(60) NOT NULL,
VILLE VARCHAR2(30) NOT NULL,
CODE_POSTAL VARCHAR2(10) NOT NULL,
PAYS VARCHAR2(15) NOT NULL,
TELEPHONE VARCHAR2(24) NOT NULL,
FAX VARCHAR2(24)
) TABLESPACE data_tablespace;

CREATE TABLE COMMANDES (


NO_COMMANDE NUMBER(6) CONSTRAINT COMMANDES_PK PRIMARY KEY,
CODE_CLIENT CHAR(5) NOT NULL,
NO_EMPLOYE NUMBER(6) NOT NULL,
DATE_COMMANDE DATE NOT NULL,
DATE_ENVOI DATE NOT NULL,
PORT NUMBER(8,2),
LIVREE NUMBER(1) NOT NULL,
ACQUITEE NUMBER(1) NOT NULL,
ANNULEE NUMBER(1) NOT NULL,
ANNEE GENERATED ALWAYS AS (EXTRACT(YEAR FROM DATE_COMMANDE)),
TRIMESTRE GENERATED ALWAYS AS (TO_NUMBER(TO_CHAR(DATE_COMMANDE,'Q'))),
MOIS GENERATED ALWAYS AS (EXTRACT(MONTH FROM DATE_COMMANDE))
) TABLESPACE data_tablespace;
CREATE TABLE DETAILS_COMMANDES (
NO_COMMANDE NUMBER(6) NOT NULL,
REF_PRODUIT NUMBER(6) NOT NULL,
PRIX_UNITAIRE NUMBER(8,2) NOT NULL,
QUANTITE NUMBER(5) NOT NULL,
REMISE NUMBER(8,2) NOT NULL,
RETOURNE NUMBER(1) NOT NULL,
ECHANGE NUMBER(1) NOT NULL,
CONSTRAINT DETAILS_COMMANDES_PK PRIMARY KEY (NO_COMMANDE, REF_PRODUIT)
) TABLESPACE data_tablespace;

CREATE TABLE EMPLOYES (


NO_EMPLOYE NUMBER(6) CONSTRAINT EMPLOYES_PK PRIMARY KEY,
REND_COMPTE NUMBER(6) NOT NULL,
NOM NVARCHAR2(40) NOT NULL,
PRENOM NVARCHAR2(30) NOT NULL,
FONCTION VARCHAR2(30),
TITRE VARCHAR2(5) NOT NULL,
DATE_NAISSANCE DATE NOT NULL,
DATE_EMBAUCHE DATE NOT NULL,
SALAIRE NUMBER(8,2) NOT NULL,
COMMISSION NUMBER(8,2),
PAYS VARCHAR2(20),
REGION VARCHAR2(50)
) TABLESPACE data_tablespace;

CREATE TABLE FOURNISSEURS (


NO_FOURNISSEUR NUMBER(6) CONSTRAINT FOURNISSEURS_PK PRIMARY KEY,
SOCIETE NVARCHAR2(40) NOT NULL,
ADRESSE NVARCHAR2(60) NOT NULL,
VILLE NVARCHAR2(30) NOT NULL,
CODE_POSTAL VARCHAR2(10) NOT NULL,
PAYS VARCHAR2(24) NOT NULL,
TELEPHONE VARCHAR2(24) NOT NULL,
FAX VARCHAR2(24)
) TABLESPACE data_tablespace;
CREATE TABLE PRODUITS (
REF_PRODUIT NUMBER(6) CONSTRAINT PRODUITS_PK PRIMARY KEY,
NOM_PRODUIT NVARCHAR2(50),
CODE_CATEGORIE NUMBER(6) NOT NULL,
QUANTITE VARCHAR2(30),
PRIX_UNITAIRE NUMBER(8,2) NOT NULL,
UNITES_STOCK NUMBER(5),
UNITES_COMMANDESS NUMBER(5),
INDISPONIBLE NUMBER(1) NOT NULL,
NO_FOURNISSEUR NUMBER(6) NOT NULL,
CONSTRAINT PRODUITS_CATEGORIES_FK FOREIGN KEY (CODE_CATEGORIE) REFERENCES CATEGORIES(CODE_CATEGORIE),
CONSTRAINT PRODUITS_FOURNISSEURS_FK FOREIGN KEY (NO_FOURNISSEUR) REFERENCES FOURNISSEURS(NO_FOURNISSEUR)
) TABLESPACE data_tablespace;

5. Créer 3 utilisateurs avec trois rôles distincts.


SQL> CREATE USER user1 IDENTIFIED BY user1;
user created.
SQL> CREATE USER user2 IDENTIFIED BY user2;
user created.
SQL> CREATE USER user3 IDENTIFIED BY user3;
user created.

SQL> CREATE ROLE role1;


role created.
SQL> CREATE ROLE role2;
role created.
SQL> CREATE ROLE role3;
role created.

Vous aimerez peut-être aussi