Facultatea de Matematica si Informatica, Universitatea Ovidius Constanta 1. Introducere
Scopul acestul proiect este proiectarea si implementarea in sgbd-ul Microsoft Access a unei baze de date. Am ales pentru acest proiect sa modelez subuniversul unei firme de tamplarie PVC.
2. Proiectarea si Implementarea Bazei de Date
Proiectarea bazei de date consta in aplicarea, in aceasta ordine, a urmatorilor algoritmi: Diagrame Entitati-Relatii(E-RD - Entity-Relationship Diagrams) si proiectarea listelor de constrangeri Algoritmul de transformarea E-RD si a constrangerilor in schema a Modelului Matematic al Datelor(MDM- Mathematical Data Model) Algoritmul de asistenta a gasirii cheilor Algoritmul de asistenta a gasirii altor tipuri de constrangeri Algoritmul de gasire si analizare a poligoanelor in E-RD Algoritmul de transformare a schemelor MDM in scheme ale Modelului Relational al Datelor(RDM - Relational Data Model) Algoritmul pentru traducerea schemelor RDM in baze de date in Access.
2.1 Diagrame Entitati-Relatii si liste de constrangeri 2.1.1 Diagrame Entitati-Relatii
PERSOANE CNP SerieCI Prenume Nume ANGAJATI DataAngajare CLIENTI CodClient NrCI DataPlecare CodAngajat Adresa
FACTURI *ValFact SERVICII DenServ PRODUSE_ FACTURATE NrFact Data Pret Pret SERVICII_ FACTURATE Pret NrFact
UNITATI _MAS DenUM MATERIALE
DenMaterial MATERIALE_ UTILIZATE Pret *pret_brut DenProdus PRODUSE Cantitate ECHIPE_PRODUSE CULORI
DenCuloare
PERSOANE ANGAJATI CLIENTI FACTURI SERVICII UNITATI _MAS MATERIALE
MATERIALE_ UTILIZATE PRODUSE_ FACTURATE PRODUSE SERVICII_ FACTURATE ECHIPE_PRODUSE CULORI UM Material Produs Culoare Produs Produs Factura Factura Serviciu Client Angajat Persoana Persoana
Constrangeri de totalitate: R4: Nume,Prenume,CNP,SerieCI,NrCI obligatorii;
Constrangeri de unicitate: R5: CNP unic;
2.1.2.2 ANGAJATI
Constrangeri de domeniu: R6:CodAngajatNUMBER(3); R7:DataAngajarii,DataPlecariiDate/Time;
Constrangeri de totalitate: R8: DataAngajarii,CodAngajat,Persoana obligatorii; Constrangeri de unicitate: R9: CodAngajat unic ;
2.1.2.3 CLIENTI
Constrangeri de domeniu: R10:Adresa ascii(255); R11:CodClientNUMBER(6);
Constrangeri de totalitate: R12: Adresa,CodClien,Persoana obligatorii ;
Constrangeri de unicitate: R13: CodClient unic ;
2.1.2.4 FACTURI
Constrangeri de domeniu: R14:*ValFactNUMBER(6); R15:NrFactNAT(6); R16:DataDate/Time;
Constrangeri de totalitate: R17: *ValFact,NrFact,Data,Client obligatorii ; Constrangeri de unicitate: R18:Nu pot exista 2 clienti cu acelasi numar de factura ;
2.1.2.5 SERVICII_FACTURATE
Constrangeri de domeniu: R19 :PretNUMBER(6); Constrangeri de totalitate: R20 : Pret,Factura,Serviciu obligatorii; Constrangeri de unicitate: R21 : Nu pot exista mai multe servicii facturate pentru acelasi serviciu pe aceeasi factura. 2.1.2.6 SERVICII Constrangeri de domeniu: R22:DenServ ascii(255) ; R23 : PretNUMBER(6);
Constrangeri de totalitate: R24:DenServ,Pret obligatorii ;
Constrangeri de unicitate: R25: DenServ unic ;
2.1.2.7 PRODUSE_FACTURATE Constrangeri de domeniu: R26: PretNUMBER(6);
Constrangeri de totalitate: R27: Pret,Produs,Factura obligatorii ;
Constrangeri de unicitate: R28: Factura,Produs unice ;Nu pot exista pe o factura 2 servicii cu aceeasi denumire ;
2.1.2.8 PRODUSE
Constrangeri de domeniu: R29: *PretBrutNUMBER(6); R30: DenProdus ascii(255) ;
Constrangeri de totalitate: R31: *PretBrut, DenProdus obligatorii ;
Constrangeri de unicitate: R32: DenProdus unic ;
2.1.2.9 ECHIPE_PRODUSE
Constrangeri de totalitate: R33: Angajat,Produs obligatorii ;
Constrangeri de unicitate: R34: Un angajat nu poate lucra in acelasi timp la mai multe produse ;
2.1.2.10 MATERIALE_UTILIZATE
Constrangeri de domeniu: R35 :CantitateNUMBER(6);
Constrangeri de totalitate: R36: Material,Produs obligatorii ;
Constrangeri de unicitate: R37: Material,Produs unice ;
2.1.2.11 MATERIALE
Constrangeri de domeniu: R38:DenMaterial ascii(255) ; R39: PretNUMBER(6);
Constrangeri de totalitate: R40: Pret,DenMateriale,Culoare,UM obligatrii ;
Constrangeri de unicitate: R41: DenMaterial unic ;
2.1.2.12 CULORI
Constrangeri de domeniu: R42:DenCuloare ascii(255) ;
Constrangeri de totalitate: R43: DenCuloare obligatorie ;
Constrangeri de unicitate: R44: DenCuloare unica ;
2.1.2.13 UNITATI_MAS
Constrangeri de domeniu: R45:DenUM ascii(255) ;
Constrangeri de totalitate: R46: DenUM obligatorie ;
Constrangeri de unicitate: R47: DenUM unica ; 2.2 Modelul Matematic Elementar al Datelor (EMDM)
Aplicand algoritmul de traducere din Diagrama Entitati-Relatii si Lista de Restrictii in Modelul Matematic Elementar al Datelor, adaugand cheile si celelalte constrangeri, se obtine urmatoarea schema a modelului EMDM.
2.2.1 Schema EMDM si algoritmul de gasire a cheilor 2.2.1.1PERSOANE
Atribute: x NAT, total, Cheie primara CNP [1000101000000,7991231999999] NAT(13), total,cheie(conform R5) Nume CHAR(255), total Prenume CHAR(255), total SerieCI CHAR(2), total NrCI NAT(6), total
Chei(Injectivitati minimale):
Produs Raspuns/Explicatie Nume Fals,deoarece pot exista mai multe persoane cu acelasi nume. Prenume Fals,deoarece pot exista mai multe persoane cu acelasi prenume. SerieCI Fals,deoarece pot exista mai multe persoane cu aceeasi SerieCI. NrCI Fals,deoarece pot exista mai multe persoane cu acelasi NrCI. Nume Prenume Fals, deoarece pot exista mai multe persoane cu acelasi nume si prenume. Nume SerieCi Fals, deoarece pot exista mai multe persoane cu acelasi nume si aceeasi serieCI. Nume NrCI Fals, deoarece pot exista mai multe persoane cu acelasi nume si acelasi nrCI. Prenume SerieCI Fals, deoarece pot exista mai multe persoane cu acelasi prenume si aceeasi serieCI. Prenume NrCI Fals, deoarece pot exista mai multe persoane cu acelasi prenume si acelasi NrCI. SerieCI NrCI Adevarat,deoarece nu pot exista mai multe persoane cu aceeasi serieCI si acelasi nrCI.
In consecinta, cheile tabelei PERSOANE sunt CNP si SerieCINrCI.
2.2.1.2ANGAJATI
Atribute: x NAT, total, Cheie primara CodAngajat NAT(3), total DataAngajarii DATE, total DataPlecarii DATE
Functii structurale: Persoana : ANGAJATI PERSOANE, total
Chei(Injectivitati minimale): CodAngajatPersoana : ANGAJATI NAT(3) PERSOANE (conform R9)
Produs Raspuns/Explicatie CodAngajat Adevarat,deoarece nu pot exista mai multi angajati cu acelasi cod. DataAngajarii Fals,deoarece pot exista mai multe persoane angajate in aceeasi zi. DataPlecarii Fals,deoarece pot exista mai multe persoane care pleaca in aceeasi zi. Persoana Fals,deoarece exista mai multe persoane care nu sunt angajati. DataAngajarii DataPlecarii Fals,deoarece pot exista mai multe persoane care se angajeaza si pleaca in aceeasi zi. DataAngajarii Persoana Fals,deoarece pot exista mai multe persoane angajate in aceeasi zi. DataPlecarii Persoana Fals,deoarece pot exista mai multe persoane care pleaca in aceeasi zi.
2.2.1.3CLIENTI
Atribute: x NAT, total, Cheie primara Adresa CHAR(255), total CodClient NAT(6), total
Functii structurale: Persoana : CLIENTI PERSOANE, total
Chei(Injectivitati minimale): CodClientPersoana : CLIENTI NAT(3) PERSOANE (conform R13)
Produs Raspuns/Explicatie CodClient Adevarat,deoarece nu pot exista mai multi clienti cu acelasi cod. Adresa Fals,deoarece pot exista mai multi clienti cu aceeasi adresa. Persoana Fals,deoarece exista mai multe persoane care nu sunt clienti. Adresa Persoana Fals,deoarece exista mai multe persoane cu aceeasi adresa.
2.2.1.4FACTURI
Atribute: x NAT, total, Cheie primara *ValFact NAT(6), total NrFact NAT(6),total Data DATE Client CHAR(255),total
Functii structurale: Client :FACTURI CLIENTI, total
Produs Raspuns/Explicatie *ValFact Fals,deoarece o valoare facturata poate exista pe mai multe facturi. NrFact Adevarat,deoarece un NrFact nu poate exista de mai multe ori. Data Fals,deoarece la aceeasi data pot fi mai multe facturi. Client Fals,deoarece unui client i se pot face mai multe facturi. *ValFact Data Fals,deoarece in aceeasi zi pot fi facute mai multe facturi cu aceeasi valoare. *ValFact Client Fals,deoarece un client poate avea mai multe facturi cu aceeasi valoare. Client Data Fals,deoarece un client poate avea mai multe facturi cu aceeasi data. *ValFact Data Client Fals,deoarece un client poate lua mai multe facturi cu aceeasi valoare in aceeasi zi. 2.2.1.5SERVICII
Atribute: x NAT, total, Cheie primara DenServ CHAR(255), total Pret NAT(6),total
Produs Raspuns/Explicatie DenServ Adevarat,deoarece nu pot exista mai multe servicii cu aceeasi denumire. Pret Fals,deoarece pot exista mai multe servicii cu acelasi pret.
2.2.1.6SERVICII_FACTURATE
Atribute: x NAT, total, Cheie primara Pret NAT(6),total Factura NAT(6),total Serviciu CHAR(255), total
Functii structurale: Factura : SERVICII_FACTURATE FACTURI, total Serviciu : SERVICII_FACTURATE SERVICII, total
Produs Raspuns/Explicatie Pret Fals,deoarece mai multe servicii pot avea acelasi pret. Factura Fals,deoarece mai multe servicii pot fi pe aceeasi factura. Serviciu Adevarat,deoarece nu pot exista mai multe servicii cu aceeasi denumire. Pret Factura Fals,deoarece mai multe facturi pot avea acelasi pret. Pret Serviciu Fals,deoarece mai multe servicii pot avea acelasi pret. Factura Serviciu Fals,deoarece mai multe servicii pot fi pe aceeasi factura. Factura Serviciu Pret Fals,deoarece pe o factura pot fi mai multe servicii cu acelasi pret.
2.2.1.7PRODUSE_FACTURATE
Atribute: x NAT, total, Cheie primara Pret NAT(6),total Factura NAT(6),total Produs CHAR(255), total
Functii structurale: Factura : PRODUSE_FACTURATE FACTURI, total Produs : PRODUSE_FACTURATE PRODUSE, total
Produs Raspuns/Explicatie Pret Fals,deoarece mai multe produse pot avea acelasi pret. Factura Fals,deoarece mai mai multe produse pot fi pe aceeasi factura. Produs Adevarat,deoarece nu pot exista mai multe produse cu aceeasi denumire. Pret Factura Fals,deoarece mai multe facturi pot avea acelasi pret. Pret Produs Fals,deoarece mai multe produse pot avea acelasi pret. Factura Produs Fals,deoarece mai multe produse pot fi pe aceeasi factura. Factura Produs Pret Fals,deoarece pe o facture pot fi mai multe produse cu acelasi pret.
2.2.1.8ECHIPE_PRODUSE
Atribute: x NAT, total, Cheie primara
Functii structurale: Produs : ECHIPE_PRODUSE PRODUSE, total Angajat : ECHIPE_PRODUSE ANGAJATI, total
Produs Raspuns/Explicatie Produs Fals,deoarece mai multe produse pot avea aceeasi denumire. Angajat Fals,deoarece mai multi angajati pot avea acelasi nume. Produs Angajat Adevarat,deoarece un angajat nu poate face mai multe produse in acelasi timp.
2.2.1.9PRODUSE
Atribute: x NAT, total, Cheie primara *PretBrut NAT(6),total DenProdus CHAR(255), total
Chei(Injectivitati minimale):
Produs Raspuns/Explicatie *PretBrut Fals,deoarece mai multe produse pot avea acelasi pret. DenProdus Adevarat,deoarece mai multe produse nu pot avea aceeasi denumire.
2.2.1.10MATERIALE_UTILIZATE
Atribute: x NAT, total, Cheie primara Cantitate NAT(6), total Material CHAR(255), total Produs CHAR(255), total
Chei(Injectivitati minimale):
Produs Raspuns/Explicatie Cantitate Fals,deoarece pot exista diferite materiale cu aceeasi cantitate. Material Adevarat,deoarece mai multe material nu pot avea aceeasi denumire. Produs Fals,deoarece mai multe produse pot fi confectionate din acelasi material. Cantitate Produs Fals,deoarece pot exista mai multe materiale cu aceeasi cantitate.
2.2.1.11MATERIALE
Atribute: x NAT, total, Cheie primara DenMaterial CHAR(255), total Pret NAT(6), total
Functii structurale: Culoare: MATERIALE CULORI, total UM: MATERIALE UNITATI_MAS,total
Chei(Injectivitati minimale):
Produs Raspuns/Explicatie DenMaterial Adevarat,deoarece mai multe materiale nu pot avea aceeasi denumire. Pret Fals,deoarece mai multe materiale pot avea acelasi pret. Culoare Fals,deoarece mai multe materiale pot avea aceeasi culoare. UM Fals,deoarece mai multe material pot avea aceeasi UM. Pret Culoare Fals,deoarece doua materiale de aceeasi culoare pot avea acelasi pret. Pret UM Fals,deoarece materialele cu aceeasi UM pot avea acelasi pret. Culoare UM Fals,deoarece materialele cu aceeasi UM pot avea aceeasi culoare.
2.2.1.12CULORI
Atribute: x NAT, total, Cheie primara DenCuloare CHAR(255), total
Chei(Injectivitati minimale):
Produs Raspuns/Explicatie DenCuloare Adevarat,deoarece nu pot exista mai multe culori cu aceeasi denumire.
2.2.1.13UNITATI_MAS
Atribute: x NAT, total, Cheie primara DenUM CHAR(255), total
Chei(Injectivitati minimale):
Produs Raspuns/Explicatie DenUM Adevarat,deoarece nu pot exista mai multe UM cu aceeasi denumire.
2.3 Schema Modelului Relational al Datelor si lista de constrangeri non-relationale Aplicand algoritmul de traducere din schema EMDM in schema RDM si lista de restrictii, au rezultat urmatoarele:
2.3.1 Schema Modelului Relational al Datelor (RDM) 2.3.1.1 PERSOANE(x, CNP ) x Nume Prenume CNP SerieCI NrCI auton (5) ascii (255) ascii (255) [1000101000000, 7991231999999] NAT(13) Ascii(255) NAT(6) Not Null Not Null Not Null Not Null Not Null Not Null
2.3.1.2 ANGAJATI(x, CodAngajat) x CodAngajat DataAngajarii DataPlecarii Persoana auton (3) NAT(6) DATE DATE Im(PERSOANE.x) Not Null Not Null Not Null Not Null
2.3.1.3CLIENTI(x, CodClient) x Adresa CodClient Persoana auton (3) ascii (255) NAT(6) Im(PERSOANE.x) Not Null Not Null Not Null Not Null
2.3.1.4 FACTURI(x, NrFact) x *ValFact NrFact Data Client auton (3) NAT(6) NAT(6) DATE Im(CLIENTI.x) Not Null Not Null Not Null Not Null Not Null
2.3.1.5 SERVICII_FACTURATE(x, ) x Pret Factura Serviciu auton (3) NAT(6) Im(FACTURI.x) Im(SERVICII.x) Not Null Not Null Not Null Not Null
2.3.1.6 SERVICII(x, DenServ) x DenServicii Pret auton (3) ascii (255) NAT(6) Not Null Not Null Not Null
2.3.1.7 PRODUSE_FACTURATE(x, ) x Pret Factura Produs auton (3) NAT(6) Im(FACTURI.x) Im(PRODUSE.x) Not Null Not Null Not Null Not Null
2.3.1.8 PRODUSE (x, DenProdus) x *PretBrut DenProdus auton (3) NAT(6) ascii (255) Not Null Not Null Not Null
2.3.1.9 ECHIPE_PRODUSE(x, ) x Angajat Produs auton (3) Im(ANGAJATI.x) Im(PRODUSE. x) Not Null Not Null Not Null
2.3.1.10MATERIALE_UTILIZATE(x, ) x Cantitate Material Produs auton (3) NAT(6) Im(MATERIALE.x) Im(PRODUSE.x) Not Null Not Null Not Null Not Null
2.3.1.11MATERIALE(x, DenMaterial) x DenMaterial Pret Culoare UM auton (3) ascii(255) NAT(3) ascii(255) ascii(255) Not Null Not Null Not Null Not Null Not Null
2.3.1.12CULORI(x, DenCuloare)
x DenCuloare auton (3) ascii(255) Not Null Not Null
2.3.1.13UNITATI_MAS(x, DenUM) x DenUM auton (3) ascii(255) Not Null Not Null