Definiția unei baze de date relaționale. Baze de date relaționale. Conceptul unei baze de date relaționale

Model relațional

Modelul bazei de date relaționale a fost propus în 1969 de matematicianul și cercetătorul IBM E.F. Codd (E.F. Codd). Pentru câteva informații de bază despre bazele de date relaționale, consultați articolul de prezentare generală „ DB și DBMS" 2. Deoarece bazele de date relaționale sunt în prezent dominante, în acest articol (precum și în articolele " Descrierea datelor”, “Procesarea datelor" Și " Proiectarea bazei de date” 2) sunt discutate în detaliu conceptele cele mai esențiale ale modelului relațional.

Să observăm imediat că teoria bazelor de date relaționale a fost formulată inițial într-un limbaj matematic strict și tocmai conceptele matematice stricte, definite formal, descriu cel mai bine esența lucrurilor. Totodată, în cele mai multe cazuri este posibil, fără prea multă pagubă, să sacrificăm rigoarea terminologiei în favoarea transparenței prezentării, ceea ce vom încerca să facem.

Ideea principală a modelului relațional este următoarea. Baza de date constă dintr-o serie de neordonate Mese(în cel mai simplu caz - dintr-un singur tabel). Tabelele pot fi manipulate prin operațiuni non-procedurale (declarative) - cereri, ale căror rezultate sunt tot tabele.

Adesea, cuvântul „relațional” ( relaționale) în termenul „model relațional” se interpretează pe baza faptului că conexiunile sunt stabilite într-o bază de date relațională ( raporta) între mese. Această explicație este convenabilă, dar nu este exactă. În sistemul original de termeni al lui Codd, termenii de conexiune ( relaţii), atribute ( atribute) și tupluri ( tupluri) au fost folosite acolo unde majoritatea dintre noi folosim termenii mai familiari tabele, coloane (câmpuri) și rânduri (înregistrări).

Când construiți un model de informare al unui domeniu (vezi „ DB și DBMS”, “Proiectarea bazei de date” 2) ies în evidență esență(obiecte), descrie-le proprietăți a (caracteristici, atribute) care sunt esențiale pentru scopuri de modelare și se stabilesc conexiuni între entități. În etapa de trecere de la un model relațional infologic la unul datalogic, apar tabele. De obicei, fiecare entitate este reprezentată de un tabel. Fiecare rând al tabelului (o înregistrare) corespunde unei instanțe a entității, iar fiecare câmp descrie o anumită proprietate (atribut).

De exemplu, dacă trebuie să stocăm informații despre persoane, inclusiv numele de familie, prenumele, patronimul, TIN, țara de reședință și data nașterii fiecărei persoane, atunci entitatea este persoana, iar datele specificate sunt atributele. Entitatea însăși devine în mod natural numele tabelului.

Masa „Bărbat”

Modelul relațional necesită ca fiecare rând dintr-un tabel să fie unic, adică. astfel încât oricare două rânduri diferă în valoarea a cel puțin unui atribut.

Forma tabelară tradițională este utilă atunci când trebuie să prezentați datele în sine. Dacă, ca în exemplul de mai sus, vă interesează doar structura- numele câmpurilor, apoi din punct de vedere al clarității, ușurinței de utilizare în diagrame și economisirii spațiului, este mai convenabil să le descrieți după cum urmează:

Chei

Cheie Meseeste un câmp sau un grup de câmpuri care conțin valori unice într-un tabel dat. Cheia identifică în mod unic rândul corespunzător al tabelului. Dacă cheia constă dintr-un singur câmp, este adesea numită simplu, dacă din mai multe - compozit. În exemplul de mai sus, cheia este câmpul TIN (presupunem că se știe că TIN-urile sunt unice într-o țară).

Să ne uităm la un exemplu de tabel cu o cheie compusă. Site-urile de prognoză meteo prezintă adesea informații astfel: pentru fiecare dată, indică temperatura prognozată noaptea, dimineața, după-amiaza și seara. Pentru a stoca aceste informații, puteți utiliza un tabel ca acesta:

În acest tabel, nici câmpurile Data, Ora zilei și nici Temperatură nu sunt cheie - valorile pot fi repetate în fiecare dintre aceste câmpuri. Dar combinația câmpurilor Data + Ora zilei este unică și identifică în mod unic un rând de tabel. Aceasta este o cheie compusă.

Există adesea situații în care alegerea cheii nu este clară. Să revenim la primul exemplu. Să presupunem că, pe lângă nume, prenume, patronim, TIN, data nașterii, este necesar să se păstreze seria și numărul unui pașaport general și seria și numărul unui pașaport străin. Tabelul va arăta așa.

Puteți selecta până la trei chei în acest tabel. Una dintre ele este simplă (TIN), celelalte două sunt compuse (Seria + Număr pașaport general și Seria + Număr pașaport străin). Într-o astfel de situație, dezvoltatorul alege cheia care este cea mai convenabilă din punctul de vedere al organizării bazei de date (în general, cheia a cărei valoare durează cel mai puțin timp pentru a fi găsită). Tasta selectată în acest caz este adesea numită cheia principală sau primar, cheie și alte combinații de coloane din care se poate face o cheie sunt posibil, sau chei alternative. Rețineți că există întotdeauna cel puțin o cheie posibilă într-un tabel, deoarece rândurile nu pot fi repetate și, prin urmare, combinația tuturor coloanelor este garantată a fi o cheie posibilă.

Când descrieți tabele, este obișnuit să evidențiați cheile primare ale tabelelor. De exemplu, câmpurile relevante sunt adesea subliniate. Și Microsoft Access evidențiază câmpurile cheie cu caractere aldine.

Chiar mai des decât cu ambiguitatea în alegerea unei chei, dezvoltatorii se confruntă cu absența unei chei printre datele care trebuie stocate. Un fapt similar poate fi stabilit în procesul de analiză a domeniului subiectului. De exemplu, dacă trebuie să stocați o listă simplă de persoane - prenume, nume de familie, patronimice și date de naștere, atunci nu există nicio cheie în acest set de atribute - este posibilă o situație când două persoane diferite au același datele complet. În acest caz, trebuie să introduceți artificial un câmp suplimentar, de exemplu, un număr unic de persoană. O astfel de cheie este uneori numită în literatură surogat. Adesea, o cheie surogat este introdusă din motive de eficiență. Dacă, de exemplu, un tabel are o cheie compusă lungă, atunci dezvoltatorii introduc adesea o cheie surogat numerică scurtă suplimentară și o fac cheia primară. Acest lucru se face adesea chiar dacă există o cheie simplă care are un tip de date „incomod” (ineficient pentru căutare), de exemplu, un șir. Astfel de operații nu mai sunt relevante pentru teorie, dar sunt adesea întâlnite în practică.

Cititorul atent poate observa că cheia poate fi aproape întotdeauna extinsă (cu excepția cazului în care include toate câmpurile tabelului) prin includerea câmpurilor redundante. Formal, o astfel de cheie va rămâne o cheie, dar din punct de vedere practic, acesta este doar un joc de concepte. Astfel de chei nici măcar nu sunt considerate posibile, deoarece este întotdeauna necesar să ne străduim să minimizați lungimea (complexitatea) cheii.

Forme normale, normalizare

Nu orice tabel pe care îl putem desena pe hârtie sau în Word poate fi un tabel de bază de date relaționale. Și nu orice tabel care poate fi folosit într-o bază de date relațională este corect din punctul de vedere al cerinței modelului relațional.

In primul rand, necesită ca toate datele din aceeași coloană să fie de același tip(despre tipuri veziDescrierea datelor” 2). Din acest punct de vedere, exemplul de mai jos nici nu are sens să discutăm:

În al doilea rând, necesită ca tabelul să aibă o cheie primară atribuită.

Aceste cerințe sunt necesare, dar nu suficiente. Teoria bazelor de date relaționale introduce conceptele de așa-numitele „forme normale” - cerințe pentru organizarea datelor în tabele. Formele normale sunt numerotate secvenţial pe măsură ce cerinţele devin mai stricte. Într-o bază de date proiectată corespunzător, tabelele sunt în cel puțin a treia formă normală. În consecință, vom lua în considerare primele trei forme normale. Să reamintim că avem de-a face cu tabele care satisfac cele două cerințe de bază formulate mai sus.

Prima formă normală (1NF)

Prima formă normală dictează că toate datele conținute într-un tabel trebuie să fie atomice(indivizibil). Lista tipurilor de date atomice corespunzătoare este determinată de SGBD. Cerința 1NF este complet naturală. Înseamnă că fiecare câmp al fiecărei înregistrări ar trebui să conțină o singură valoare, și nu o matrice sau orice altă structură de date. Să dăm un exemplu semnificativ de tabel care nu este în 1NF. Să avem liste cu notele elevilor la o anumită materie.

Deoarece valoarea câmpului Evaluări nu este atomică, tabelul nu îndeplinește cerințele 1NF.

