Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice



Acasa » referate » informatica » baze de date
PROIECTAREA UNEI BAZE DE DATE RELTIONALE

PROIECTAREA UNEI BAZE DE DATE RELTIONALE



PROIECTAREA UNEI BAZE DE DATE RELTIONALE

Introducere

In acest capitol ne ocupam de :

1        Descrierea unei baze de date (BD),

2        Determinarea listei de tabele ale BD,

3        Stabilirea cheilor fiecarui tabel,


4        Proiectarea normalizata a unei BD,

5        Proiectarea diagramelor cu legaturile dintre relatii.

Vom prezenta cateva tehnici de proiectare riguroasa a BDR. Pentru modelarea completa a se vedea cursul I. Acest capitol ofera informatii suficiente pentru a intelege si a concepe o diagrama E/R ( entity-relationship ) si a intelege o proiectare normalizata a unei BDR. Pentru aceasta trebuie parcursa succesiunea de pasi :

P1. Crearea specificatiei BDR,

P2. Crearea listei de entitati,

P3. Adaugarea cheilor la entitatile create la P2,

P4. Normalizarea relatiilor,

P5. Utilizarea de nume adecvate,

P6. Constructia diagramelor E/R.

Crearea specificatiei BD

        Structura BD trebuie stabilita in concordanta cu viitoarele obiective, cerute de utilizatori, pe care BD trebuie sa le satisfaca. Consideram exemplul unui magazin de inchiriere de DVD-video. Obiectivul acestei BD de inchiriere, este de a pastra inregistrarile privind clientii care frecventeaza magazinul, precum si cele care privesc DVD-urilor existente in stoc. BD ar trebui sa ne permita sa aflam ce DVD-uri sunt imprumutate si cui, sa determinam daca exista un DVD anume pentru a fi imprumutat, sa ne informeze asupra DVD-urilor care nu au fost restituie la timp. Sa poata ajuta clientii care nu isi amintesc exact titlul DVD-ului sau filmele in care a jucat o anumita actrita.

Lista de entitati

        

Trebuie sa intocmim lista de entitati (oameni, lucruri, concepte ) despre care trebuie sa pastram informatii in BD. Pentru BD de inchiriere a DVD-urilor trebuie sa pastram informatii referitoare la entitatile urmatoare: clienti, DVD si actori.

 Entitatile sunt abstractii ale obiectelor din universul real ce sunt descrise in BD prin tabele.Apoi determinati atributele care descriu entitatile.

clienti(NUME , PRENUME, ADRESA, TELEFON, NR_CARTE_DE_CREDIT) .

dvd-video(TITLU, STARE, NR_CLIENT, DATA_INCHIRIERII, DATA_RESTITUIRII, CATEGORIE,   

                OBSERVATII,  PRODUCATOR, ADRESA_PRODUCATOR, NR_TEL_PRODUCATOR)

actori(NUME, PRENUME, DATA_NASTERII, DATA_MORTII, GEN)

facturi(NR_CLIENT, DATA_INCHIRIERII, DATA_RESTITUIRII, UMAR_FACTURA

              NR_DVD, VALOARE_FACTURA )

STAREA arata daca; DVD este in stoc, inchiriat, disponibil, distrus. Ne putem da seama ca informatiile referitoare la producator, stocate in tabelul dvd-video pot constitui o tabela separata. Putem imparti tabelul dvd-video in doua tabele, unul pentru dvd-video si unul pentru producatori .

dvd-video(TITLU, STARE, NR_CLIENT, DATA_INCHIRIERII, DATA_RESTITUIRII,   CATEGORIE , 

                   OBSERVATII).

producatori(NUME_PRODUCATOR,ADRESA_PRODUCATOR, NR_TELEFON _PRODUCATOR ).

Adaugarea de chei   

