Erwin conexiuni între entităţi. Relații și chei străine. Stabilirea regulilor de validare

Adnotare: Acum că suntem deja familiarizați algebră relaționalăși înțelegem scopul teoremei lui Heath, putem începe să studiem procesele de normalizare care ne permit să creăm, într-un anumit sens, scheme bune baze de date relaționale.

Vom avea nevoie de conceptul de anomalie - o discrepanță între constrângerile de integritate ale schemelor de date conceptuale și logice (precum și fizice). Scopul normalizării este tocmai eliminarea anomaliilor care apar atunci când datele sunt pornite, actualizate și șterse.

Primele patru forme normale (mai precis, primul, al doilea, al treilea și Boyce-Codd) sunt combinate într-un singur grup deoarece definițiile lor se bazează pe conceptul clasic de funcție definită pe o diagramă de relații și pe teorema lui Heath.

Încă două forme normale (a patra și a cincea) folosesc modificate dependențe funcționale . Ultimul forma normala- cheie-domeniu - marchează o întoarcere la origini - o abordare logică a teoriei relaționale.

Va fi recomandat mod practic obținerea schemei de bază în primele patru forme normale, care oferă aproape întotdeauna versiunea finală a schemei. Corectitudinea acestei construcții va trebui verificată prin metode formale, adică sunt necesare tehnici euristice și teoria normalizării.

Să discutăm mai întâi modul acceptat de prezentare a materialului despre normalizare. Vom pleca firesc de la teoria normalizării dezvoltată în cadrul model relațional date. Cu toate acestea, experiența a arătat că, cu o astfel de prezentare, începătorii au dificultăți să înțeleagă cel mai important concept de anomalie, definit ca o caracteristică a „incorectitudinii” cartografierii. model conceptual afaceri într-un model de bază de date. De aceea

Vom folosi maparea de la modelul relațional la modelul entitate-relație pe care îl cunoașteți deja și vom studia normalizarea în modelul ER. Acest lucru vă va permite să utilizați semantica necesară pentru a lucra cu anomalii.

Să ne gândim din nou la conexiunile dintre relații, la conexiunea dintre relații și la cheile externe.

5.1 Relații și chei străine

Capitolele anterioare au explorat conceptele de conectare a entităților și relațiile dintre ele. Să le distingem clar. Conceptul de conexiune nu este de natură algebrică, deoarece conexiunile sunt active. În implementări, conexiunile definesc structura bazei de date și funcționează în timpul manipulării datelor și modificărilor schemei. O conexiune este un concept algebric. Semnificația datelor obținute la realizarea unei conexiuni este în întregime la latitudinea dezvoltatorului. Sensul conexiunii este strict definit de afacerea simulată.

Semantica conexiunilor este destul de dezvoltată. Pe lângă cardinalitatea capetelor, sunt utilizate proprietăți precum obligatorie și identificabilitate. În modelul relațional, ele nu pot fi exprimate direct (nu există astfel de cuvinte). Prin urmare, vom lua în considerare primele forme normale în cadrul modelului „entitate-relație”.

Relațiile dintre relații/entități atât în ​​modelul relațional, cât și în diagramele ER sunt formate dintr-o constrângere de integritate referențială numită „Cheie străină” (abreviat FK).

Pentru a nu crea o impresie falsă a sărăciei modelului relațional ca imposibilitate de a implementa ceva, să ne amintim că în el conexiunea n:m este reprezentată prin două conexiuni 1:n, care pot fi modelate conexiuni complexe. căi diferite. Chiar și agregatele pot fi reprezentate cumva prin introducerea de entități care descriu compoziția lor. Astfel de modele pot fi implementate eficient într-un program, dar cel mai probabil vor fi incomod pentru oameni. Posibilitățile de modelare a structurilor de date în cadrul modelului relațional sunt destul de largi, dar, desigur, nu nelimitate.

Hai să vorbim abordare generală la analiza structurilor care vor fi analizate în continuare folosind exemplul a două entități aferente „Angajat” și „Departament”, ilustrate în Figura 5.1. În stânga este o opțiune cu o conexiune de identificare, în dreapta cu o conexiune neidentificatoare.


Orez. 5.1. Exemplu de relații unu-la-mai multe

Aș dori să vă reamintesc încă o dată că am convenit să luăm în considerare exemplele așa cum sunt descrise în text și nu așa cum se întâmplă sau se pot întâmpla în viață. Această limitare este necesară pentru ca informația să fie percepută de toată lumea și întotdeauna în același mod.

În ambele versiuni ale schemei, fiecare angajat este repartizat unuia dintre departamente. Avem o relație („la-mulți” din partea relației „Angajat”). Pentru relația „Angajat”, nu puteți selecta un număr de departament deptno care nu există în lista de departamente (entitatea „Departament”). Un departament poate avea niciunul, unul, doi sau mai mulți angajați.

Am observat cu un exemplu similar (secțiunea 2.2.7) că apare o situație paradoxală. Directorul este repartizat la un anumit departament, iar șeful acestui departament este subordonat directorului și, în același timp, va fi șeful acestuia. Dar poate că departamentele sunt centre de cost și au decis să atribuie salariul directorului cheltuielilor unuia dintre departamente. În a noastră exemple de predare Nu ar trebui să vă ocupați de astfel de detalii, decât dacă, desigur, nu se spune contrariul. De la bun început, ar trebui să vă obișnuiți să vă gândiți la latura de afaceri, printre altele, dar atunci când rezolvați probleme educaționale, nu ar trebui să extindeți sarcinile la analiza posibilelor opțiuni.

Care este diferența dintre diagramele din Figura 5.1? O conexiune de identificare te face să te gândești la angajat în primul rând ca la un membru al departamentului. O conexiune neidentificatoare înseamnă că afilierea la departament este marcată ca ceva de importanță secundară.