O posibilă modalitate de a prezenta o listă de evaluări este descrisă în instrucțiunile pentru articol. „Design DB” 2.

A doua formă normală (2NF)

Se spune că un tabel este în a doua formă normală dacă este în 1NF și fiecare coloană fără cheie este complet dependentă de cheia primară. Cu alte cuvinte, valoarea fiecărui câmp trebuie să fie determinată în întregime de valoarea cheii primare. Este important de menționat că dependența de o cheie primară este înțeleasă tocmai ca o dependență de cheie în ansamblu, și nu de componenta sa individuală (în cazul unei chei compuse). Să dăm un exemplu de tabel care nu este în 2NF. Pentru a face acest lucru, să revenim la exemplul prognozei meteo și să adăugăm o altă coloană la tabel - ora răsăritului (acesta este un exemplu complet plauzibil; acest tip de informații sunt adesea furnizate pe site-urile de prognoză meteo).

După cum ne amintim, acest tabel are o cheie compusă Data+Ora zilei. Câmpul Temperatură este complet dependent de cheia primară - nu există probleme cu acesta. Dar câmpul Răsărit depinde doar de câmpul Data. Ora zilei nu afectează în mod natural ora răsăritului.

Aici este potrivit să punem întrebarea: care este sensul practic al 2NF? Care este beneficiul acestor restricții? Se dovedește că este mare. Să presupunem că în exemplul de mai sus, dezvoltatorul ignoră cerințele 2NF. În primul rând, cel mai probabil va exista un așa-numit redundanţă- stocarea datelor inutile. La urma urmei, dacă pentru o înregistrare cu o dată dată, ora răsăritului este deja stocată, atunci pentru toate celelalte înregistrări cu o dată dată ar trebui să fie aceeași și, în general, nu este nevoie să o stocați.

Să fim atenți la cuvintele „ar trebui să fie”. Ce se întâmplă dacă nu? La urma urmei, la nivelul bazei de date, acest lucru nu este controlat în niciun fel - cheia din tabel este compusă, pot exista date identice (și în ceea ce privește semnificația, cel mai probabil vor exista). Și nicio restricție formală (și înțelegerea noastră că „asta nu se poate întâmpla” nu este una dintre ele) interzice indicarea orelor diferite de răsărit pentru aceeași dată.

A treia formă normală (3NF)

Se spune că un tabel este în 3NF dacă este 2NF și toate coloanele care nu sunt cheie sunt independente reciproc.

Dependența reciprocă a coloanelor este convenabil înțeleasă după cum urmează: Coloanele sunt reciproc dependente dacă este imposibil să schimbați una dintre ele fără a o schimba pe cealaltă.

Să dăm un exemplu de tabel care nu este în 3NF. Să luăm în considerare un exemplu de notebook simplu pentru stocarea numerelor de telefon de acasă ale persoanelor care locuiesc, poate, în diferite regiuni ale țării.

Acest tabel are o dependență între coloanele non-cheie Oraș și Cod oraș, prin urmare tabelul nu este în 3NF.

Rețineți că dezvoltatorul determină prezența dependenței de mai sus analizând domeniul subiectului - o astfel de coliziune nu poate fi văzută prin nicio metodă formală. La modificarea proprietăților domeniului subiectului, dependența dintre coloane poate dispărea. De exemplu, dacă în același oraș sunt introduse coduri diferite (cum ar fi 495 și 499 în Moscova), coloanele corespunzătoare nu mai sunt legate în ceea ce privește încălcarea cerințelor 3NF.

În teoria bazelor de date relaționale sunt considerate și forme de ordin superior - forma normală Boyce-Codd, 4NF, 5NF și chiar mai mare. Aceste forme nu au o semnificație practică prea mare, iar dezvoltatorii, de regulă, se opresc întotdeauna la 3NF.

Normalizarea bazei de date

Normalizarea este procesul de reducere a tabelelor bazei de date la o formă normală selectată. Normalizarea la 2NF, de regulă, se reduce la descompunere - împărțirea unui tabel în mai multe. Normalizarea la 3NF poate fi realizată de obicei prin eliminarea coloanelor dependente (calculate). În unele cazuri, atunci când normalizați la 3NF, trebuie să efectuați și descompunerea.

Baze de date cu mai multe tabele, relații între tabele, chei externe

În practică, bazele de date cu un singur tabel sunt destul de rare, deoarece din punctul de vedere al modelării unei baze de date de domeniu, prezența unui singur tabel înseamnă prezența unei entități. La rândul său, prezența mai multor entități înseamnă de obicei prezența unor legături între ele.

Fără a stabili scopul unui design complet de baze de date, să luăm în considerare un exemplu care ne permite să demonstrăm relațiile în baze de date cu mai multe tabele.

Să presupunem că avem de-a face cu o școală în care sunt elevi grupați pe clase și profesori care predau anumite materii. Deosebim imediat patru entități: elevi, profesori, clase și obiecte. Aceste entități ne oferă deja patru tabele.

În continuare, trebuie să decidem problema atributelor entității - ce fel de informații vom stoca. Deoarece exemplul nostru este doar în scop demonstrativ, vom încerca să minimizăm cantitatea de informații stocate. Vom fi de acord să păstrăm numele de familie și prenumele pentru fiecare elev, pentru clasă - numărul paralel și litera de identificare a clasei în cadrul paralelei, pentru profesor - numele de familie, prenumele și patronimul, pentru materie - doar numele acesteia .

Acum trebuie să rezolvăm problema cu cheile primare. Tabelele elevilor și profesorului practic nu au o cheie, așa că vom introduce o cheie numerică surogat în ele - un număr. Tabelele de clase și articole, în general, au chei. În tabelul de clase, cheia este compusă, este formată din atributele Număr paralel + Literă, iar în tabelul de obiecte, o cheie simplă este formată dintr-un singur câmp - numele obiectului. Reamintim că atunci când am vorbit despre chei, am menționat că cheile surogat sunt adesea adăugate din motive de eficiență, încercând să scăpăm de cheile compuse sau câmpurile cheie de tipuri incomode, cum ar fi șirurile de caractere. Asta vom face. Să adăugăm o cheie numerică surogat la fiecare dintre tabele.

Ca urmare, vom primi următorul set de tabele corespunzătoare entităților descrise.

Înțelegând de ce domeniu ne ocupăm, știm că entitățile noastre nu există de la sine - sunt conectate prin anumite relații pe care le-am subliniat mai sus. Dar cum să le conectăm din punct de vedere tehnic? Aici nu puteți face fără introducerea de câmpuri suplimentare și chiar tabele suplimentare. Să ne uităm la relațiile dintre entități în ordine.

Pentru a atribui un elev la o anumită clasă, adăugăm un câmp suplimentar Număr de clasă în tabelul „Student”. (Este clar că tipul său trebuie să coincidă complet cu tipul câmpului Numărul clasei din tabelul „Clasă”.) Acum putem lega tabelele „Student” și „Clasă” folosind valorile potrivite ale câmpurilor Numărul clasei. (Nu întâmplător am numit aceste câmpuri la fel, în practică Acest lucru se face adesea pentru a naviga cu ușurință în câmpurile de legătură). Rețineți că o înregistrare din tabelul „Clasă” poate corespunde multor înregistrări din tabelul „Student” (și, în practică, cel mai probabil corespunde - este dificil să vă imaginați o clasă de un student). Se spune că astfel de tabele sunt legate de relația „ unu la multi" Și câmpul Număr de clasă din tabelul „Student” este numit cheie externă. După cum puteți vedea, scopul cheilor externe este de a lega tabele. Rețineți că o cheie externă se referă întotdeauna la cheia primară a tabelului aferent (adică cheia externă se află pe partea „multe”). Cheia primară asociată cu o străină este apelată părintească, deși acest termen este folosit mai rar.

Să ilustrăm acest lucru cu o diagramă în stilul Microsoft Access (mai multe informații despre „Schema de date” Access sunt scrise în articol „Descrierea datelor” 2).

Acum să ne gândim la profesori și materii. Analizând tematica (asta este singura modalitate - la urma urmei, este imposibil să extragem adevărata stare a lucrurilor din modelul formal în sine), observăm că tipul de legătură dintre entitățile „profesor” și „subiect” este diferit. din cele discutate mai sus. La urma urmei, nu numai că mulți profesori pot preda o singură materie, dar un profesor poate preda multe discipline. Astfel, există o legătură între aceste entități” multi la multi" Aici nu te poți descurca fără să introduci câmpuri suplimentare (încearcă!). Relațiile de la mulți la mulți sunt întotdeauna rezolvate prin introducerea unui tabel suplimentar. Și anume, organizăm tabelul „Profesor-Subiect”, care are următoarea structură:

Tabel „Profesor-Materia”

Acest tabel are o cheie compusă formată din două dintre câmpurile sale. Atât tabelul „Profesor”, cât și tabelul „Subiect” sunt legate de acest tabel într-o relație unu-la-mai mulți (desigur, în ambele cazuri „mulți” se află pe partea „Profesor-Subiect”). În consecință, în tabelul „Profesor-Subiect” există două chei străine (ambele sunt părți ale unei chei primare compuse, care nu este interzisă), care servesc la conectarea cu tabelele corespunzătoare.