Intr-o BD fiecare tabel trebuie sa contina o cheie primara ( o coloana sau o combinatie de coloane care identifica in mod unic fiecare linie din tabel ).

         Ce atribute ar trebui sa fie folosite pentru o cheie primara in tabelele dvd-video si clienti Daca nu exista nici o combinatie de campuri care sa fie cheie primara va trebui sa adaugam un atribut fara nici o semnificatie pentru tabel. De exemplu pentru client ar putea fi un NUMAR_CLIENT care il  identifica pe client si care are semnificatie de identificator al unui client numit frecvent numar serial.Analog s pentru DVD adaugam un NR-DVD.

         O cheie poate fi compusa - constituita din doua sau mai multe coloane. Valorile din aceste coloane sunt combinate pentru a forma valoarea finala a cheii. In baza de date    de compact discuri video(DVD) vom folosi drept cheie pentru tabelele clienti, dvd-video, producatori, actor si facturi cate un numar serial. Cheile primare pot fi adaugate ca chei externe in tabelele asociate. De exemplu o coloana cu numele producatorului poate fi adaugata in tabelul dvd-video ca o cheie externa, astfel incat fiecare DVD poate sa fie atasat unui producator. Acest pas poate continua prin adaugarea de noi chei pana la terminarea pasului care da toate restrictiile referentiale.

Normalizarea este o tehnica de a obtine o multime de tabele echivalente care  elimina din BD a informatiile redundante si pe cele care  prezinta anomalii la actualizare. Exista 5 nivele de normalizare ( FN1 - FN5 ).

Forme normale. Definitii

Prima forma normala (FN1).

   O relatie r este in prima forma normala daca si numai daca domeniul oricarui atribut 

    este atomic ( ia numai valori simple ).

A doua forma normala (FN2).

  O relatie r este in a doua  forma normala daca este in FN1 si orice atribut, care nu este   intr-o cheie, (neprim),  este complet dependent de cheia primara.

Aceasta se aplica numai tabelelor care au chei compuse. in acest caz orice  coloana care nu este dintr-o cheie trebuie sa depinda de cheia intreaga.

Sa luam tabelul DVD(NR-DVD, NR-ACTOR, TITLU, NUME-ACTOR)  unde avem dependentele functionale; NR-ACTOR®NUME-ACTOR si NR-DVD®TITLU. Solutia este sa impartim coloanele in 2 tabele care sa cuprinda fiecare  cate o dependenta si sa mai introducem al treilea tabel  care cupleaza liniile celor doua tabele;

      

          DVD( NR-DVD, TITLU),



        actor(NR-ACTOR, NUME-ACTOR),

          DVD-actor(NR-DVD,NR-ACTOR).

A  treia forma normala (FN3)

    O relatie r este in a treia forma normala daca este in FN1 si orice atribut neprim nu     este tranzitiv dependent de cheia primara. Adica, coloanele care nu fac parte din chei nu depind de alte coloane decat de cheia primara.

 Sa consideram tabelul

         DVD(NR-DVD, TITLU, CATEGORIE, PRET).

Presupunem ca preturile de inchiriat  sunt in functie de categorie, filmele de actiune 2$, de comedie 3$, etc. Atunci CATEGORIE determina PRET si atunci creem un tabel suplimentar care elimina redundanta determinata de pret;

DVD(NR-DVD, TITLU, CATEGORIE),

pret(CATEGORIE, PRET).

A patra forma normala (FN4). 

 O relatie r este in a patra forma normala daca pentru orice MV- dependenta ne triviala

 partea stanga a ei este o super cheie.

A cincia forma  normala (FN5). - forma normala de asociere

     O relatie r este in a cincea forma normala daca si numai daca orice  dependenta de unire este implicata   de cheile candidate din r. Numele tabelelor normalizate il trecem la singular. Tabela facturi se descompune in doua tabele: factura si dvd-inchiriat. Atunci cand un client inchiriaza mai multe DVD-uri, pentru fiecare se creeaza cate un rand in tabelul factura si in tabelul dvd-inchiriat .

         Coloanele care corespund NR_CLIENT, DATA_RESTITUIRII au fost eliminate din tabelul dvd-video si sunt in dvd-inchiriat. Coloana VALOAREA_FACTURII este stearsa din tabelul factura. Tabelul dvd-inchiriat include o coloana VALOAREA_INCHIRIERII, iar suma totala este determinata adaugand suma coloanele respective din toate randurile din factura. La aceasta valoare se poate adauga si TVA etc.

         Cream o tabela categorie pentru a pastra descrierile diferitelor categorii ( comedie, drama, actiune, etc.). Tabelul dvd-video are o coloana care contine codul categoriei.