5.2 Tipuri de comunicare. Relații de identificare și neidentificare, obligatorii și opționale

Tipurile de relații identificatoare și neidentificare (vezi Figura 5.1) nu se referă la teoria bazelor de date relaționale, ci la standardul de modelare IDEF1X pe care se bazează ERwin (alias AllFusion Data Modeller).

Dacă o cheie străină creează o entitate dependentă (slabă), atunci aceasta este transmisă grupului de atribute care formează cheia primară a acelei entități. În acest caz, se formează o legătură de identificare. Este întotdeauna obligatoriu.

O relație de neidentificare este folosită pentru a conecta două entități puternice. Acesta transmite cheia în zona de atribute non-cheie.

Pentru o relație de neidentificare, puteți specifica obligatoriu (întreaga relație, nu sfârșitul acesteia). Dacă relația este necesară (în ERwin acesta este indicatorul No Nulls), atunci atributele cheii străine vor primi indicatorul NOT NULL, ceea ce înseamnă că nu sunt permise valorile nule. Pentru o relație opțională (Nulls Allowed), cheia externă poate fi NULL.

După ce ne familiarizăm cu „Limbajul SQL” Limbajul SQL, folosind inginerie directă, va fi posibilă generarea unui script SQL care creează un fragment din schema bazei de date. Dar chiar și acum, dacă sunteți deja puțin familiarizat cu SQL, atunci accesând Instrumente > Inginer înainte/Generare schema și apoi făcând clic pe butonul Previzualizare, vizualizați textul generat.

De ce vom folosi un model entitate-relație mai complex atunci când luăm în considerare normalizarea, mai degrabă decât să ne limităm la abordarea clasică în cadrul modelului relațional? La urma urmei, adăugarea conceptelor de entități puternice și slabe, relații de identificare, relații obligatorii și opționale de neidentificare complică semnificativ semantica modelului de date.