În practică, pe lângă relațiile considerate „unu-la-mulți” și „mulți-la-mulți”, există și relația „ unu la unu" Din punct de vedere teoretic, o astfel de relație nu prezintă interes, deoarece două tabele conectate printr-o relație unu-la-unu pot fi întotdeauna combinate într-unul singur. Cu toate acestea, în bazele de date reale, o relație unu-la-unu este utilizată pentru a optimiza procesarea datelor. Să ilustrăm acest lucru cu un exemplu.

Să presupunem că stocăm o mulțime de informații diferite despre oameni - date din tot felul de documente, numere de telefon, adrese etc. Cel mai probabil, majoritatea acestor date vor fi folosite foarte rar. Și de multe ori avem nevoie doar de un nume de familie, prenume, patronimic și număr de telefon. Apoi, are sens să organizezi două mese și să le relaționezi într-o relație unu-la-unu. Stocați informațiile utilizate frecvent într-un tabel (mic), iar restul într-un altul. Desigur, tabelele legate printr-o relație unu-la-unu au aceeași cheie primară.

Reguli de integritate

Modelul relațional definește două reguli generale pentru integritatea bazei de date: integritatea obiectului și integritatea referențială.

Regula de integritate obiecte foarte simplu. Aceasta necesită ca cheile primare de tabel să nu conțină valori nule (nule)..

Regula de integritate referenţială cere ca cheile străine să nu conțină valori care sunt incompatibile cu cheile lor părinte. Revenind la exemplul discutat mai sus, trebuie să cerem, de exemplu, ca elevii să aparțină numai clasei al cărei număr este indicat în tabelul „Clasuri”.

Majoritatea SGBD-urilor sunt capabile să monitorizeze integritatea datelor (desigur, acest lucru necesită eforturi corespunzătoare din partea dezvoltatorului în etapa de descriere a structurilor de date). În special, mecanismele sunt utilizate pentru a menține integritatea referențială în cascadă operațiuni. Cascada implică, în special, că, atunci când ștergeți o înregistrare dintr-un tabel „părinte” care este conectat la un alt tabel printr-o relație unu-la-mai mulți, toate înregistrările asociate sunt șterse automat din tabelul „mai multe” (de către SGBD însuși, fără intervenția utilizatorului). Și acest lucru este firesc, deoarece astfel de înregistrări „atârnă în aer” nu mai sunt legate de nimic.

Indexarea

Indexarea este extrem de importantă din punct de vedere al aplicării practice, dar opțională din punctul de vedere al teoriei pure. Scopul principal al indexării este optimizarea (accelerarea) căutării (și, în consecință, alte operațiuni cu baza de date). Indexarea necesită în orice caz resurse suplimentare (fișierele index speciale sunt cel mai adesea create la nivel fizic). Indexarea poate chiar încetini operațiunile legate de modificarea datelor, prin urmare, tabelele care sunt rar modificate și căutate frecvent sunt de obicei indexate.

Un fișier index este foarte asemănător cu un index obișnuit de carte. Pentru fiecare valoare de index, este stocată o listă de rânduri de tabel care conțin acea valoare. În consecință, pentru a căuta, nu trebuie să vă uitați prin întregul tabel - doar căutați în index. Cu toate acestea, atunci când modificați înregistrările, poate fi necesar să reconstruiți indexul. Și asta necesită timp suplimentar.

Desigur, nu se pune problema de a prezenta teoria bazelor de date relaționale ca parte a unui curs de bază de informatică! Cu toate acestea, acest articol este foarte important pentru enciclopedia noastră, deoarece în acest caz avem de-a face cu materiale care nu pot fi prezentate pe deplin în lecții, dar profesorul trebuie să-l stăpânească. De ce?

În primul rând, pentru că o serie de concepte sunt studiate în cadrul cursului de bază. Aceasta include o vizualizare de tabel a datelor și cheilor de tabel. Și știm cu toții că este foarte dificil să prezinți corect și precis doar unele concepte fără a prezenta imaginea de ansamblu.

În al doilea rând, efectuarea de interogări simple în baza de date cu copii (materialul relevant este prezentat în articol "Procesarea datelor" 2), este necesar să ne ocupăm de tabele care sunt corecte din punctul de vedere al teoriei relaționale. Nu este nevoie să le explicați elevilor că aceste tabele sunt corecte, dar „dacă doar..., atunci tabelul ar fi incorect”, dar este inacceptabil să folosiți exemple proaste.

Într-un curs specializat de informatică, situația poate fi fundamental diferită. Cea mai importantă și extrem de productivă formă de muncă în clase de specialitate este munca pe proiecte. În cadrul proiectelor educaționale, este posibil și necesar să se dezvolte baze de date simple, iar aici nu se poate face fără fundamentele teoriei prezentate. Cu toate acestea, trebuie luate în considerare următoarele:

Domeniile modelate nu trebuie să fie prea mari;

Ar trebui să fie foarte familiari studenților (în acest sens, proiectul „Școala”, de care toată lumea s-a săturat, nu este cea mai proastă alegere!);

Este naiv să ne așteptăm ca, după ce au ascultat elementele de bază ale teoriei, studenții vor putea să proiecteze ei înșiși ceva. Trebuie să parcurgeți fiecare pas cu ei, justificându-vă acțiunile în detaliu.

2. Principiile modelului relaţional

Principii ale modelului bazei de date relaționale, relație, tabel, set de rezultate, tuplu, cardinalitate, atribut, dimensiune, antet, corp, domeniu

Modelul relațional a fost dezvoltat la sfârșitul anilor 1960 de E.F. Codd (un angajat IBM) și publicat în 1970. El definește modul în care sunt reprezentate datele (structura datelor), metodele de protecție a datelor (integritatea datelor) și operațiunile care pot fi efectuate. asupra datelor (manipularea datelor).

Modelul relațional nu este singurul care poate fi folosit atunci când se lucrează cu date. Există și model ierarhic, model de rețea, model stea etc. Cu toate acestea, modelul relațional s-a dovedit a fi cel mai convenabil și, prin urmare, este acum cel mai utilizat pe scară largă.

Principiile de bază ale bazelor de date relaționale pot fi formulate după cum urmează:

· Toate datele la nivel conceptual sunt reprezentate sub forma unei organizații ordonate, definite sub formă de rânduri și coloane și numite relație. Un sinonim mai comun pentru cuvântul „relație” este un tabel (sau un „set de înregistrări”, sau un set de rezultate. De aici provine termenul „baze de date relaționale” și deloc din relațiile dintre tabele;

· toate valorile sunt scalare. Aceasta înseamnă că pentru orice rând și coloană a oricărei relații, există una și o singură valoare;

· toate operatiile sunt efectuate asupra intregii relatii iar rezultatul acestor operatii este si intreaga relatie. Acest principiu se numește închidere. Prin urmare, rezultatele unei operații (de exemplu, o interogare) pot fi utilizate ca intrare pentru efectuarea unei alte operații (o subinterogare).

Acum - despre terminologia formală:

· atitudine(relația) este întreaga structură, un set de înregistrări (în sensul obișnuit - un tabel).

· caravană este fiecare rând care conține date. Un termen mai comun, dar mai puțin formal este notația.

· putere- numărul de tupluri din relație (cu alte cuvinte, numărul de înregistrări);

· atribut este o coloană într-o relație;

· dimensiune- acesta este numărul de atribute din relație (în acest caz - 3);

Fiecare relație poate fi împărțită în două părți - titluȘi corp. Într-un limbaj simplu, capul unei relații este o listă de coloane, iar corpul este înregistrările în sine (tupluri).

· în exemplul nostru, numele fiecărei coloane (atribut) este format din două cuvinte separate prin două puncte. Conform definițiilor formale, prima parte este Numele atributului(numele coloanei) iar partea a doua este domeniu(tipul de date pe care le reprezintă coloana de date). Conceptele „domeniu” și „tip de date” nu sunt echivalente între ele. În practică, domeniul este de obicei omis.

· corpul relației este format dintr-un set neordonat de tupluri (numărul său poate fi oricare - de la 0 la infinit de mare).

Un model de date este un set de structuri de date și operațiuni pentru prelucrarea lor. Folosind un model de date, puteți reprezenta vizual structura obiectelor și relațiile stabilite între ele. Terminologia modelului de date este caracterizată de conceptele de „element de date” și „reguli obligatorii”. Un element de date descrie orice set de date, iar regulile de asociere definesc algoritmi pentru interconectarea elementelor de date. Până în prezent, au fost dezvoltate multe modele de date diferite, dar în practică sunt utilizate trei modele principale. Există modele de date ierarhice, de rețea și relaționale. În consecință, se vorbește despre SGBD-uri ierarhice, de rețea și relaționale.

O Model ierarhic de date. Datele organizate ierarhic sunt foarte frecvente în viața de zi cu zi. De exemplu, structura unei instituții de învățământ superior este o structură ierarhică cu mai multe niveluri. O bază de date ierarhică (arboresc) constă dintr-un set ordonat de elemente. În acest model, elementele inițiale dau naștere altor elemente, iar aceste elemente, la rândul lor, dau naștere la elemente ulterioare. Fiecare element copil are un singur element părinte.

Structurile organizaționale, listele de materiale, cuprinsul din cărți, planurile de proiect și multe alte seturi de date pot fi prezentate într-o formă ierarhică. Integritatea legăturilor dintre strămoși și descendenți este menținută automat. Regula de bază: niciun copil nu poate exista fără părintele său.

Principalul dezavantaj al acestui model este necesitatea de a utiliza ierarhia care a stat la baza bazei de date în timpul proiectării. Nevoia de reorganizare constantă a datelor (și adesea imposibilitatea acestei reorganizări) a condus la crearea unui model mai general - un model de rețea.

O Model de date de rețea. Abordarea în rețea a organizării datelor este o extensie a abordării ierarhice. Acest model diferă de cel ierarhic prin faptul că fiecare element generat poate avea mai mult de un element generator. ■

Deoarece o bază de date de rețea poate reprezenta direct tot felul de relații inerente datelor organizației corespunzătoare, aceste date pot fi navigate, explorate și interogate în diferite moduri, adică modelul de rețea nu este legat de o singură ierarhie. Cu toate acestea, pentru a face o cerere către o bază de date de rețea, este necesar să se aprofundeze în structura acesteia (să aveți la îndemână schema acestei baze de date) și să dezvoltați un mecanism de navigare în baza de date, ceea ce este un dezavantaj semnificativ al acestui model de bază de date. .

O Model de date relaționale. Ideea de bază a unui model de date relaționale este de a reprezenta orice set de date ca un tabel bidimensional. În forma sa cea mai simplă, un model relațional descrie un singur tabel bidimensional, dar cel mai adesea, modelul descrie structura și relațiile dintre mai multe tabele diferite.

Model de date relaționale

Deci, scopul sistemului informatic este de a procesa date despre obiecte lumea reală, ținând cont conexiuniîntre obiecte. În teoria bazelor de date, datele sunt adesea numite atribute și obiecte - entitati. Obiectul, atributul și conexiunea sunt concepte fundamentale ale I.S.

Un obiect(sau esența) este ceva care există și distins, adică un obiect poate fi numit acel „ceva” pentru care există un nume și o modalitate de a distinge un obiect similar de altul. De exemplu, fiecare școală este un obiect. Obiectele sunt, de asemenea, o persoană, o clasă la școală, o companie, un aliaj, un compus chimic etc. Obiectele pot fi nu numai obiecte materiale, ci și concepte mai abstracte care reflectă lumea reală. De exemplu, evenimente, regiuni, opere de artă; cărți (nu ca produse tipărite, ci ca lucrări), spectacole de teatru, filme; norme juridice, teorii filozofice etc.

Atribut(sau dat)- acesta este un anumit indicator care caracterizează un anumit obiect și ia o anumită valoare numerică, text sau altă valoare pentru o anumită instanță a obiectului. Sistemul informațional funcționează cu seturi de obiecte proiectate în raport cu un anumit domeniu, utilizând specific valorile atributelor(date) anumitor obiecte. De exemplu, să luăm cursuri într-o școală ca un set de obiecte. Numărul de elevi dintr-o clasă este o dată care capătă o valoare numerică (o clasă are 28, alta are 32). Numele clasei este unul dat care ia o valoare text (unul are 10A, altul are 9B etc.).

Dezvoltarea bazelor de date relaționale a început la sfârșitul anilor 60, când au apărut primele lucrări care au discutat; posibilitatea utilizării unor modalități familiare și naturale de prezentare a datelor - așa-numitele modele datalogice tabulare - la proiectarea bazelor de date.

Fondatorul teoriei bazelor de date relaționale este considerat a fi un angajat IBM, Dr. E. Codd, care a publicat un articol pe 6 iunie 1970. Un model relațional de date pentru bănci de date mari partajate(Model de date relaționale pentru bănci mari de date colective). Acest articol a fost primul care a folosit termenul „model de date relaționale”. Teoria bazelor de date relaționale, dezvoltată în anii 70 în SUA de Dr. E. Codd, are o bază matematică puternică care descrie regulile de organizare eficientă a datelor. Cadrul teoretic dezvoltat de E. Codd a devenit baza pentru dezvoltarea teoriei proiectării bazelor de date.

E. Codd, matematician de pregătire, a propus să utilizeze aparatul teoriei mulţimilor (unire, intersecţie, diferenţă, produs cartezian) pentru prelucrarea datelor. El a demonstrat că orice set de date poate fi reprezentat sub formă de tabele bidimensionale de un tip special, cunoscute în matematică ca „relații”.

Relațional O bază de date este considerată a fi una în care toate datele sunt prezentate utilizatorului sub formă de tabele dreptunghiulare cu valorile datelor, iar toate operațiunile din baza de date sunt reduse la manipulări cu tabele.

Tabelul este format din coloane (câmpuri)Și linii (înregistrări); are un nume unic în baza de date. Masa reflectă Tipul obiectului lumea reala (entitate),și fiecare dintre ei șir este un obiect specific. Fiecare coloană a tabelului este o colecție de valori pentru un anumit atribut al unui obiect. Valorile sunt selectate din setul tuturor valorilor posibile pentru un atribut al obiectului, care este numit domeniu.

În forma sa cea mai generală, un domeniu este definit prin specificarea unui tip de date de bază căruia îi aparțin elementele domeniului și o expresie booleană arbitrară aplicată elementelor de date. Dacă evaluați o condiție booleană pentru un element de date și rezultatul este adevărat, atunci acel element aparține domeniului. În cel mai simplu caz, un domeniu este definit ca un set potențial valid de valori de același tip. De exemplu, colecția datelor de naștere ale tuturor angajaților constituie „domeniul datei de naștere”, iar numele tuturor angajaților constituie „domeniul numelui angajatului”. Domeniul data nașterii trebuie să aibă un tip de date punct-in-time, iar domeniul numelui angajatului trebuie să aibă un tip de date caracter.

Dacă două valori provin din același domeniu, atunci se poate face o comparație între cele două valori. De exemplu, dacă două valori sunt luate din domeniul datelor de naștere, le puteți compara și determina care angajat este mai în vârstă. Dacă valorile sunt luate din domenii diferite, atunci compararea lor nu este permisă, deoarece, după toate probabilitățile, nu are sens. De exemplu, nu va rezulta nimic cert din compararea numelui și a datei de naștere a unui angajat.

Fiecare coloană (câmp) are un nume, care este de obicei scris în partea de sus a tabelului. Când proiectați tabele într-un anumit SGBD, este posibil să selectați pentru fiecare câmp acesta tip, adică să definească un set de reguli pentru afișarea acestuia, precum și să determine operațiunile care pot fi efectuate asupra datelor stocate în acest câmp. Seturile de tipuri pot varia între diferitele SGBD.

Numele câmpului trebuie să fie unic în tabel, dar tabele diferite pot avea câmpuri cu același nume. Orice tabel trebuie să aibă cel puțin un câmp; câmpurile sunt amplasate în tabel în conformitate cu ordinea în care au apărut numele lor când a fost creat. Spre deosebire de câmpuri, șirurile de caractere nu au nume; ordinea lor în tabel nu este definită, iar numărul lor este logic nelimitat.

Deoarece rândurile din tabel nu sunt ordonate, este imposibil să selectați un rând după poziția sa - nu există „primul”, „al doilea” sau „ultimul” printre ele. Orice tabel are una sau mai multe coloane, ale căror valori identifică în mod unic fiecare dintre rândurile sale. O astfel de coloană (sau combinație de coloane) este numită cheia principala. Un câmp artificial este adesea introdus în înregistrările numerice dintr-un tabel. Un astfel de câmp, de exemplu, ar putea fi câmpul său ordinal, care poate asigura unicitatea fiecărei înregistrări din tabel. Cheia trebuie să aibă următoarele proprietăți.

Unicitatea. La un moment dat, nu există două tupluri de relații diferite să aibă aceeași valoare pentru combinația de atribute incluse în cheie. Adică nu pot exista două rânduri în tabel care să aibă același număr de identificare sau număr de pașaport.

Minimalism. Niciunul dintre atributele incluse în cheie nu poate fi exclus din cheie fără a încălca unicitatea. Aceasta înseamnă că nu ar trebui să creați o cheie care să includă atât numărul pașaportului, cât și numărul de identificare. Este suficient să folosiți oricare dintre aceste atribute pentru a identifica unic un tuplu. De asemenea, nu ar trebui să includeți un atribut neunic în cheie, adică utilizarea unei combinații a unui număr de identificare și a numelui unui angajat ca cheie este interzisă. Prin excluderea numelui angajatului din cheie, fiecare rând poate fi identificat în mod unic.

Fiecare relație are cel puțin o cheie posibilă, deoarece totalitatea tuturor atributelor sale satisface condiția unicității - aceasta rezultă din însăși definiția relației.

Una dintre cheile posibile este selectată aleatoriu în ca cheie primară. Cheile posibile rămase, dacă există, sunt luate ca chei alternative. De exemplu, dacă selectați un număr de identificare ca cheie primară, atunci numărul pașaportului va fi cheia alternativă.

Relația dintre tabele este cel mai important element al modelului de date relaționale. Este suportat chei externe.

Atunci când se descrie un model de bază de date relațională, sunt adesea folosiți termeni diferiți pentru același concept, în funcție de nivelul de descriere (teorie sau practică) și de sistem (Access, SQL Server, dBase). În tabel 2.3 oferă un rezumat al termenilor utilizați.

Tabelul 2.3. Terminologia bazei de date

Teoria bazelor de date____________ Baze de date relaționale_________ SQL Server __________

Tabelul de relații Tabelul

Rând de înregistrare tuplu

AttributeField_______________Column

Baze de date relaționale

Baza de date relațională este un set de relații care conțin toate informațiile care trebuie stocate în baza de date. Adică baza de date reprezintă un set de tabele necesare pentru a stoca toate datele. Tabelele unei baze de date relaționale sunt legate logic între ele. Cerințele pentru proiectarea unei baze de date relaționale în general pot fi reduse la mai multe reguli.

О Fiecare tabel are un nume unic în baza de date și este format din rânduri de același tip.

O Fiecare tabel constă dintr-un număr fix de coloane și valori. Mai multe valori nu pot fi stocate într-o singură coloană de rând. De exemplu, dacă există un tabel cu informații despre autor, data publicării, tiraj etc., atunci coloana cu numele autorului nu poate stoca mai mult de un nume de familie. Dacă cartea este scrisă de doi sau mai mulți autori, va trebui să utilizați tabele suplimentare.

O În niciun moment nu vor exista două rânduri în tabel care să se dubleze reciproc. Rândurile trebuie să difere în cel puțin o valoare pentru a putea identifica în mod unic orice rând din tabel.

О Fiecărei coloane i se atribuie un nume unic în tabel; un anumit tip de date este setat pentru acesta, astfel încât în ​​această coloană să fie plasate valori omogene (date, nume de familie, numere de telefon, sume monetare etc.).

O Conținutul complet de informații al unei baze de date este reprezentat ca valori explicite ale datelor în sine, iar aceasta este singura metodă de reprezentare. De exemplu, relațiile dintre tabele se bazează pe datele stocate în coloanele corespunzătoare și nu pe baza oricăror indicatori care definesc în mod artificial relațiile.

О Când procesați date, puteți accesa liber orice rând sau orice coloană a tabelului. Valorile stocate în tabel nu impun nicio restricție cu privire la ordinea în care sunt accesate datele. Descrierea coloanelor,

II. Model de rețea

III. Model relațional

înregistrarecamp

ierarhicȘi modele de rețea chei externe


4. Model de date relaționale

Baza de date relațională

* Atitudine

* Atribut coloană (câmp) Mese.

* Tip de date

* Conexiune cheie.

* O asociere

Principal funcții RDBMS sunt:

· Definirea datelor

· Procesarea datelor

· Management de date

Microsoft Access

Fereastra bază de date în Access



Moduri de lucru cu obiecte

Butoanele pentru lucrul cu obiectele bazei de date sunt situate pe Bara de instrumente a ferestrei bazei de date:

Deschis– vă permite să treceți la modul de editare a unui tabel, de executare a unei interogări, de încărcare a unui formular, de construire a unui raport, de rulare a unei macrocomenzi.

Constructor– asigură tranziția la modul de configurare al obiectului selectat.

Crea– vă permite să începeți crearea unui nou obiect de tipul selectat.

7. Lucrul cu tabele

Pentru a crea un tabel, trebuie să mergeți la lista de tabele și să faceți clic pe butonul Crea . Va apărea o nouă casetă de dialog Masa noua:

Puteți crea un tabel în Access în mai multe moduri:

· construi un nou tabel „de la zero” folosind Designer;

· lansa Vrăjitor de masă– un program special care oferă crearea unui tabel într-un mod pas cu pas pe baza soluțiilor standard disponibile în Access;

· importați un tabel de bază de date dintr-un fișier de program, de exemplu, FoxPro sau Excel.

Specificarea unui nume de câmp

Numele câmpului este specificat în coloană Numele domeniului. Numele poate conține maximum 64 de caractere, cu orice caractere permise, cu excepția punctelor, a semnelor de exclamare și a parantezelor unghiulare. Nu este permisă repetarea numelor de câmpuri.

Definiția tipului de date

Pentru fiecare câmp, trebuie să specificați tipul de date pe care îl conține. Tipul de date este selectat dintr-o listă care poate fi apelată făcând clic pe coloană Tip de date. Access operează pe următoarele tipuri de date:

Ø Text– pentru stocarea textului simplu cu un număr maxim de caractere de 255.

Ø Câmp MEMO– pentru stocarea unor cantități mari de text de până la 65.535 de caractere.

Ø Numeric– pentru stocarea numerelor reale.

Ø Data Ora– pentru stocarea datelor calendaristice și a orei curente.

Ø Monetar– aceste câmpuri conțin sume bănești.

Ø Tejghea– pentru a determina cheia unică de sistem a tabelului. Utilizat de obicei pentru numerotarea secvențială a înregistrărilor. Când o înregistrare nouă este adăugată la tabel, valoarea acestui câmp crește cu 1 (unul). Valorile din astfel de câmpuri nu sunt actualizate.

Ø logic – pentru stocarea datelor care iau valori: Da sau Nu.

Ø Câmp obiect OLE– pentru stocarea obiectelor create în alte aplicații.

Descrierea proprietăților câmpului

După cum sa menționat deja, caracteristicile câmpurilor individuale sunt definite în zona de proprietăți a câmpului (fila Sunt comune). Fiecare câmp are un set specific de proprietăți, în funcție de tipul câmpului. Unele tipuri de câmpuri au seturi similare de proprietăți de câmp. Principalele proprietăți ale câmpurilor sunt enumerate mai jos.

Ø Dimensiunea campului– lungimea maximă a unui câmp de text (50 de caractere în mod implicit) sau tipul de date al unui câmp numeric. Este recomandat să setați această proprietate la valoarea minimă posibilă deoarece dimensiunile mai mici ale datelor sunt procesate mai rapid.

Dacă tipul de date este numeric, sunt permise următoarele valori de proprietate: Dimensiunea campului:

cometariu. Dacă câmpul este convertit la o dimensiune mai mică, poate apărea pierderea datelor.

Ø Format câmp– format pentru afișarea datelor pe ecran sau printare. De obicei, este utilizat formatul implicit.

Ø Numărul de zecimale– setează numărul de zecimale după virgulă pentru tipurile de date numerice și valutare.

Ø Mască de intrare– definește forma în care datele sunt introduse în câmp (instrument de automatizare a introducerii datelor).

Ø Semnătură– desemnarea câmpului care va fi utilizat pentru afișarea câmpului într-un tabel, formular sau raport. Dacă această valoare nu este definită, numele câmpului va fi luat drept semnătură.

Ø Valoare implicită– valoare standard care este introdusă automat în câmp la crearea unei noi înregistrări de date.

Ø Condiție de valoare– stabilește restricții asupra valorilor introduse, permițând astfel controlul asupra corectitudinii introducerii datelor.

Ø Mesaj de eroare– setează textul mesajului afișat pe ecran dacă se încalcă condiția privind valoarea.

Ø Câmp obligatoriu– determină dacă acest câmp poate conține valori nule (adică rămâne gol) sau dacă datele trebuie introduse în acest câmp.

Ø Câmp indexat– folosit pentru operațiuni de căutare și sortare a înregistrărilor după valoarea stocată în acest câmp, precum și pentru eliminarea automată a înregistrărilor duplicate. Câmpuri de tip NOTIFICARE, obiect OLEȘi Hyperlink nu poate fi indexat.

Definirea câmpului cheie

După specificarea caracteristicilor tuturor câmpurilor, trebuie să selectați cel puțin un câmp cheie. De regulă, câmpurile care au date care nu se repetă sunt specificate ca câmpuri cheie sau sunt create câmpuri cu tipul de date Tejghea . În orice caz, câmpul cheie nu trebuie să conțină date duplicat. Pentru a defini o cheie, trebuie să selectați câmpul (sau câmpurile) dorite și să faceți clic pe butonul Câmp cheie Editați | × . O imagine a unei chei va apărea în stânga marcatorului.

Salvarea unei mese

Înainte de a introduce informații, tabelul proiectat trebuie salvat: apăsați butonul Salvați pe bara de instrumente sau comanda corespunzătoare în p.m. Fişier și introduceți numele tabelului, după care pe ecran apare întrebarea „Creați un câmp cheie acum?”. (Da sau nu)

Dacă răspunsul este „ da„, apoi Access va crea automat un câmp cu numele „Cod” și tipul de date Tejghea , Dacă " Nu", atunci tabelul va fi creat fără un câmp cheie. În acest caz, trebuie să deschideți tabelul creat în modul Designerși definiți manual câmpul cheie.

Introducere a datelor

Pentru a comuta tabelul în modul de introducere a informațiilor, trebuie să treceți la modul Mese. Câmpurile sunt completate secvenţial. Este convenabil să treceți de la un câmp la altul folosind tasta Tab(sau o combinație Shift+Tab– în sens invers). Dacă tabelul a fost conceput cu valori implicite pentru unele câmpuri, aceste valori vor apărea automat în câmpurile corespunzătoare. Înregistrările dintr-un tabel pot fi mutate, copiate și șterse în aceleași moduri ca în foile de calcul, adică mai întâi selectați rândurile și apoi efectuați operația necesară. Puteți selecta o coloană făcând clic pe antet. Coloanele pot fi mutate la stânga și la dreapta folosind metoda tragere și plasare(tragere și plasare).

Dacă este necesar, puteți reveni la modul Designer. Acest lucru face posibilă corectarea oricăror din structura tabelului.

Sortarea datelor într-un tabel

Datele din tabel pot fi sortate în ordine crescătoare sau descrescătoare. Pentru a face acest lucru, trebuie să plasați cursorul mouse-ului în orice celulă a coloanei, ale cărei valori vor fi sortate de la p.m. Postări selectați o echipă Triere sau faceți clic pe butonul corespunzător din panou.

8. Crearea conexiunilor între tabelele bazei de date

Relația dintre tabele se stabilește prin definirea într-un singur tabel ( subordonat) câmp corespunzător cheii altui tabel ( principal). Relația stabilită va lega înregistrările care conțin aceleași valori în câmpul specificat. Access va folosi ulterior conexiunile pe care le creați în interogări, formulare sau rapoarte.

Note.

Ø Ambele câmpuri care urmează să fie legate trebuie să aibă aceleași tip de date.

Ø Proprietăţi Dimensiunea campului pentru ambele câmpuri legate tip numeric ar trebui să fie la fel.

Ø Dacă câmpul cheie al tabelului principal este un câmp cu un tip de date Tejghea, atunci acest câmp poate fi asociat cu un câmp numeric din subtabel. În acest caz, pentru câmpul numeric al tabelului legat pentru proprietate Dimensiunea campului trebuie specificată valoarea Număr întreg lung .

Integritatea datelor

Integritatea datelor este un set de reguli care mențin corectitudinea relațiilor dintre înregistrările din tabelele aferente și protejează datele de modificări sau ștergeri accidentale.

Aceste reguli includ:

Ø Nu puteți introduce înregistrări într-un subtabel care nu sunt legate de o înregistrare din tabelul principal.

Ø În tabelul principal, nu puteți modifica valoarea unui câmp cheie dacă există înregistrări în subtabel care îi sunt asociate.

Ø Nu puteți șterge înregistrări dintr-un tabel principal dacă există înregistrări asociate cu acesta într-un subtabel.

Operații în cascadă

Integritatea datelor din tabelele aferente este asigurată de două tipuri de operații în cascadă:

Ø operațiuni de actualizare în cascadă;

Ø operațiuni de ștergere în cascadă.

Aceste operațiuni pot fi activate sau dezactivate bifând casetele de selectare corespunzătoare: „Actualizare în cascadă a câmpurilor aferente” și „Ștergerea în cascadă a câmpurilor aferente”.

Dacă caseta de selectare „Actualizare în cascadă a câmpurilor conexe” este bifată, atunci orice modificare a valorii unui câmp cheie din tabelul principal care se află pe partea „unui” a unei relații 1:M actualizează automat valorile corespunzătoare în toate înregistrări aferente.

Selectarea casetei de selectare „Ștergerea în cascadă a tabelelor înrudite” atunci când ștergeți o înregistrare din tabelul principal asigură că înregistrările aferente din tabelele subordonate sunt șterse automat.

Ștergerea (modificarea) conexiunilor

Ø Deschide fereastra Schema de date;

Ø activati ​​cu butonul stanga al mouse-ului conexiunea care trebuie stersa (schimbata);

Ø faceți clic dreapta pentru a deschide un meniu contextual și selectați o comandă Șterge (Schimbare) respectiv.

9. Tipuri de relaţii între tabele

Există trei tipuri de relații între tabele:

Unu la unu (1:1). O valoare cheie din fiecare înregistrare din tabelul principal poate avea o valoare corespunzătoare în câmpul asociat într-o singură înregistrare din tabelul copil. În acest caz, relația dintre tabele poate fi stabilită doar prin câmpurile cheie ale ambelor tabele.

Unu-la-mulți (1:M). Valoarea unei chei din fiecare înregistrare din tabelul principal poate avea valori corespunzătoare în câmpul (câmpurile) asociat(e) în mai multe înregistrări din subtabel. Acest tip de relație este destul de des folosit în bazele de date relaționale.

Mulți-la-mulți (M:M). Apare între două tabele atunci când o înregistrare din primul tabel A (relație de ieșire) poate fi asociată cu mai mult de o înregistrare a altui tabel B (relație de primire), la rândul său, o înregistrare din alt tabel poate fi asociată cu mai multe înregistrări din primul tabel. Această schemă este implementată numai cu ajutorul unui al treilea tabel de unire, a cărui cheie de legătură constă din cel puțin două câmpuri. Aceste câmpuri sunt câmpurile de cheie străină din tabelele A și B. Cheia primară pentru un tabel de unire este de obicei o combinație de chei străine.

Dacă între tabele există relații de tip M:M, se creează un tabel de intersecție suplimentar, cu ajutorul căruia relația M:M se va reduce la două relații de tip 1:M. Accesul nu vă permite să definiți o relație M:M directă între două tabele.

10. Formarea cererilor

Rularea unei interogări

Pentru a lansa o cerere de execuție dintr-o fereastră Designer Trebuie să faceți clic pe butonul din bara de instrumente Lansa» ! sau executați comanda Solicitare/Rulare. Rezultatele selecției datelor de interogare sunt afișate pe ecran în modul tabel.

Formarea condițiilor de selecție

Lista operatorilor utilizați la specificarea expresiilor este următoarea:

Ø operatori comparatii:


= (egal)

<> (nu este egal)

> (Mai mult)

>= (nu mai puțin)

< (Mai puțin)

<= (nu mai mult)


ÎNTRE– vă permite să setați un interval de valori. Sintaxă: Între"Expresie" Și„Expresie” (de exemplu: ÎNTRE 10 Și 20 înseamnă la fel ca o expresie booleană >= 10 ȘI<= 20).

ÎN– vă permite să specificați o listă de valori utilizate pentru comparație (operandul este o listă cuprinsă între paranteze). De exemplu: ÎN(„Brest”, „Minsk”, „Grodno”) înseamnă la fel ca expresia logică „Brest” SAU"Minsk" SAU„Grodno”.

Ø joc de inteligență operatori:

ȘI(de exemplu: >=10 AND<=20)

SAU(De exemplu:<50 OR >100)

NU(de exemplu: Is Not Null – un câmp care conține o valoare).

Ø operator CA– verifică conformitatea text sau Câmpuri de note conform unui model de caracter dat.

Tabel de caractere șablon

Exemple de utilizare a operatorului Ca:

LIKE „C*”– linii care încep cu simbolul C;

LIKE „[ A - Z ] #”– orice simbol de la A la Z și un număr;

LIKE „[! 0 - 9 ABC] * # #”– linii care încep cu orice alt caracter decât un număr sau literele A, B, C și se termină cu 2 cifre;

Criterii complexe de eșantionare

Adesea trebuie să selectați înregistrările după o condiție care este setată pentru mai multe câmpuri de tabel sau după mai multe condiții pentru un câmp. În acest caz se aplică "I-interogări"(selectați înregistrările numai dacă sunt îndeplinite toate condițiile) și „SAU interogări”(selectați înregistrările atunci când este îndeplinită cel puțin una dintre condiții).

Când setați " SAU-interogare» fiecare condiție de selecție trebuie plasată pe o linie separată Formular de cerere.

Când setați " I-interogare» fiecare condiție de selecție trebuie plasată pe aceeași linie, dar în câmpuri diferite Formular de cerere.

Aceste operațiuni pot fi specificate explicit folosind operatorii SAUȘi ȘI respectiv.

Funcțiile Iif() și Format().

Funcţie IIf(condiție; dacă Adevărat; dacă Fals)– returnează unul dintre cele două argumente în funcție de rezultatul evaluării expresiei.

Funcţie Format(expresie; instrucțiune de formatare)– returnează un șir care conține o expresie formatată conform instrucțiunilor de formatare.

Pentru expresii data/ora Puteți utiliza următoarele caractere în instrucțiunile de formatare:

I. Model ierarhic

II. Model de rețea

III. Model relațional

În modelul relațional, informațiile sunt prezentate sub formă de tabele dreptunghiulare. Fiecare tabel este format din rânduri și coloane și are un nume unic în baza de date. La rândul său, fiecare linie ( înregistrare) dintr-un astfel de tabel conține informații referitoare la un singur obiect specific și fiecare coloană ( camp) tabelul are un nume unic pentru tabelul său.

Bazele de date relaționale (RDB), spre deosebire de ierarhicȘi modele de rețea, vă permit să organizați oricând conexiuni între mese. În acest scop, RDB implementează un mecanism chei externe. Fiecare tabel de bază de date are cel puțin un câmp care servește ca link către un alt tabel. În terminologia RDB, astfel de câmpuri sunt numite câmpuri de cheie străină. Folosind chei străine, puteți conecta orice tabel de bază de date în orice etapă de lucru cu baza de date.


4. Model de date relaționale

Baza de date relațională (RDB) este un set de cele mai simple tabele de relații bidimensionale interconectate logic, constând din multe câmpuri și înregistrări care reflectă o anumită zonă de subiect.

Modelul de date relaționale a fost propus de E. Codd, un renumit specialist american în baze de date. Conceptele de bază ale acestui model au fost publicate pentru prima dată în 1970. Fiind matematician de pregătire, Codd și-a propus utilizarea aparatului de teorie a mulțimilor (unire, intersecție, diferență, produs cartezian) pentru prelucrarea datelor. El a arătat că orice reprezentare a datelor se reduce la un set de tabele bidimensionale de tip special, cunoscute în matematică ca relație (în engleză - relație, de unde și denumirea - baze de date relaționale).

Una dintre ideile principale ale lui Codd a fost că conexiunile dintre date ar trebui stabilite în conformitate cu relațiile lor logice interne. Al doilea principiu important propus de Codd este că în sistemele relaționale o singură comandă poate procesa fișiere de date întregi, în timp ce anterior doar o singură înregistrare putea fi procesată printr-o singură comandă.

Concepte de bază ale bazelor de date relaționale (RDB)

* Atitudine– informații despre obiecte de același tip, de exemplu, despre clienți, comenzi, angajați. Într-o bază de date relațională, o relație este stocată ca tabel.

* Atribut– o anumită informație despre un obiect – de exemplu, adresa unui client sau salariul unui angajat. Atributul este de obicei stocat ca coloană (câmp) Mese.

* Tip de date– un concept care în modelul relațional este complet echivalent cu conceptul corespunzător în limbaje algoritmice. Setul de tipuri de date acceptate este determinat de SGBD și poate varia foarte mult între sisteme.

* Conexiune– modul în care informațiile dintr-un tabel sunt legate de informațiile dintr-un alt tabel. Relațiile sunt făcute folosind câmpurile de potrivire numite cheie.

* O asociere– Procesul de unire a tabelelor sau a interogărilor pe baza valorilor de potrivire ale anumitor atribute.

Reguli (normalizare) pentru construirea unei baze de date relaționale

Normalizare este un proces de reorganizare a datelor prin eliminarea grupurilor repetate și a altor contradicții pentru a aduce tabelele într-o formă care să permită editarea consecventă și corectă a datelor. Scopul final al normalizării este obținerea unui design de bază de date în care fiecare fapt să apară într-un singur loc, adică. este exclusă redundanța informațiilor.

1. Fiecare câmp al oricărui tabel trebuie să fie unic.

2. Fiecare tabel trebuie să aibă un identificator unic ( cheia principala), care poate consta din unul sau mai multe câmpuri de tabel.

3. Pentru fiecare valoare a cheii primare, trebuie să existe una și o singură valoare pentru oricare dintre coloanele de date și acea valoare trebuie să fie legată de obiectul tabelului (adică nu trebuie să existe date în tabel care să nu aibă legătură cu obiect definit de cheia primară, dar De asemenea, informațiile din tabel trebuie să descrie pe deplin obiectul).

4. Ar trebui să fie posibilă modificarea valorii oricărui câmp (nu este inclus în cheia primară), iar acest lucru nu ar trebui să implice schimbarea unui alt câmp (adică nu ar trebui să existe câmpuri calculate).

5. Sisteme de management al bazelor de date (DBMS)

Bazele de date sunt menținute într-un mediu informatic prin software - sisteme de gestionare a bazelor de date, care sunt un set de software și instrumente lingvistice generale sau specializate necesare pentru crearea bazelor de date pe suporturi de mașină, menținerea acestora la zi și organizarea accesului la acestea de către diferiți utilizatori condiţiile tehnologiei de prelucrare a datelor adoptate.

SGBD - acestea sunt programe de control care asigură toate manipulările cu baze de date: crearea unei baze de date, întreținerea acesteia, utilizarea acesteia de către mulți utilizatori etc., adică implementează un set complex de funcții pentru gestionarea centralizată a bazei de date și servesc intereselor utilizatorilor.

Un SGBD poate fi considerat ca un shell software care se află între baza de date și utilizator. Oferă control centralizat al protecției și integrității datelor, accesul la date, procesarea, raportarea bazată pe baze de date și alte operațiuni și proceduri.

Sistem de management al bazelor de date relaționale (RDBMS)

Setul de instrumente pentru gestionarea RDB este numit sistem de management al bazelor de date relaționale , care poate conține utilitare, aplicații, servicii, biblioteci, instrumente de creare a aplicațiilor și alte componente. Fiind conectate prin câmpuri cheie comune, informațiile dintr-un RDB pot fi combinate din mai multe tabele într-un singur set de rezultate.

Principal funcții RDBMS sunt:

· Definirea datelor– ce informații vor fi stocate, setați structura bazei de date și tipul acestora.

· Procesarea datelor– puteți selecta orice câmpuri, puteți sorta și filtra datele. Puteți combina datele și rezuma.

· Management de date– corectați și adăugați date.

6. Caracteristici generale ale SGBD-ului ACCESS

Microsoft Access este un SGBD relațional complet funcțional, care oferă toate instrumentele necesare pentru definirea și prelucrarea datelor, precum și pentru gestionarea acestora atunci când se lucrează cu volume mari de informații. Diferitele sale versiuni fac parte din pachetul software MS Office și funcționează în mediul Windows (3.11/95/98/2000/XP).

Fereastra bază de date în Access

După crearea unui nou fișier de bază de date sau deschiderea unuia existent în spațiul de lucru al ferestrei Access, apare fereastra bazei de date:


Baza de date (DB) - Acesta este un set numit de date structurate legate de un domeniu specific și destinat stocării, acumulării și procesării utilizând un computer.

Baza de date relațională (RDB) este un set de relații ale căror nume coincid cu numele relațiilor de schemă din schema bazei de date.

Noțiuni de bază baze de date relaționale:

· Tip de date– tipul valorilor unei anumite coloane.

· Domeniu(domeniu) – setul tuturor valorilor de atribute valide.

· Atribut(atribut) – antetul coloanei de tabel care caracterizează o proprietate numită a unui obiect, de exemplu, numele de familie al elevului, data comenzii, sexul angajatului etc.

· Cortegiu– un rând de tabel reprezentând un set de valori ale atributelor legate logic.

· Atitudine(relație) – un tabel care reflectă informații despre obiecte din lumea reală, de exemplu, despre studenți, ordine, angajați, rezidenți etc.

· Cheia principala(cheie primară) – un câmp (sau un set de câmpuri) al unui tabel care identifică în mod unic fiecare dintre înregistrările sale.

· Cheie alternativă este un câmp (sau un set de câmpuri) care nu se potrivește cu cheia primară și identifică în mod unic o instanță a unei înregistrări.

· Cheie externă este un câmp (sau un set de câmpuri) ale cărui valori se potrivesc cu valorile existente ale cheii primare a altui tabel. Când legați două tabele, cheia primară a primului tabel este legată de cheia externă a celui de-al doilea tabel.

· Model de date relaționale (RDM)- organizarea datelor sub forma de tabele bidimensionale.

Fiecare tabel relațional trebuie să aibă următoarele proprietăți:

1. Fiecare înregistrare de tabel este unică, adică setul de valori din câmpuri nu se repetă.

2. Fiecare valoare scrisă la intersecția unui rând și a unei coloane este atomică (inseparabilă).

3. Valorile fiecărui câmp trebuie să fie de același tip.

4. Fiecare câmp are un nume unic.

5. Ordinea intrărilor nu este importantă.

Elementele principale ale bazei de date:

Camp- o unitate elementară de organizare logică a datelor. Următoarele caracteristici sunt utilizate pentru a descrie domeniul:

· nume, de exemplu, Nume, Prenume, Patronimic, Data nașterii;

· tastați, de exemplu, șir, caracter, numeric, dată;

· lungime, de exemplu, în octeți;

· precizie pentru datele numerice, cum ar fi două zecimale pentru a afișa partea fracțională a unui număr.

Record- un set de valori ale câmpurilor legate logic.

Index– un mijloc de accelerare a operațiunii de căutare a înregistrărilor, utilizat pentru a stabili relații între tabele. Un tabel pentru care se folosește un index se numește indexat. Când lucrați cu indici, trebuie să acordați atenție organizării indicilor, care este baza clasificării. Un index simplu este reprezentat de un singur câmp sau de o expresie booleană care procesează un singur câmp. Un index compus este reprezentat de mai multe câmpuri cu capacitatea de a utiliza diverse funcții. Indicii de tabel sunt stocați într-un fișier index.


Integritatea datelor– acesta este un mijloc de protejare a datelor pe câmpurile de comunicare, care vă permite să mențineți tabelele într-o stare consistentă (consecventă) (adică nu permite existența înregistrărilor în tabelul subordonat care nu au înregistrări corespunzătoare în părinte masa).

Cerere– o întrebare formulată pentru unul sau mai multe tabele interconectate care conțin criterii de selecție a datelor. Interogarea este efectuată utilizând limbajul de interogare structurat SQL (Structured Query Language). Preluarea datelor dintr-unul sau mai multe tabele poate duce la un set de înregistrări numit vizualizare.

Prezentarea datelor– o interogare denumită stocată în baza de date pentru a prelua date (din unul sau mai multe tabele).

O vizualizare este în esență un tabel temporar creat ca rezultat al unei interogări. Cererea în sine poate fi trimisă într-un fișier separat, raport, tabel temporar, tabel pe disc etc.

Raport– o componentă de sistem al cărei scop principal este de a descrie și tipări documente pe baza informațiilor din baza de date.

Caracteristici generale ale lucrului cu RDB:

Cea mai comună interpretare a modelului de date relaționale pare să fie cea a lui Data, care o reproduce (cu diverse rafinamente) în aproape toate cărțile sale. Conform lui Date, modelul relațional constă din trei părți care descriu diferite aspecte ale abordării relaționale: partea structurală, partea de manipulare și partea holistică.

Partea structurală a modelului afirmă că singura structură de date utilizată în bazele de date relaționale este relația n-aria normalizată.

Partea de manipulare a modelului afirmă două mecanisme fundamentale pentru manipularea bazelor de date relaționale - algebra relațională și calculul relațional. Primul mecanism se bazează în principal pe teoria clasică a mulțimilor (cu unele rafinamente), iar al doilea se bazează pe aparatul logic clasic al calculului de predicate de ordinul întâi. Rețineți că funcția principală a părții de manipulare a modelului relațional este de a oferi o măsură a relaționalității oricărui limbaj specific de bază de date relaționale: un limbaj se numește relațional dacă nu are mai puțină expresivitate și putere decât algebra relațională sau calculul relațional.


28. LIMBAJE ALGORITMICE. TRADUCĂTORI (INTERPȚI ȘI COMPILATORI). BAZĂ AL LIMBAJULUI ALGORITMIC. STRUCTURA PROGRAMULUI. IDENTIFICATORI. VARIABILE. OPERATORI. PRELUCRAREA MATRICE MONIDIMENSIONALE SI BIDIMENSIONALE. FUNCȚIILE UTILIZATORULUI. SUBRUTINELE. LUCRU CU FIȘIERE DE DATE.

Limbaj de nivel înalt- un limbaj de programare ale cărui concepte și structură sunt convenabile pentru percepția umană.

Limbajul algoritmic(Limbajul algoritmic) - un limbaj de programare - un limbaj artificial (formal) conceput pentru scrierea algoritmilor. Un limbaj de programare este definit prin descrierea lui și implementat sub forma unui program special: un compilator sau un interpret. Exemple de limbaje algoritmice sunt Borland Pascal, C++, Basic etc.

Concepte de bază ale limbajului algoritmic:

Compoziția limbajului:

Limbajul vorbit obișnuit este format din patru elemente de bază: simboluri, cuvinte, fraze și propoziții. Un limbaj algoritmic conține elemente similare, doar cuvintele sunt numite construcții elementare, frazele sunt numite expresii, iar propozițiile sunt numite operatori.

Simboluri, constructele elementare, expresiile și operatorii formează o structură ierarhică, deoarece constructele elementare sunt formate dintr-o succesiune de simboluri.

Expresii este o succesiune de structuri și simboluri elementare,

Operator- o succesiune de expresii, structuri elementare și simboluri.

Descrierea limbii:

O descriere a caracterului constă în listarea caracterelor valide ale limbii. Descrierea structurilor elementare înseamnă regulile formării lor. Descrierea expresiilor este regulile pentru formarea oricăror expresii care au sens într-o limbă dată. Descrierea operatorilor constă într-o luare în considerare a tuturor tipurilor de operatori permise în limbă. Descrierea fiecărui element de limbaj este dată de SINTAXA și SEMANTICA acestuia.

Sintactic definiţiile stabilesc reguli pentru construirea elementelor de limbaj.

Semantică definește semnificația și regulile de utilizare ale acelor elemente de limbaj pentru care au fost date definiții sintactice.

Simboluri ale limbii- acestea sunt semnele indivizibile de bază în termenii cărora sunt scrise toate textele din limbă.

Structuri elementare- acestea sunt unitățile minime ale limbajului care au sens independent. Ele sunt formate din simbolurile de bază ale limbii.

Expresieîntr-un limbaj algoritmic, este format din structuri și simboluri elementare, specifică o regulă pentru calcularea unei anumite valori.

Operator specifică o descriere completă a unei acțiuni care trebuie efectuată. Poate fi necesar un grup de afirmații pentru a descrie o acțiune complexă.

În acest caz, operatorii sunt combinați în Operator compus sau Bloc. Acțiuni, specificate de operatori, sunt executate pe date. Declarațiile unui limbaj algoritmic care furnizează informații despre tipurile de date sunt numite declarații sau declarații neexecutabile. Un set de descrieri și operatori uniți printr-un singur algoritm formează un program într-un limbaj algoritmic. În procesul de studiere a unui limbaj algoritmic, este necesar să se distingă limbajul algoritmic de limbajul cu care se realizează descrierea limbajului algoritmic studiat. De obicei, limba studiată se numește pur și simplu o limbă, iar limba în termenii căreia este dată descrierea limbii studiate - Metalimbaj.

Traducători - (traducător englez - traducător) este un program de traducere. Convertește un program scris într-una dintre limbile de nivel înalt într-un program format din instrucțiuni de mașină.

Un program scris în orice limbaj algoritmic de nivel înalt nu poate fi executat direct pe un computer. Computerul înțelege doar limbajul comenzilor mașinii. În consecință, un program într-un limbaj algoritmic trebuie tradus (tradus) în limbajul de comandă al unui anumit computer. O astfel de traducere este realizată automat prin programe speciale de traducător create pentru fiecare limbă algoritmică și pentru fiecare tip de computer.

Există două metode principale de difuzare - compilare și interpretare.

1.Compilare: compilator(Compilatorul englez - compilator, colector) citește întregul program, îl traduce și creează o versiune completă a programului în limbajul mașinii, care este apoi executată.

La compilareîntregul program original este imediat convertit într-o secvență de instrucțiuni ale mașinii. După aceasta, programul rezultat este executat de un computer cu datele sursă disponibile. Avantajul acestei metode este că traducerea este efectuată o singură dată, iar execuția (multiple) a programului rezultat poate fi efectuată cu viteză mare. În același timp, programul rezultat poate ocupa mult spațiu în memoria computerului, deoarece un operator de limbă este înlocuit cu sute sau chiar mii de comenzi în timpul traducerii. În plus, depanarea și modificările programului de difuzare sunt foarte dificile.

2. Interpretare: Interpret(Interpret englez - interpret, interpret) traduce și execută programul linie cu linie.

La interpretări programul original este stocat în memoria computerului aproape neschimbat. Programul interpret decodifică pe rând instrucțiunile programului sursă și asigură imediat executarea acestora cu datele disponibile. Programul interpretat ocupă puțin spațiu în memoria computerului și este ușor de depanat și modificat. Dar execuția programului este destul de lentă, deoarece cu fiecare execuție interpretarea tuturor operatorilor este realizată din nou.

Programele compilate rulează mai repede, dar cele interpretate sunt mai ușor de reparat și schimbat.

Fiecare limbaj specific este orientat fie spre compilare, fie spre interpretare – in functie de scopul pentru care a fost creat. De exemplu, Pascal este de obicei folosit pentru a rezolva probleme destul de complexe în care viteza programului este importantă. Prin urmare, acest limbaj este de obicei implementat folosind un compilator.

Pe de altă parte, BASIC a fost creat ca un limbaj pentru programatorii începători, pentru care execuția linie cu linie a unui program are avantaje incontestabile.

Uneori există atât un compilator, cât și un interpret pentru aceeași limbă. În acest caz, puteți folosi un interpret pentru a dezvolta și testa programul și apoi să compilați programul depanat pentru a-și îmbunătăți viteza de execuție.