Mai cream 2 tabele de legaturi; actor-dvd, dvd-producator   care exprima o legatura mai multe la mai multi ( many to many ).

Client(NR_CLIENT, NUME-CLIENT, PRENUME_CLIENT, ADRESA,     

           NR_TELEFON,   NR_CARTE_CR),

dvd-video  ( NR_DVD, TITLU, STARE, COD_CATEGORIE)m,

Categorie (COD_CATEGORIE, DESCRIERE_CATEGORIE) ,

Producator(COD_PRODUCATOR,NUME_PRODUCATOR,ADRESA_

                    PRODUCATOR, TELEFON_PRODUCATOR),

Actor(COD_ACTOR,NUME,PRENUME, DATA_NASTERII, GEN, DATA_MORTII),

Factur a(NR_FACTURA, NR_CLIENT, DATA_INCHIRIERII ),

dvd-producator          (NRDVD, NR_PRODUCATOR),

dvd-actor(NR_DVD, NR_ACTOR),

Inchiriere-dvd(           NR_FACTURA,NR_DVD,DATA_RESTITUIRII,VALOARE_

                        INCHIRIERE).

Atributele subliniate reprezinta cheile simple sau compuse ale fiecarui tabel. Ultimul pas este ca in proiectare sa folosim numai nume potrivite si acceptate de orice dialect SQL.

 

REGULI DE INTEGRITATE RELATIONALE



Partea de integritate a unui model relational consta din reguli generale compuse din :

- reguli de integritate a entitatilor,

- reguli de integritate referentiale,

- reguli de integritate date de dependente.



O BD poate avea pe langa reguli generale si reguli specifice proprii ei. De exemplu o BD furnizori_de_produse poate cuprinde regula: cantitatea livrata trebuie sa fie mai mare ca zero mai mica deat 10000. Primele doua reguli generale se specifica cu ajutorul cheilor primare si al cheilor secundare.

Chei  primare

Cheile primare sunt cazuri speciale de   chei candidate. O cheie candidat este un identificator unic. Prin definitie orice relatie are cel putin o cheie candidat. Pentru orice relatie vom alege una din cheile candidat drept cheie primara si cele care raman se numesc chei alternative.

Definitia 1. Fie schema de relatie R=[A1,A2,…,An] si relatia r de schema R. Multimea de atribute K=[Ai, Aj, Ak] din R se numeste cheie candidat a lui r daca si numai daca satisface urmatoarele doua proprietati independente:

-unicitatea: in orice moment nu exista doua tupluri distincte din r care sa   aiba

  aceleasi valori pentru K;

-minimizare: nici un atribut din K nu poate fi eliminat fara a distruge

  unicitatea.

Cheile primare constituie baza mecanismelor de adresare la nivel de tuplu in modelul relational. O cale de a pecifica un anumit tuplu individual este precizarea (r,k) unde r este  numele relatiei si k este o valoare a cheii primare pentru fiecare tuplu. Valorile cheilor primare dintr-o relatie a BD servesc ca referinte de indentificare a tuplurilor. Cheia primara este fundamentala pentru operatiile modelului relational si are acelasi rol ca adresele din memoria principala.

Modelul relational utilizeaza frecvent o adresare asociativa, adica adresarea se face prin chei primare care se bazeaza pe valori, se aplica la nivel logic si nu se bazeaza pe pozitii.

Chei externe

Daca in alta relatie se adauga un atribut sau grup de atribute care in prima relatie este o cheie primara atunci aceasta in al doilea tabel se numeste cheie externa (straina).

Este o cheie externa deoarece face referire la prima relatie si este folosita doar pentru a realiza corespondenta tuplurilor din cele doua relatii.