Introducerea celor cinci concepte de mai sus este mai mult nivel inalt oferă un limbaj care reflectă mai bine caracteristicile sarcinii și, prin urmare, este mai ușor de înțeles de dezvoltator. Acest lucru vă va permite să obțineți rapid și fără transformări formale circuitul original bază relațională aproape în formă terminată (mai târziu vom exprima această idee mai precis: „în a treia forma normala sau forma normală Boyce-Codd").

Instrumente ERWin CASE pentru normalizarea și denormalizarea bazei de date,

  • construi un model fizic,
  • algoritmi de studiu pentru conversia bazelor de date în prima, a doua și a treia formă normală

Normalizare

Normalizarea este procesul de validare și reorganizare a entităților și atributelor pentru a satisface cerințele unui model de date relaționale. Normalizarea vă permite să fiți sigur că fiecare atribut este definit pentru entitatea sa, reducând semnificativ cantitatea de memorie pentru stocarea datelor.

Pentru a lua în considerare tipurile de forme normale, introducem conceptele de dependență funcțională și funcțională completă.

Dependenta functionala. Atribut ÎN esență E dependentă funcțional de atribut A esență E, dacă și numai dacă fiecare valoare A V E are asociat exact un sens B în E. Cu alte cuvinte, A definește clar ÎN.

Dependență funcțională completă. Atribut E esență ÎN dependent complet funcțional de un număr de atribute A esență E, dacă și numai dacă ÎN depinde funcțional de L și nu depinde de niciun contract A.

Există următoarele tipuri de forme normale:

  • Prima formă normală

(1NF). Esență E este în prima formă normală dacă și numai dacă toate atributele conțin numai valori atomice. Nu ar trebui să existe grupuri care se repetă printre atribute, adică mai multe valori pentru fiecare instanță.

  • A doua formă normală. Esență E este în a doua formă normală dacă este în prima formă normală și fiecare atribut non-cheie este complet dependent de cheia primară, adică nu există dependențe de partea cheie.
  • A treia formă normală (3NF). Esență E este în a treia formă normală dacă este în a doua formă normală și în atributele non-cheie ale entității E depind de alte atribute E.

După a treia formă normală, există forma normală Beuys-Codd, a patra și a cincea formă normală. În practică, ele sunt limitate la reducerea la a treia formă normală. Adesea, odată ce normalizarea este finalizată, toate relațiile de date sunt definite corect și modelul de date devine mai ușor de întreținut. Cu toate acestea, normalizarea nu duce la o creștere a performanței sistemului în ansamblu, deci la creare model fizic Pentru a îmbunătăți performanța, trebuie să vă abateți în mod conștient de la formele normale pentru a profita de capacitățile unui anumit server. Acest proces se numește denormalizare.

1.1. Suport pentru normalizare în ERWin

ERWin oferă doar suport pentru normalizare, dar nu conține algoritmi care convertesc automat un model de date dintr-o formă în alta.

Primul suport de formă normalăÎn model, fiecare entitate sau atribut este identificat printr-un nume. ERWin păstrează corectitudinea numelui după cum urmează:

  • note reutilizare numele entității și al atributului;
  • nu permite adăugarea a mai mult de o cheie străină la o entitate;
  • interzice atribuirea de nume de atribute neunice în cadrul unui model, respectând regula „într-un singur loc - un singur fapt”.

Crearea unui model fizic

Scopul creării unui model fizic este de a oferi administratorului informațiile adecvate pentru a transfera modelul de date logic în SGBD.

ERWin suportă generare automată model de date fizice pentru un anumit SGBD. În acest caz, modelul logic este transformat într-unul fizic la următorul principiu: Entitățile devin tabele, atributele devin coloane, iar cheile devin indecși.

Tabelul 7.1.Compararea componentelor modelului logic și fizic

Model logic Modelul fizic
Esență Masa
Atribut Coloană
Tip boolean (text, număr, dată, blob) Tip fizic (tip corect, în funcție de SGBD selectat)
Cheia principala Cheie primară, index RK
Cheie externă Indexul cheii externe FK
Cheie alternativă Index AK - un index unic, non-primar
Regula logicii de afaceri Declanșare sau procedură stocată
Relații Relații definite folosind atribute FK

Denormalizare

După normalizare, toate relațiile de date devin definite, excluzând erorile la manipularea datelor. Dar normalizarea datelor reduce performanța bazei de date. Pentru mai mult munca eficienta Cu date, folosind capacitățile unui server de baze de date specific, este necesar să se efectueze un proces care este opusul normalizării - denormalizării.

Nu există un algoritm standard pentru procesul de denormalizare, așa că în fiecare caz specific trebuie să vă căutați propria soluție. Denormalizarea se realizează de obicei la nivelul fizic al modelului. ERWin are următoarele capabilități pentru a sprijini procesul de denormalizare:

  • Entitățile, atributele, grupurile de chei și domeniile pot fi create numai la nivelul logic al modelului. ÎN

ERWin are capacitatea de a evidenția elemente ale modelului logic în așa fel încât acestea să nu apară la nivel fizic.

  • Tabelele, coloanele, indecșii și domeniile pot fi create numai la nivelul fizic. ÎN

ERWin are capacitatea de a evidenția elementele modelului astfel încât acestea să nu apară la nivel logic. Această capacitate suportă direct denormalizarea modelului fizic, permițând proiectantului să includă tabele, coloane și indici într-un model fizic specific DBMS.

    Rezolvarea relațiilor de la mulți la mulți. Prin rezolvarea acestor relații în modelul logic, ERWin adaugă entitățile asociate și vă permite să adăugați atribute acestora. Când rezolvați conexiunile în modelul logic, conexiunile în modelul fizic sunt rezolvate automat.

Exemplu

Normalizăm ceea ce s-a obținut în precedentul munca de laborator DB până la a treia formă normală. Pentru a aduce baza de date în prima formă normală, este necesar să se satisfacă condiția ca toate atributele să conțină valori atomice. Să ne uităm la atributele entității „Student”. Un student poate avea mai multe adrese E-mail si mai multe numere de telefon, care este o încălcare a primei forme normale. Este necesar să creați entități separate „E-mail” și „Telefon” și să le asociați cu entitatea „Student” (Fig. 7.1).

Orez. 7.1. Diagrama ERD a bazei de date studenți în prima formă normală

Să verificăm conformitatea bazei de date cu a doua formă normală. Toate atributele non-cheie trebuie să depindă în întregime de cheia primară. Este ușor de observat că această condiție este îndeplinită pentru toate entitățile de bază de date; prin urmare, putem concluziona că este în a doua formă normală.

Pentru a aduce baza de date la a treia formă normală, este necesar să vă asigurați că nu există dependențe tranzitive ale atributelor non-cheie. Această dependență se observă în atributele „Specialitate” și „Specializare” ale entității „Student”: specializarea depinde de specialitate și de grupul în care studiază studentul. Să creăm o nouă entitate independentă „Specialitate” prin transferarea atributului „Specializare” în ea și creând un nou atribut „Grup”, care este cel cheie și definește atributele „Specializare” și „Specializare”. Să facem o conexiune neidentificatoare de la entitatea „Specialitate” la entitatea „Student”, în timp ce atributul cheie „Grup” migrează la entitatea „Student”. Obținem o bază de date în a treia formă normală, deoarece nu există alte dependențe tranzitive ale atributelor non-cheie (Fig. 7.2).

Orez. 7.2. ERD-diagrama bazei de date a elevilor în a treia formă normală

Să trecem la construirea unui model fizic. Înainte de a construi un model fizic, trebuie să selectați un tip de bază de date din meniu atunci când creați un model fizic. Să selectăm ca bază de date Microsoft Access 97 sau 2000, primind implicit modelul fizic generat de ERWin (Fig. 4.4).

În modelul rezultat, este necesar să se ajusteze tipurile și dimensiunile câmpurilor. În plus, în etapa de creare a unui model fizic de date, sunt introduse reguli de validare a coloanelor care definesc liste valori acceptabileși valorile implicite (fila Acces al atributului).

Tabelul 7.2. Proprietățile coloanelor de tabele ale modelului fizic al bazei de date studenților

Coloană Tip mărimea Regula de validare

>10 și<100

Caracteristică

Specialitate

Specializare

Loc de munca

Nivel de competență

Nume

Descriere

Disciplina

NUMELE COMPLET. profesor

După setarea regulilor de validare (pentru a face acest lucru, trebuie mai întâi să dați numele de validare și apoi să editați regula de validare), următoarele reguli ar trebui să apară în caseta de dialog Editor de reguli de validare


Orez. 7.3.Reguli de validare

După setarea regulilor de validare în caseta de dialog Editor de coloane, trebuie să atribuiți regulile setate pentru acestea coloanelor corespunzătoare din tabel (Fig. 4.4).

Orez. 7.4. Modelul fizic al bazei de date a elevilor

Astfel, după parcurgerea tuturor pașilor descriși mai sus, am primit un model de bază de date gata de a fi plasat într-un SGBD. Pentru a genera codul de creare a bazei de date, trebuie să selectați pictograma Forward Engineer, după care se va deschide fereastra pentru setarea proprietăților schemei de date generate. Pentru a previzualiza scriptul SQL, utilizați butonul Previzualizare și pentru a genera o schemă, utilizați butonul Generare. În timpul procesului de generare, ERWin comunică cu baza de date, executând un script SQL. Dacă apar erori în timpul procesului de generare, acesta se oprește și se deschide o fereastră cu mesaje de eroare.

Întrebări de control

  1. Care este procesul de normalizare?
  2. Ce este dependența funcțională?
  3. Ce se numește dependență funcțională completă?
  4. Prima formă normală.
  5. A doua formă normală.
  6. A treia formă normală.
  7. Forma normală a lui Beuss este Codd.
  8. Care este procesul de denormalizare?
  9. Care este rostul denormalizării?
  10. Care este scopul creării unui model fizic?
  11. Denumiți funcțiile
  12. ERWin pentru suport pentru denormalizare.
  13. Cum se rezolvă relațiile de la mulți la mulți?

Conexiune (relaţie ) – aceasta este o relație funcțională între două entități (în special, este posibilă o legătură între o entitate și ea însăși). De exemplu, este important să știți numele de familie al angajatului și la fel de important este să știți în ce departament lucrează. Astfel, există o relație între departament și entitățile angajate cuprinde (Departament cuprinde angajați). O relație este un concept de nivel logic căruia îi corespunde o cheie externă la nivel fizic.

O relație este o relație logică între entități. Fiecare relație ar trebui să fie numită verb (sau expresie verbală), arătând modul în care o entitate se raportează la alta (Figura 31).

Orez. 31. Relaţiile dintre entităţi

Numele relației exprimă o constrângere sau o regulă de afaceri și face modelul mai ușor de citit, de exemplu:

Fiecare Client <Depozite/Retrageri > fonduri de la conturi .

Comunicarea arată exact ce acțiuni face clientul. În mod implicit, numele conexiunii nu este afișat în diagramă. Pentru a afișa numele conexiunii pe model, trebuie să mergeți la meniu Format/ Afișarea relației activați modul Expresie verbală .

În ERwin, relațiile sunt reprezentate de cinci informații principale:

    tip de conexiune (identificator, neidentificator, categorie completă/incompletă, conexiune nespecifică);

    entitate-mamă;

    entitate copil (dependentă);

    puterea de comunicare (cardinalitate);

    Acceptabilitatea valorilor goale (nule).

ÎN IDEF1X diferențiați dependent Și entitati independente . Tipul unei entități este determinat de relația sa cu alte entități.

Conexiunea este numită identificarea , dacă o instanță a unei entități copil (dependente) este identificată prin relația sa cu o entitate părinte (independentă). Când este trasată o relație de identificare, ERwin convertește automat entitatea copil într-o entitate dependentă, iar atributele care alcătuiesc cheia primară a entității părinte sunt transferate automat la cheia primară a entității copil. Această operație de adăugare de atribute la o entitate copil la crearea unei relații se numește migrare de atribute. În entitatea copil, noile atribute sunt marcate ca o cheie străină - (FK ) . Entitatea dependentă este reprezentată ca un dreptunghi cu colțuri rotunjite (Fig. 32). Mai târziu, la generarea unei scheme de bază de date, atributele cheii primare vor primi atributul NU NUL , ceea ce înseamnă că este imposibil să faci o înregistrare în tabelul de comandă fără informații despre numărul clientului. O legătură de identificare este afișată în model ca o linie continuă cu un punct gros la capătul secundar al linkului.

Orez. 32. Un exemplu de relație de identificare unu-la-mulți

Conexiunea este numită neidentificare , dacă instanța entității copil rămâne independentă și atributele cheii primare ale entității părinte migrează către componentele non-cheie ale entității părinte. O relație de neidentificare (Fig. 33) este utilizată pentru a lega entități independente. O relație de neidentificare este prezentată în model ca o linie punctată cu un punct gros la capătul copil al relației.

La nivel logic, ERwin poate stabili relații de identificare unu-la-mulți, relații multi-la-mulți și relații de neidentificare unu-la-mulți.

Orez. 33. Un exemplu de relație de neidentificare unu-la-mulți

Conexiune unu-la-multi înseamnă că o instanță a primei entități interacționează cu mai multe instanțe ale altei entități. Relațiile sunt reprezentate prin linii care leagă două entități cu un punct la un capăt și un verb plasat deasupra liniei. Exemple de astfel de relații:

    echipa include mulți jucători;

    avionul transportă mulți pasageri;

    Vânzătorul vinde multe produse.

La nivel de model logic împreună cu comunicarea unu-la-multi conexiune permisă multi-la-multi . Acest tip de comunicare descrie o situație în care instanțe ale entităților pot interacționa cu mai multe instanțe ale altor entități. Conexiune multi-la-multi utilizate în etapele inițiale de proiectare. Acest tip de relație este reprezentat de o linie continuă cu puncte la ambele capete (Figura 34). O relație multi-la-mulți ar trebui numită în două expresii (Fig. 34) - în ambele direcții. Acest lucru face modelul mai ușor de citit.

Orez. 34. Exemplu de relație multi-la-mulți

Conexiune multi-la-multi Este posibil ca gim să nu țină cont de anumite limitări ale sistemului, așa că atunci când treceți la nivelul fizic, ERwin convertește automat conexiunea multi-la-multi , adăugând o nouă entitate și stabilind două noi relații unu-la-multi de la entitati vechi la entitate noua. În acest caz, numele noii entități este atribuit automat ca Nume1_I mya2, de exemplu, Comanda_produs .

13. Creați conexiuni.

13.1. Folosind bara de instrumente Standard treceți la modul de afișare a entității (nivel) (Fig. 35).

Orez. 35. Vizualizare model în modul de afișare a entității

13.2. Activați modul de afișare a conexiunilor pe arcurile de conexiuni dintre entități activând modul pentru acest lucru Expresii verbale (Afișați expresia verbală ) în meniu Format/Relație navă Afişa .

13.3. Pentru a stabili conexiuni, utilizați butoanele de conectare de pe panou Instrumente (Fig. 5).

13.4. Stabiliți o relație M:M între entități Produs Și Ordin Mulți - la - mulți relaţie pe panou Instrumente Produs Ordin Alegere (Selectați ).

13.5. Stabiliți o relație 1:M între entități ClientȘi Ordin (Fig. 35). Procedura de setare a unei conexiuni este următoarea: faceți clic pe butonul Non - identificarea relație pe panou Instrumente apoi faceți clic mai întâi pe entitatea părinte Client iar apoi pe entitate copil Ordin . Pentru a dezactiva modul de setare a legăturii, faceți clic pe butonul Alegere (Selectați ).

După parcurgerea pașilor 13.3 și 13.4, pe model vor apărea linii de comunicare între entități cu nume de conexiune standard R/1 Și R/2 (Fig. 36).

Orez. 36. Vedere a modelului cu relații stabilite între entități

14. Dați nume link-urilor.

14.1. Verificați conformitatea cu punctul 13.2.

14.2. Pentru a numi relațiile dintre entități Produs Și Ordin R/1 (Fig. 36).

14.3. În fereastra care apare Relaţie (Fig. 37) selectați fila General .

Să ne uităm la scopul filelor din fereastră pentru setarea conexiunilor Relaţie (Fig. 37).

Orez. 37. Fereastră Relaţie

Pe fila General În caseta de dialog, puteți seta puterea, numele și tipul conexiunii.

Puterea de comunicare (Cardinalitatea ) – denotă raportul dintre numărul de instanțe ale entității-mamă și numărul de instanțe ale copilului. ERwin, în conformitate cu metodologia IDEF1X , vă permite să setați patru tipuri de putere:

    Zero , unu sau Mai mult . Cazul general în care o instanță a unei entități părinte corespunde cu 0, 1 sau mai multe instanțe ale unei entități copil nu este marcat cu niciun simbol;

    unu sau Mai mult . Simbol P cazul este marcat atunci când o instanță a entității părinte corespunde uneia sau mai multor instanțe ale entității copil (se exclude valoarea zero);

    Zero sau unu . Simbol Z cazul este marcat atunci când o instanță a entității părinte corespunde cu 0 sau 1 instanță a entității fii (sunt excluse mai multe valori);

    Exact . Un număr specific, de exemplu, 5, marchează cazul unei potriviri exacte, când o instanță a entității părinte corespunde unui număr predeterminat de instanțe ale entității copil.

În mod implicit, simbolul care indică puterea legăturii nu este afișat pe model. Pentru a afișa numele urmați meniul Format/ Relaţie Afişa activați modul Cardinalitatea . Puterea este afișată printr-un simbol suplimentar pentru entitatea copil (Fig. 38).

0, 1 sau mai multe

1 sau multe

exact N (5)

Orez. 38. Desemnarea puterii de comunicare pe modele

Numele linkului (Expresie verbală ) – o frază care caracterizează relația dintre entitățile părinte și fii. Pentru o relație de identificare sau neidentificare unu-la-mulți, este suficient să specificați numele relației care caracterizează relația părintelui cu entitatea copil (De la părinte la copil ) . Pentru o relație multi-la-mulți, trebuie să specificați numele relațiilor dintre entități în ambele direcții: cum ar fi De la părinte la copil deci si De la copil la părinte ( relația dintre copil și părinte).

Permite golirea ( Nul s ) valorile în conexiunile neidentificare se stabilesc prin selectarea modului Nul s Permis În capitolul Nul s . În model, acest mod este reprezentat ca un diamant gol pe arcul din partea laterală a entității părinte.

Tipul de comunicare (identificarea/neidentificarea ). Pentru o relație de neidentificare, puteți specifica obligatoriu (Nule ) . În cazul comunicării obligatorii (Fără valori nule) la generarea unei scheme de bază de date, atributul cheii străine va primi atributul NU NUL, în ciuda faptului că cheia străină nu va face parte din cheia primară a entității copil. În cazul comunicării opționale (Nule permise) cheia străină poate lua valoare NUL. O relație opțională de neidentificare este marcată cu un romb transparent pe partea entității părinte.

Marcat Definiție Puteți da o definiție mai completă a relației pentru a vă putea referi la ea în viitor.

Marcat Nume rol puteți seta numele rolului.

Marcat Acțiuni RI reguli de integritate referenţială.

Nume rol (Nume rol ) este un nume funcțional sinonim cu un atribut cheie străină care indică rolul pe care îl joacă atributul într-o entitate copil. În mod implicit, numai numele rolului este afișat în lista de atribute. Pentru a afișa numele complet al atributului (atât numele funcțional, cât și numele rolului), în meniul contextual care apare dacă dați clic stânga pe orice loc din model care nu este ocupat de obiecte model, selectați Afișarea entităților și apoi porniți modul Nume rol/Atribut . Numele complet este afișat ca nume funcțional și numele de bază, separate printr-un punct.

Este obligatorie utilizarea numelor de rol atunci când două sau mai multe atribute ale aceleiași entități sunt definite în același domeniu, adică au același domeniu, dar semnificații diferite. De exemplu, entitatea intermediară de tranzacție are un cod de atribut al întreprinderii vânzătoare și un cod al întreprinderii cumpărătoare. În acest caz, cheia primară a entității întreprinderii (codul întreprinderii) are două roluri în entitatea copil. La nivel fizic, numele rolului este numele coloanei cheii externe din tabelul copil.

Un alt exemplu de denumire obligatorie a rolului este conexiuni recursive (uneori numit carlig de pescuit cârlig de undiță ), când aceeași entitate este atât părinte, cât și copil în același timp. Când se definește o relație recursivă, atributul trebuie să migreze ca o cheie străină către atribute non-cheie ale aceleiași entități. Un atribut nu poate apărea de două ori în aceeași entitate sub același nume, așa că trebuie să primească numele rolului. O relație recursivă poate fi doar neidentificatoare.

Un tip de conexiune recursivă numită recursiunea ierarhică , specifică o relație în care o instanță de entitate părinte poate avea mai multe instanțe de entitate copil, dar o instanță de entitate copil poate avea doar o instanță de entitate părinte.

Un alt tip de recursivitate este recursiunea rețelei , când o instanță a unei entități părinte poate avea mai multe instanțe ale unei entități copil și, dimpotrivă, o instanță a unei entități copil poate avea mai multe instanțe ale unei entități părinte. Recursiunea în rețea definește o rețea de relații între instanțe ale unei entități părinte și fii. Acesta este cazul când o entitate se află într-o relație multi-la-mulți cu ea însăși. Pentru a rezolva o relație multi-la-mulți, trebuie creată o nouă entitate.

Orez. 39. Fereastra Declanșatoare

Dacă un atribut este migrat ca cheie străină la mai multe niveluri, atunci numele complet al cheii străine (numele rolului + numele atributului de bază) este afișat la primul nivel și numai numele rolului este afișat la al doilea sau mai multe niveluri.

Reguli de integritate referenţială (Integritate referenţială (R.I. )) – constructe logice care exprimă reguli de afaceri pentru utilizarea datelor și reprezintă reguli de inserare, înlocuire și ștergere. Când se generează o schemă de bază de date bazată pe opțiunile modelului logic specificate în filă Acțiuni RI , vor fi generate reguli de integritate referențială declarativă care trebuie aplicate pentru fiecare relație și vor fi generați declanșatori care impun integritatea referențială. Declanșatoare sunt programe care sunt executate ori de câte ori este executată o comandă de inserare, înlocuire sau ștergere (INTRODUCE , ACTUALIZAȚI sau ȘTERGE ).

Orez. 40. Specificarea numelor de legături între entitățile Produs și Comandă

Regulile de ștergere controlează ce se întâmplă în baza de date atunci când un rând este șters. În mod similar, regulile de inserare și actualizare controlează ce se întâmplă cu baza de date dacă rândurile sunt modificate sau adăugate.

Erwin atribuie automat o valoare implicită de integritate referenţială fiecărei relaţii înainte de a o adăuga la model. Moduri R.I. , atribuit Erwin implicit, poate fi schimbat în fereastră Declanșatoare , care este apelat folosind meniul Bază de date/Declanșatoare RI/Declanșatoare de tabel... (Fig. 39).

14.4. La fereastră Relaţie (Fig. 37) în secțiune Mamă - la - Copil introduce Inclus , iar în secțiunea Copil - la - Mamă Include (Fig. 40).

14.5. La fel și pentru specificarea numelui relației dintre entități Client Și Ordin dublu clic pe link R/2 (Fig. 36) Și în fereastra care apare Relaţie (Fig. 37) în secțiune Mamă - la - Copil introduce Face (Fig. 41).

Orez. 41. Specificarea numelor de legături între entitățile Client și Comandă

14.5. Ca urmare a completării paragrafelor 14.1-14.5, modelul va lua forma prezentată în Fig. 42.

cometariu : În modelul nostru, prezentat în Fig. 41, nu există simboluri de putere de comunicare pentru entitățile copil, deoarece este selectat tipul de putere Zero , unu sau Mai mult .

Orez. 42. Vedere a modelului care indică relațiile dintre entități

Descrierea interfeței ERwin. Interfața CASE a ERwin constă din trei părți principale. Primul este meniul principal și barele de instrumente.

Butoanele de pe barele de instrumente reflectă unele dintre comenzile de bază din meniul principal. Salvați, deschideți, creați un fișier nou, un panou cu butoane pentru a mări sau micșora scara afișajului modelului, o comutare între modelul fizic și cel logic, o comutare între afișajele stocate, un panou pentru editarea stilului, mărimii și culorii fonturi, un panou cu instrumente pentru construirea formelor geometrice și mai multe bare de instrumente auxiliare (Fig. 5.3).

Orez. 5.3.

Al doilea este Model Explorer. Conține trei file: Model, Domenii de subiect și Domenii. Fila cel mai des folosită în Model Explorer este fila Domenii sau Model (care conține toate obiectele și modelele). În Domenii sunt afișate domeniile, iar în Domenii Subiecte - zonele afișate (Fig. 5.4).

Orez. 5.4.

Iar a treia este zona alocată direct pentru crearea unui model de obiect, în care toate obiectele model sunt create și editate. În partea de jos apar marcaje cu numele afișajelor stocate stocate (Stored Displays) (Fig. 5.5).


Orez. 5.5.

ERwin are două niveluri de reprezentare a datelor model: logic și fizic. Nivel logic- aceasta este o vedere abstractă a datelor, în care datele sunt prezentate așa cum arată în lumea reală, de exemplu, „Client”, „Atelier” sau „Numele angajatului”. Obiectele model reprezentate la nivel logic sunt numite entități și atribute. Un model de date logic poate fi construit pe deasupra altui model logic, cum ar fi un model de proces. Modelul logic de date este universal și nu are nicio legătură cu o anumită implementare DBMS.

Modelul fizic datele, dimpotrivă, depind de SGBD specific, fiind de fapt o reflectare a catalogului de sistem. Modelul fizic conține informații despre toate obiectele bazei de date. Deoarece nu există standarde pentru obiectele bazei de date (de exemplu, nu există un standard pentru tipurile de date), modelul fizic depinde de implementarea specifică a SGBD. În consecință, mai multe modele fizice diferite pot corespunde aceluiași model logic. Dacă într-un model logic nu contează ce tip de date specific are un atribut, atunci într-un model fizic este important să descriem toate informațiile despre anumite obiecte fizice - tabele, coloane, indici, proceduri etc. Împărțirea modelului în logice iar fizicul vă permite să rezolvați multe sarcini importante.

ERwin are mai multe niveluri de afișare a diagramei: nivel de entitate, nivel de atribut, nivel de definiție, nivel de cheie primară și nivel de pictogramă. Puteți comuta între primele trei niveluri folosind butoanele din bara de instrumente. Puteți comuta la alte niveluri de afișare folosind meniul contextual care apare dacă faceți „clic” pe orice loc din diagramă care nu este ocupat de obiecte model. În meniul contextual, selectați Nivel de afișare și apoi nivelul de afișare dorit. ERwin vă permite să asociați pictograme mari și mici cu o entitate. Când treceți la nivelul pictogramei, este afișată o pictogramă mare. Pentru a afișa o pictogramă mică, selectați Entity Display/Entity Icon din meniul contextual. O pictogramă mică va fi afișată în stânga numelui entității la toate nivelurile afișajului modelului.

Setați culoarea și fontul. Există mai multe moduri de a seta fontul și culoarea obiectelor în ERwin. În primul rând, pentru a seta culoarea și fontul unui obiect, utilizați bara de instrumente Font și culoare, care se află sub panoul principal. Pentru a edita fontul și culoarea unui anumit obiect, faceți clic dreapta pe o entitate sau o relație și selectați Object Font & Color... din meniul pop-up pentru a deschide caseta de dialog Font/Color Editor, în care numele, descrierea și comentariile entității sunt definite. În caseta de dialog Editor Font/Color, puteți selecta un font și puteți seta dimensiunea, stilul și culoarea acestuia, puteți seta culoarea de umplere (proprietatea Culoare umplere, numai pentru entități) și culoarea liniei (proprietatea Culoare contur, numai pentru entități).

Atunci când se creează modele de date reale, numărul de entități și atribute poate fi de sute. Pentru a lucra mai convenabil cu modele mari, ERwin oferă subseturi de modele (domenii tematice),în care pot fi incluse entităţi comune tematic. Un subset de model poate include un set arbitrar de entități, relații și comentarii de text. Pentru a crea, șterge sau edita subseturi de model, trebuie să apelați dialogul Domenii de subiect (meniul Model/Zone de subiect...), în care indicați numele subsetului și entitățile incluse în acesta. Toate modificările efectuate în orice domeniu de subiect se reflectă automat pe modelul general. Aceeași entitate poate fi inclusă în mai multe arii tematice.

Afișaj stocat- o reprezentare a unui subset al modelului, afișând un aspect specific al structurii datelor. O zonă de subiect poate include mai multe mapări stocate. Afișajul stocat include aceleași entități și relații ca și zona de subiect, dar acestea pot fi poziționate diferit pe ecran, la niveluri diferite, la scări diferite și la diferite culori de obiect sau de fundal.

Pentru a crea un afișaj stocat, utilizați dialogul Afișaje stocate (meniul Format/Setări afișare stocate...). Pentru a comuta între vizualizările stocate, utilizați filele din partea de jos a diagramei.

Componentele principale ale unei diagrame ERwin sunt entitățile, atributele și relațiile. Fiecare entitate este un set de obiecte individuale similare numite instanțe. Fiecare copie este individuală și trebuie să fie diferită de toate celelalte copii. Un atribut exprimă o proprietate specifică a unui obiect. Din punctul de vedere al bazei de date (model fizic), o entitate corespunde unui tabel, o instanță a unei entități corespunde unui rând din tabel, iar un atribut corespunde unei coloane de tabel.

Crearea unui model logic de date pentru tematica „Mobilier la comandă”. Modelul logic creat repetă structura CI proiectat. Pentru a crea o entitate în zona de creare a modelelor de obiecte, trebuie (după ce v-ați asigurat că vă aflați la nivelul modelului logic: comutarea între modelul logic și cel fizic este lista derulantă din partea dreaptă a barei de instrumente ) „faceți clic” pe butonul de entitate din bara de instrumente ( ERwin Toolbox) Q , apoi „faceți clic” pe locul din diagramă în care doriți să plasați noua entitate. Făcând clic dreapta pe o entitate și selectând Proprietăți entitate... din meniul pop-up, puteți deschide caseta de dialog Entități, care definește numele, descrierea și comentariile entității (de exemplu, numele entității - furnizor, descriere). - datele furnizorului). Fiecare entitate este definită folosind o descriere text în fila Definiție. Marcajele Note, Note 2, Note 3, UDP (User Defined Properties) sunt folosite pentru a adăuga comentarii suplimentare la entitate. Următorul pas este crearea atributelor entității. După cum sa menționat mai sus, fiecare atribut stochează informații despre o anumită proprietate a unei entități și fiecare instanță a unei entități trebuie să fie unică. Un atribut sau un grup de atribute care identifică o entitate se numește cheie primară. Pentru a crea atribute, faceți clic dreapta pe entitate și selectați Atribute... din meniul care apare. Apare dialogul Atribute. Dacă faceți clic pe butonul Nou..., atunci în dialogul Atribut nou care apare, specificați numele atributului, numele coloanei care îi corespunde în modelul fizic și domeniul (de exemplu, numele atributului este numele furnizorului). Domeniul de atribut va fi utilizat la definirea tipului de coloană la nivel de model fizic. Pentru atributele cheii primare, în fila General din dialogul Atribute, trebuie să marcați în fereastra de selecție a cheii primare.

