Project d'anne
A la discipline: Bases de donnes et connaissances.
Thme: Gestion des ventes, des stocks et du personnel dun dpt des
matriels de construction"
Grican Elena
Vrifi par
le professeur :
Viorel Rusu
Chiinu
2013
Sommaire
Introduction
Qu'est-ce qu'une base de donnes ?
Une base de donnes (son abrviation est BD, en anglais DB, database) est une entit dans
laquelle il est possible de stocker des donnes de faon structure et avec le moins de redondance
possible. Ces donnes doivent pouvoir tre utilises par des programmes, par des utilisateurs
diffrents. Ainsi, la notion de base de donnes est gnralement couple celle de rseau, afin de
pouvoir mettre en commun ces informations, d'o le nom de base. On parle gnralement de
systme d'information pour dsigner toute la structure regroupant les moyens mis en place pour
pouvoir partager des donnes.
le SGBD interne :
il gre l'ordonnancement des informations
le SGBD externe :
il reprsente l'interface avec l'utilisateur
Tche du projet
La tche du projet est de construire une base de donnes relationnelle en utilisant le
systme de gestion de base de donnes Oracle. Le thme du projet est la gestion des ventes, des
stocks et du personnel dun dpt des matriels de construction. Dans la construction de la base
de donnes on doit implmenter les contraintes dintgrit tudies est premirement on doit
analyser le modle conceptuel et logique de la base. Puis on doit faire plusieurs requtes qui vont
montrer la fonctionnalit de la base cre. Finalement on va implmenter la base dans un
programme (optionel).
matriels de construction
Modle conceptuel des donnes
Le modle conceptuel des donnes (MCD) a pour but d'crire de faon formelle les donnes qui
seront utilises par le systme d'information. Il s'agit donc d'une reprsentation des donnes,
facilement comprhensible, permettant de dcrire le systme d'information l'aide d'entits.
Entits et classe d'entit
Une entit est la reprsentation d'un lment matriel ou immatriel ayant un rle dans le
systme que l'on dsire dcrire.
On appelle classe d'entit un ensemble compos d'entits de mme type, c'est--dire dont la
dfinition
est
la
mme.
Le
classement
des
entits
au
sein
d'une
classe
s'appelle classification (ou abstraction). Une entit est une instanciation de la classe. Chaque
entit est compose de proprits, donnes lmentaires permettant de la dcrire.
Relations et classes de relation
Une relation (appele aussi parfois association) reprsente les liens smantiques qui peuvent
exister entre plusieurs entits. Une classe de relation contient donc toutes les relations de mme
type (qui relient donc des entits appartenant des mmes classes d'entit). Une classe de
relation peut lier plus de deux classes d'entit.
une classe de relation rcursive (ou rflexive) relie la mme classe d'entit
La cardinalit
Les cardinalits permettent de caractriser le lien qui existe entre une entit et la relation
laquelle elle est relie. La cardinalit d'une relation est compose d'un couple comportant une
borne maximale et une borne minimale, intervalle dans lequel la cardinalit d'une entit peut
prendre sa valeur :
Le modle relationnel
Le modle relationnel est bas sur une organisation des donnes sous forme de tables.
Modlisation relationnelle
La modlisation relationnelle permet de reprsenter les relations l'aide de tables ( deux
dimensions) dont chaque colonne a un identificateur qui reprsente un domaine. Une ligne du
tableau reprsente donc une entit et chacune des cases reprsente un de ses attributs.
On appelle attributs le nom des colonnes qui reprsentent les constituants de l'entit. Un attribut
(une colonne) est repr par un nom et un domaine de dfinition, c'est--dire l'ensemble des
valeurs qu'il peut prendre.
On appelle tuple (ou n-uplet) une ligne du tableau.
2. Le table Unitate_Masura
3. Le table Persoana
CREATE TABLE Persoana(
ID_Persoana NUMBER(4) PRIMARY KEY,
Nume VARCHAR2(10),
Prenume VARCHAR2(15),
Adresa VARCHAR2(30),
Telefon VARCHAR2(9),
Gen VARCHAR2(1),
Salariu NUMBER(6,2)
)
4. Le table Depozit
5. Le table Atribuire
CREATE TABLE Atribuire(
ID_Atribuire NUMBER(4) PRIMARY KEY,
Data_Angajarii DATE,
Valuta VARCHAR2(4),
FK_Depozit NUMBER(4),
FK_Persoana NUMBER(4),
FOREIGN KEY(FK_Depozit) REFERENCES Depozit(ID_Depozit),
FOREIGN KEY(FK_Persoana) REFERENCES Persoana(ID_Persoana))
6. Le table Furnizor
7. Le table Categorie
CREATE TABLE Categorie
(
ID_Categorie NUMBER(4) PRIMARY KEY,
Categorie
VARCHAR2(30)
)
8. Le table Produs
9. Le table Caracteristici
CREATE TABLE Caracteristici(
ID_Caracteristici NUMBER(4) PRIMARY KEY,
Ambalare VARCHAR2(10),
Cantitate NUMBER(4),
Inaltime NUMBER(4),
Latime NUMBER(4),
Lungime NUMBER(4),
Culoare VARCHAR2(10),
Pret_Vanzare VARCHAR2(10),
Pret_Furnizare VARCHAR2(10),
FK_Produs NUMBER(4),
FK_Unitate NUMBER(4),
FOREIGN KEY(FK_Produs) REFERENCES Produs(ID_Produs),
FOREIGN KEY(FK_Unitate) REFERENCES Unitate_Masura(ID_Unitate)
)
Le table Persoana
to_date('20-08to_date('15-05to_date('25-09to_date('02-02to_date('10-05-
VALUES
'Ciment si tencuiel' );
VALUES
'Lemn,Betonyp si OSB' );
VALUES
'Izolatii termice ');
8.
Le table Produs
Le table Caracteristici
Le table Post_Ocupat
to_date('01-05to_date('01-05to_date('01-05to_date('01-05to_date('02-05-
Le table Produs
UPDATE
2.
Le table Persoana
UPDATE
3.
Le table Categorie
UPDATE
Affichage des persons dans quel dpt travaille et qu'elle fonctionne occupe
SELECT Persoana.Nume,
Persoana.Prenume,
Depozit.nume AS "Nume Depozit",
Post_Ocupat.Post
FROM Persoana
INNER JOIN Atribuire
ON Persoana.ID_persoana = Atribuire.FK_Persoana
INNER JOIN Depozit
ON Atribuire.FK_Depozit= Depozit.ID_Depozit
INNER JOIN Post_Ocupat
ON PERSOANA.FK_Post_Ocupat = POST_OCUPAT.ID_POST
ORDER BY Persoana.Nume
Affichage des produits a quelle catgorie appartient e quel est leur fournisseur
Affichage de nombre des produits qui sont fournisse d'un fournisseur spcifi, et la
catgorie de qui appartient
SELECT Produs.Nume,
Caracteristici.Ambalare,
Caracteristici.Cantitate,
Caracteristici.Inaltime,
Caracteristici.Latime,
Caracteristici.Lungime,
Caracteristici.Pret_Vanzare,
Caracteristici.Pret_Furnizare,
Caracteristici.Culoare,
Unitate_Masura.Unitate
FROM Produs
INNER JOIN Caracteristici
ON Produs.ID_produs = Caracteristici.FK_produs
INNER JOIN Unitate_Masura
ON Unitate_Masura.ID_Unitate = Caracteristici.FK_Unitate
ORDER BY Produs.Nume
SELECT Activitate.Cantitate,
Activitate.Dataoperatiunii,
TIP_OPERATIUNE.DENUMIRE_Operatiune AS Operatiune,
Depozit.nume AS "Nume depozit",
Unitate_Masura.Unitate,
Produs.Nume AS "Nume produs"
FROM Activitate
INNER JOIN Tip_operatiune
ON Activitate.FK_Operatiune = TIP_OPERATIUNE.ID_OPERATIUNE
INNER JOIN Unitate_Masura
ON Activitate.FK_Unitate = Unitate_Masura.ID_Unitate
INNER JOIN Depozit
ON Activitate.FK_Depozit = Depozit.ID_Depozit
INNER JOIN Produs
ON Activitate.FK_Produs = Produs.ID_Produs
WHERE TIP_OPERATIUNE.DENUMIRE_Operatiune= 'Vanzare'
AND Activitate.Cantitate > 100
La contrainte CHECK
ALTER TABLE Persoana
ADD CONSTRAINT Check_Persoana_Gen
CHECK (Gen IN ('M', 'F'));
INSERT INTO persoana VALUES (persoana_seq.nextval, 'Gritcan', 'Elena',
'Chisinau, str.Studentilor 1', '078589874', 'x',1500, 1);
Les vues
Affichage de date, et des fournisseurs qui a fourni produits dans les dpts.
ORDER BY
Cantitate ASC1
20
25
45
50
50
50
50
50
70
80
100
120
189
200
200
300
420
500
500
500
Cantitate ASC
SELECT
1
2
5
9
10
15
20
25
40
45
50
70
80
100
120
189
200
300
400
420
500
SELECT
1
1
2
2
5
9
10
10
10
10
15
20
20
20
20
20
80
100
120
189
200
200
300
400
420
500
500
500
500
SELECT
2
10
20
25
500
SELECT
15
40
400
Le table Persoana
close c_st;
end if;
end;
/
exec
Persoana_show
Le table Categorie
> 8
SUM
MIN
AVG
COUNT
Insert
Update
Le table Furnizor
Insert
Update