Modelul de date entitate-asociere (entity relationship, ER) există de peste 35 de ani. Este potrivit pentru modelarea datelor pentru utilizarea cu baze de date, deoarece este destul de abstract și este ușor de discutat și explicat. Modelele ER sunt traduse cu ușurință în relații. Modelele ER, numite și schemă ER, sunt reprezentate prin diagrame ER.
Modelarea ER se bazează pe două concepte:
- Entități, definite ca tabele care conțin informații specifice (date)
- Asocieri (relații), definite ca asocieri sau interacțiuni între entități
Iată un exemplu al modului în care aceste două concepte ar putea fi combinate într-un model de date ER: Prof. Ba (entitate) predă (asociere) cursul Sisteme de baze de date (entitate).
În continuare, vom utiliza o bază de date eșantion numită baza de date COMPANY pentru a ilustra conceptele modelului ER. Această bază de date conține informații despre angajați, departamente și proiecte. Punctele importante de reținut includ:
- Există mai multe departamente în companie. Fiecare departament are o identificare unică, un nume, locația biroului și un anumit angajat care administrează departamentul.
- Un departament controlează o serie de proiecte, fiecare dintre acestea având un nume unic, un număr unic și un buget.
- Fiecare angajat are un nume, un număr de identificare, o adresă, salariul și data nașterii. Un angajat este repartizat într-un departament, dar se poate alătura mai multor proiecte. Trebuie să înregistrăm data de începere a angajatului în fiecare proiect. De asemenea, trebuie să cunoaștem supervizorul direct al fiecărui angajat.
- Vrem să ținem evidența dependenților pentru fiecare angajat. Fiecare dependent are un nume, o dată de naștere și o relație cu angajatul.
Entitate, set de entități și tip de entitate
O entitate este un obiect din lumea reală cu o existență independentă care poate fi diferențiată de alte obiecte. O entitate ar putea fi
- Un obiect cu existență fizică (de exemplu, un lector, un student, o mașină)
- Un obiect cu existență conceptuală (de exemplu, un curs, un loc de muncă, o poziție)
Entitățile pot fi clasificate în funcție de puterea lor. O entitate este considerată slabă dacă tabelele sale sunt dependente de existență.
- Adică nu poate exista fără o relație cu o altă entitate
- Cheia sa primară este derivată din cheia primară a entității părinte
- Tabelul Soț, în baza de date COMPANY, este o entitate slabă, deoarece cheia sa principală depinde de tabelul Angajaților. Fără o evidență a angajaților corespunzătoare, evidența soțului nu ar exista.
O entitate este considerată puternică dacă poate exista independent de toate entitățile sale conexe.
Nucleele sunt entități puternice.
Un tabel fără cheie externă sau un tabel care conține o cheie externă care poate conține valori nule este o entitate puternică.
Un alt termen de notat este tipul de entitate care definește o colecție de entități similare.
Un set de entități este o colecție de entități de un tip de entitate într-un anumit moment. Într-o diagramă entitate-asociere (entity relationship diagram, ERD), un tip de entitate este reprezentat de un nume într-o casetă. De exemplu, în Figura, tipul de entitate este ANGAJAT.
(ERD cu tip de entitate ANGAJAT.)
Dependența de existență
Existența unei entități este dependentă de existența entității înrudite. Depinde de existență dacă are o cheie externă obligatorie (adică un atribut de cheie externă care nu poate fi nul). De exemplu, în baza de date COMPANY, o entitate Soț/Soție este dependentă de entitatea Angajat.
Tipuri de entități
De asemenea, ar trebui să vă familiarizați cu diferite tipuri de entități, inclusiv entități independente, entități dependente și entități caracteristice. Acestea sunt descrise mai jos.
Entități independente
Entitățile independente, denumite și nuclee, sunt coloana vertebrală a bazei de date. Acestea se bazează pe alte tabele. Nucleele au următoarele caracteristici:
- Sunt elementele de bază ale unei baze de date.
- Cheia principală poate fi simplă sau compusă.
- Cheia principală nu este o cheie externă.
- Nu depind de o altă entitate pentru existența lor.
Dacă ne referim la baza noastră de date COMPANY, exemplele unei entități independente includ tabelul Clienți, tabelul Angajați sau tabelul Produse.
Entități dependente
Entitățile dependente, denumite și entități derivate, depind de alte tabele pentru semnificația lor. Aceste entități au următoarele caracteristici:
- Entitățile dependente sunt utilizate pentru a conecta două nuclee împreună.
- Se spune că există dependență de existența a două sau mai multe tabele.
- Relațiile multe-la-multe devin tabele asociative cu cel puțin două chei externe.
- Pot conține alte atribute.
- Cheia externă identifică fiecare tabel asociat.
- Există trei opțiuni pentru cheia principală:
- Utilizați un compozit de chei externe ale tabelelor asociate, dacă este unic
- Utilizați un compozit de chei externe și o coloană de calificare
- Creați o nouă cheie primară simplă
Entități caracteristice
Entitățile caracteristice oferă mai multe informații despre un alt tabel. Aceste entități au următoarele caracteristici:
- Reprezintă atribute cu mai multe valori.
- Ele descriu alte entități.
- Au, de obicei, o relație unu-la-multe.
- Cheia externă este utilizată pentru a identifica în continuare tabelul caracterizat.
- Opțiunile pentru cheia principală sunt următoarele:
- Utilizați un compozit de cheie externă plus o coloană de calificare
- Creați o nouă cheie primară simplă. În baza de date COMPANY, acestea ar putea include:
- Angajat (EID, nume, adresă, vârstă, salariu) – EID este cheia primară simplă.
- EmployeePhone (EID, Phone) – EID face parte dintr-o cheie primară compusă. Aici, EID este, de asemenea, o cheie externă .
Atribute
Fiecare entitate este descrisă printr-un set de atribute (de exemplu, Angajat = (Nume, Adresă, Data nașterii (Vârsta), Salariu).
Fiecare atribut are un nume și este asociat cu o entitate și un domeniu de valori juridice. Cu toate acestea, informațiile despre domeniul atributelor nu sunt prezentate pe ERD.
În diagrama entitate-asociere, prezentată în Figura 8.2, fiecare atribut este reprezentat de un oval cu un nume în interior.
(Cum sunt reprezentate atributele într-un ERD.)
Tipuri de atribute
Există câteva tipuri de atribute cu care trebuie să vă familiarizați. Unele dintre acestea trebuie lăsate ca atare, dar unele trebuie ajustate pentru a facilita reprezentarea în modelul relațional. Această primă secțiune va discuta tipurile de atribute. Mai târziu vom discuta despre stabilirea atributelor pentru a se încadra corect în modelul relațional.
Atribute simple
Atributele simple sunt cele extrase din domeniile valorii atomice; sunt numite și atribute cu o singură valoare. În baza de date COMPANY, un exemplu în acest sens ar fi: Nume = {John}; Vârstă = {23}
Atribute compuse
Atributele compuse sunt acelea care constau dintr-o ierarhie de atribute. Folosind exemplul bazei noastre de date, și prezentat în Figura 8.3, Adresa poate consta din Număr, Stradă și Cartier. Deci, acest lucru ar fi scris ca Adresa = {59 + „Meek Street” + „Kingsford”}
(Un exemplu de atribute compuse.)
Atribute cu mai multe valori
Atributele cu mai multe valori sunt atribute care au un set de valori pentru fiecare entitate. Un exemplu de atribut cu mai multe valori din baza de date COMPANY, așa cum se vede în Figura 8.4, sunt gradele unui angajat: BSc, MIT, PhD.
(Exemplu de atribut cu mai multe valori.)
Atribute derivate
Atributele derivate sunt atribute care conțin valori calculate din alte atribute. Un exemplu în acest sens poate fi văzut în Figura 8.5. Vârsta poate fi derivată din atributul Data nașterii. În această situație, Data nașterii se numește un atribut stocat, care este salvat fizic în baza de date.
Chei
O constrângere importantă asupra unei entități este cheia. Cheia este un atribut sau un grup de atribute ale căror valori pot fi utilizate pentru a identifica în mod unic o entitate individuală într-un set de entități.
Tipuri de chei
Există mai multe tipuri de chei. Acestea sunt descrise mai jos.
Cheie candidat
O cheie candidat este o cheie simplă sau compusă, unică și minimală. Este unică deoarece niciun rând pe un tabel nu poate avea aceeași valoare în orice moment. Este minimală deoarece fiecare coloană este necesară pentru a atinge unicitatea.
Din exemplul bazei noastre de date COMPANY, dacă entitatea este Angajat (EID, Prenume, Nume, SIN, Adresă, Telefon, Data Nașterii, Salariu, ID Departament), posibilele chei de candidat sunt:
- EID, SIN
- Prenume și Nume – presupunând că nu există altcineva în companie cu același nume
- Numele și ID-ul departamentului – presupunând că două persoane cu același nume de familie nu lucrează în același departament
Cheie compusă
O cheie compusă este compusă din două sau mai multe atribute, dar trebuie să fie minimală.
Folosind exemplul din secțiunea cheie candidat, posibilele chei compuse sunt:
- Prenume și Nume – presupunând că nu există altcineva în companie cu același nume
- Nume și ID-ul departamentului – presupunând că două persoane cu același nume de familie nu lucrează în același departament
Cheie primară
Cheia primară este o cheie candidat care este selectată de proiectantul bazei de date pentru a fi utilizată ca mecanism de identificare pentru întregul set de entități. Trebuie să identifice în mod unic tuplele dintr-un tabel și să nu fie nulă. Cheia primară este indicată în modelul ER prin sublinierea atributului.
- O cheie candidat este selectată de proiectant pentru a identifica în mod unic tuplele dintr-un tabel. Nu trebuie să fie nulă.
- O cheie este aleasă de proiectantul bazei de date pentru a fi utilizată ca mecanism de identificare pentru întregul set de entități. Aceasta este denumită cheie primară. Această cheie este indicată prin sublinierea atributului în modelul ER.
În exemplul următor, EID este cheia principală:
Angajat (EID, Prenume, Nume, SIN, Adresa, Telefon, Data nașterii, Salariu, ID Departament)
Cheie secundară
O cheie secundară este un atribut utilizat strict în scopuri de recuperare (poate fi compusă), de exemplu: Telefon și Prenume.
Cheie alternativă
Cheile alternative sunt toate cheile candidate care nu sunt alese ca cheie primară.
Cheie externă
O cheie externă (foreign key, FK) este un atribut într-un tabel care face referire la cheia primară dintr-un alt tabel SAU poate fi nulă. Atât cheile externe, cât și cele primare, trebuie să aibă același tip de date.
În exemplul de bază de date COMPANY de mai jos, ID Department este cheia externă:
Angajat (EID, Prenume, Nume, SIN, Adresă, Telefon, Data nașterii, Salariu, ID Departament)
Nule
Un nul este un simbol special, independent de tipul de date, ceea ce înseamnă fie necunoscut, fie inaplicabil. Nu înseamnă zero sau gol. Caracteristicile nulului includ:
- Fără intrări de date
- Nu este permis în cheia principală
- Ar trebui evitat în alte atribute
- Poate reprezenta
- O valoare de atribut necunoscută
- O valoare de atribut cunoscută, dar lipsă
- O condiție „neaplicabilă”
- Poate crea probleme atunci când sunt utilizate funcții precum COUNT, AVERAGE și SUM
- Poate crea probleme logice atunci când tabelele relaționale sunt legate
NOTĂ: Rezultatul unei operații de comparație este nul atunci când oricare dintre argumente este nul. Rezultatul unei operații aritmetice este nul atunci când oricare dintre argumente este nul (cu excepția funcțiilor care ignoră nulele).
Exemplu despre modul în care poate fi utilizat nulul
Utilizați tabelul de salarii (Salary_tbl) din Figura 8.6 pentru a vedea un exemplu de modul în care poate fi utilizat nul.
Salary_tbl
emp# | jobName | Salary | Commission |
E10 | Sales | 12500 | 32090 |
Ell | Null | 25000 | 8000 |
E12 | Sales | 44000 | 0 |
E13 | Sales | 44000 | null |
Figura 8.6. Tabelul salarial pentru un exemplu nul, de A. Watt.
Pentru început, găsiți toți angajații (emp#) în Sales (sub coloana jobName) al căror salariu plus comision sunt mai mari de 30.000.
- SELECT emp# FROM Salary_tbl
- WHERE jobName = Sales AND
- (commission + salary) > 30,000 -> E10 and E12
Acest rezultat nu include E13 din cauza valorii nule din coloana Commission. Pentru a ne asigura că este inclus rândul cu valoarea nulă, trebuie să ne uităm la câmpurile individuale. Prin adăugarea de comision și salariu pentru angajatul E13, rezultatul va fi o valoare nulă. Soluția este prezentată mai jos.
- SELECT emp# FROM Salary_tbl
- WHERE jobName = Sales AND
- (commission > 30000 OR
- salary > 30000 OR
- (commission + salary) > 30,000 ->E10 and E12 and E13
Sursa: Adrienne Watt, Database Design – 2nd Edition. Descărcare gratuită de la B.C. Open Textbook Collection. © 2014 Adrienne Watt and Nelson Eng. Licența (inclusiv imagini) CC BY 4.0. Traducere Nicolae Sfetcu
© 2021 MultiMedia Publishing, Baze de date, Volumul 1
Lasă un răspuns