Pentru a afișa o pictogramă de atribut, selectați elementul Afișare entitate din meniul contextual și activați opțiunea Pictogramă atribut din meniul în cascadă. O pictogramă mică va fi afișată în stânga numelui atributului la nivelul atributului de afișare a modelului. Numele entității este afișat deasupra dreptunghiului care descrie entitatea, lista atributelor entității este afișată în interiorul dreptunghiului. Lista este împărțită printr-o linie orizontală, deasupra căreia sunt atributele cheii primare, sub care sunt atributele non-cheie. Atributele trebuie să fie denumite la singular și să aibă un sens semantic clar. Respectarea acestei reguli ne permite să rezolvăm parțial problema normalizării datelor deja în stadiul de determinare a atributelor. De exemplu, crearea atributului Telefoane furnizor în entitatea Furnizor contrazice cerințele de normalizare deoarece atributul trebuie să fie atomic, adică să nu conțină mai multe valori. Conform sintaxei IDEF1X, numele atributului trebuie să fie unic în cadrul modelului (și nu doar în cadrul entității!). Fiecare instanță a unei entități trebuie să fie unică și distinctă de alte atribute. Următorul pas în crearea unui model este stabilirea de relații între entități. Fiecare relație ar trebui să fie numită verb sau expresie verbală (Expresii verbale de relație Fig. 5.6). Numele relației exprimă o constrângere sau o regulă de afaceri și face diagrama mai ușor de citit, de exemplu:

Fiecare CLIENT COMANDĂ;

FIECARE COMANDA ESTE PROIECTA.

Orez. 5.B. Nume relație - Expresii verbale de relație

Pentru a crea o nouă conexiune:

  • plasați cursorul pe butonul dorit din paleta de instrumente (conexiune identificatoare sau neidentificatoare) și apăsați butonul stâng al mouse-ului;
  • Faceți clic mai întâi pe părinte și apoi pe entitatea copil. Când se stabilesc relații între entități, atributele cheii primare ale entității părinte migrează ca chei străine către entitatea copil. În mod implicit, numele conexiunii nu este afișat în diagramă. Pentru a afișa numele, în meniul contextual care apare dacă faceți clic stânga pe orice loc din diagramă care nu este ocupat de obiecte model, selectați elementul Afișare relație și activați opțiunea Expresie verbală din meniul contextual.

Modelul logic de date al domeniului de subiect „Mobilier la comandă” este prezentat în Fig. 5.7.


Orez. 5.7.

Modelul de atribut complet reprezintă datele în a treia formă normală și include toate entitățile, atributele și relațiile și este prezentat în Fig. 5.8.

La nivel de entitate, modelul este prezentat în Fig. 5.9.

În fig. Figura 5.10 prezintă modelul de date la nivel de definiție.