Sa consideram BD furniprod (furnizori de produse)  formata din tabelele (relatiile): furnizori notata fr, produse notata pr si livrare notata fp. Evident ca, codul  unui furnizor sa zicem F1 ar trebui sa se gaseasca in relatia de livrare fp numai daca valoarea sa apare ca cheie primara in realtia furnizor fr. De exemplu nu are sens pentru fp sa includem o livrare de la frnizorul F9 daca acesta nu este inclus in relatia fr. De asemenea o valoare pentru atributul P# din relatia fp este permisa numai daca aceiasi valoare apare ca cheie primara P# in relatia pr  produse. Atributele F# si P# din relatia de livrare fp se numesc chei externe. Cheia externa trebuie sa aiba acelasi domeniu  de valori ca si cheia primara. Legatura dintre cele doua relatii este data de corespondenta dintre cheia primara si cheia externa. Aceasta legatura este alta cale de a reprezenta asocierile (relationship) dintre tupluri. Exista si alte legaturi dintre relatiile fr si pr de exemplu cea data de atributul ORAS dar aceasta nu este o cheie externa   ea devine cheie externa daca se adauga in BD o relatie in are atributul ORAS sa devina cheie primara.

Reguli de integritate

Regulile de integritate date de dependente au fost tratate in capitolele III si IV.Regula de integritate a entitatilor este:

“Nici un atribut al unei chei primare dintr-o BDR nu are valoarea null.”

Integritatea referentiala (referential integrity)

„Daca o relatie r2 contine cheia externa Fk care corespunde cheii primare Pk din relatia r1 a aceleiasi BD atunci orice valoare al lui Fk din r2 trebuie sa fie egala cu o valoarea a lui Pk dintr-un tuplu a lui r1 sau sa fie null complet (adica orice valoare a lui Fk trebuie sa fie null). Relatiile r1 si r2 nu sunt in mod necesar distincte.”

O relatie de baza corespunde in SQL la un tabel de baza si a fost numita pe scurt relatie. Valoare „null” reprezinta o informatie necunoscuta sau o „proprietate inaplicabila”. Regulile de integritate sunt justificate de urmatoarele:

     - relatiile de baza contin entitati dintr-un univers real,

     - prin definitie, entitatile universului real sunt distincte, adica au o identificare  unica,

     - cheile primare realizeaza o functie de identificare in modelul relational ,

     - valorile cheilor primare nu pot fi null.

Orice stare a unei BD ce nu satisface regulile de integritate este prin definitie inconsistenta (incorecta). In multe cazuri, o alternativa posibila pentru sistem este sa accepte operatiile, dar sa realizeze anumite operatii in plus care sa garanteze ca rezultatul este o starea consistenta. De exemplu daca utilizatorul sterge furnizorul F1 din relatia fr (furnizori) atunci sistemul trebuie sa stearga toate livrarile lui F1 din relatia fp (efect de stergere in „cascada”). In majoritatea sistemelor se specifica ce operatii ar trebui respinse si care trebuie acceptate si pentru acestea ce operatii compensatorii ar trebui realizate de sistem. Aceste sisteme sunt concretizate cu ajutorul clauzelor:

PRIMARY KEY si FOREIGN  KEY din instructiunea CREATE TABLE

Cheia primara data de un atribut sau un grup de atribute se defineste cu ajutorul  clauzei PRIMARY  KEY  din comanda  CREATE TABLE.