Orez. 5.8.

Orez. 5.E. Stratul de entitate model de date

O conexiune este o dependență funcțională între două entități (în special, este posibil ca o entitate să se conecteze cu ea însăși). De exemplu, este important să știți numele de familie al angajatului și la fel de important este să știți în ce departament lucrează. Astfel, între entitățile „departament” și „angajat” există o relație „constă din” (departamentul este format din angajați). O relație este un concept de nivel logic căruia îi corespunde o cheie externă la nivel fizic. În ERwin, relațiile sunt reprezentate de cinci informații principale:

· tipul conexiunii (identificare, neidentificare, categorie completă/incompletă, conexiune nespecifică);

· entitate-mamă;

· entitate copil (dependentă);

· puterea de comunicare (cardinalitate);

· Acceptabilitatea valorilor goale (nule).

Se spune că o relație este identificatoare dacă o instanță a unei entități copil este identificată prin relația sa cu o entitate părinte. Atributele care alcătuiesc cheia primară a entității părinte sunt de asemenea incluse în cheia primară a entității copil. O entitate copil într-o relație de identificare este întotdeauna dependentă.
Se spune că o relație este neidentificatoare dacă o instanță a unei entități copil este identificată altfel decât prin relația cu entitatea-mamă. Atributele care alcătuiesc cheia primară a entității părinte sunt incluse și în atributele non-cheie ale entității copil.
Pentru a defini relațiile ERwin, selectați tipul de relație, apoi utilizați mouse-ul pentru a selecta entitățile părinte și fii. Legătura de identificare este reprezentată ca o linie continuă; neidentificare - linie punctată. Liniile se termină cu un punct pe partea entității copil.
Când se definește o relație, atributele cheii primare ale entității părinte sunt migrate în domeniul de aplicare al atributului corespunzător al entității copil. Prin urmare, astfel de atribute nu sunt introduse manual.
Atributele cheii primare ale unei entități părinte migrează cu propriile nume în mod implicit. ERwin vă permite să introduceți roluri pentru ei, de ex. nume noi sub care atributele migratoare vor fi reprezentate în entitatea copil. Dacă un atribut este migrat de mai multe ori, o astfel de redenumire este necesară. De exemplu, entitatea „tranzacție intermediară” are atributul „cod întreprindere vânzător” și „cod întreprindere cumpărător”. În acest caz, cheia primară a entității „întreprindere” („codul întreprinderii”) are două roluri în entitatea copil.
La nivel fizic, numele rolului este numele coloanei cheii externe din tabelul copil.
Puterea unei relații este raportul dintre numărul de instanțe ale unei entități părinte și numărul corespunzător de instanțe ale unei entități copil. Pentru orice altă relație decât una nespecifică, această relație este scrisă ca 1:n.
ERwin, în conformitate cu metodologia IDEF1X, oferă 4 opțiuni pentru n, care sunt reprezentate printr-un simbol suplimentar în entitatea copil: zero, unul sau mai multe (implicit); zero sau unu; exact N, unde N este un număr specific.
Acceptabilitatea valorilor goale (NULL) în relațiile neidentificatoare este reprezentată de ERwin ca un diamant gol pe partea entității părinte a arcului relației.
Denumirile de putere, respectiv, zero, una sau mai multe, una sau mai multe, zero sau unu în notația IE sunt prezentate în Fig. 1.

Fig.1. Notarea puterii de comunicare în notația IE

Numele unei relații la nivel logic este un „verb” care leagă entități. Numele fizic al unei legături (care poate fi diferită de numele logic) pentru ERwin este numele unei constrângeri sau index.