CREATE TABLE fr

     (F#                          INT,

      NUMEF                CHAR (10),

      PRENUMEF        CHAR (10),

      ORAS                    CHAR (10),

      PRIMARY KEY (F#));

Efectul caluzei PRIMARY KEY este ca, sistemul recunoaste ca F# este o cheie primara pentru relatia fr, care implicit este considerat unic si not null. Orice operatie care va acola aceste restrictii va fi respinsa. In ceea ce priveste proiectantul BD trebuie sa raspunda la urmatoarele 3 intrebari:

            1. Se pot accepta valori null pentru o cheie externa?



Raspunsul la aceasta intrebare nu depinde de proiectant ci de universul real al          BD. Se poate face o livrare de la un furnizor care este necunoscut?

2. Ce se intampla cand incercam sa stergem o referinta la o cheie externa ? De

exemplu sa stergem un furnizor care realizeaza cel putin o livrare? In acest caz  in

SQl exista 3 posibilitati:

            CASCADES     -operatia de stergere in cascada (sterge toate  acele livrari)

RESTRICTED -operatia de stergere este restrictionata  la cazul cand nu    exista

                            astfel de intrebari

NULLFIES     - cheia externa este null in toate livrarile si furnizorii sunt atunci

                            stersi

 3. Ce ar trebui sa se realizeze cand se incearca sa se actualizeze o cheie primara

            ce face o referinta la o cheie externa?  De exemplu sa se actualizeze numarul

            furnizorului pentru care exista cel putin o livrare. Exista aceleasi posibilitati  ca la

            stergere.

CASCADES- operatia de actualizare CASCADE actualizeaza cheile externe cu acele valori

RESTRICTED- operatia de actualizare este restrictionata la cazul cand nu exista astfel de livrari

NULLFIES-cheia externa este null si tabelele  livrari si furnizori sunt actualizate.

            Propunem o sintaxa in DDL  pentru clauza FOREIGN KEY.

FOREIGN KEY (cheie_externa) IDENTIFIES nume_relatie registru

NULL [NOT] ALLOWED

DELETE OF nume_relatie „efect”

UPDATE OF cheie-primara_din_relatia „efect”  

             unde:

         1. cheia externa este fie un atribut sau un grup de atribute;

         2. registru este un nume de relatie ;

         3. cheia primara din relatie specifica cheia primara din nume _relatie_efect;

         4. efect este CASCADE sau RESTRICTED sau NULLFIES.

Dam un exemplu de definire a unui tabel pentru relatia fp (furnizori de produse) care indica o multime posibila de chei externe:

CREATE TABLE   fp

     (F#                       INT,

        P#                       INT,

        CANT                INT)

      PRIMARY KEY (F#,P#)

   

  FOREIGN  KEY  (F# IDENTIFIES fr

                      NULL  NOT ALLOWED

                      DELETE OF fr RESTRICTED

                      UPDATE OF fr F# CASCADE)

    FOREIGN KEY (P# IDENTIFIES pr

                       NULL NOT ALLOWED

                       DELETE OF pr RESTRICTED

                       UPDATE OF pr, P# RESTRICTED)








Politica de confidentialitate

.com Copyright © 2019 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Proiecte

vezi toate proiectele
 PROIECT DE LECTIE Clasa: I Matematica - Adunarea si scaderea numerelor naturale de la 0 la 30, fara trecere peste ordin
 Proiect didactic Grupa: mijlocie - Consolidarea mersului in echilibru pe o linie trasata pe sol (30 cm)
 Redresor electronic automat pentru incarcarea bateriilor auto - proiect atestat
 Proiectarea instalatiilor de alimentare ale motoarelor cu aprindere prin scanteie cu carburator

Lucrari de diploma

vezi toate lucrarile de diploma
 Lucrare de diploma - eritrodermia psoriazica
 ACTIUNEA DIPLOMATICA A ROMANIEI LA CONFERINTA DE PACE DE LA PARIS (1946-1947)
 Proiect diploma Finante Banci - REALIZAREA INSPECTIEI FISCALE LA O SOCIETATE COMERCIALA
 Lucrare de diploma managementul firmei “diagnosticul si evaluarea firmei”

Lucrari licenta

vezi toate lucrarile de licenta
 CONTABILITATEA FINANCIARA TESTE GRILA LICENTA
 LUCRARE DE LICENTA - FACULTATEA DE EDUCATIE FIZICA SI SPORT
 Lucrare de licenta stiintele naturii siecologie - 'surse de poluare a clisurii dunarii”
 LUCRARE DE LICENTA - Gestiunea stocurilor de materii prime si materiale

Lucrari doctorat

vezi toate lucrarile de doctorat
 Doctorat - Modele dinamice de simulare ale accidentelor rutiere produse intre autovehicul si pieton
 Diagnosticul ecografic in unele afectiuni gastroduodenale si hepatobiliare la animalele de companie - TEZA DE DOCTORAT
 LUCRARE DE DOCTORAT ZOOTEHNIE - AMELIORARE - Estimarea valorii economice a caracterelor din obiectivul ameliorarii intr-o linie materna de porcine

Proiecte de atestat

vezi toate proiectele de atestat
 Proiect atestat informatica- Tehnician operator tehnica de calcul - Unitati de Stocare
 LUCRARE DE ATESTAT ELECTRONIST - TEHNICA DE CALCUL - Placa de baza
 ATESTAT PROFESIONAL LA INFORMATICA - programare FoxPro for Windows
 Proiect atestat tehnician in turism - carnaval la venezia






Termeni si conditii
Contact
Creeaza si tu