Relatsioonandmebaasi elemendid. Relatsiooniandmebaaside põhikontseptsioonid. Põhimõisted Relatsiooniandmebaaside

Relatsiooniline andmebaas ja selle omadused. Relatsioonitabelite vaheliste sidemete liigid

Relatsiooniandmebaas - See on omavahel seotud tabelite kogum, millest igaüks sisaldab teavet teatud tüüpi objektide kohta. Tabelirida sisaldab andmeid ühe objekti (näiteks toote, kliendi) kohta ja tabeli veerud kirjeldavad nende objektide erinevaid omadusi - atribuute (näiteks nimi, tootekood, kliendinfo). Records, s.o tabeliridadel on sama struktuur - need koosnevad valdkondades, mis salvestavad objekti atribuudid. Iga väli, s.t. veerg kirjeldab objektile ainult ühte omadust ja on rangelt määratletud andmeliik. Kõikidel dokumentidel on samad väljad, mida kuvatakse ainult erinevad. informatsiooni omadused objekti.

Suitsetavas andmebaasis peab igal tabelil olema esmane võti - väli või väljade kombinatsioon, mis tuvastavad tabeli joone. Kui võti koosneb mitmest väljast, nimetatakse seda komposiitiks. Võti peab olema unikaalne ja ühemõtteliselt määrata rekord. Võti väärtuse abil leiate ühe kirje. Võtmetele toimivad ka andmebaasi teabe lihtsustamiseks.

Relatsiooniandmebaaside tabel peab vastama suhete normaliseerimise nõuetele. Suhtede normaliseerimine on ametlik seade tabelite moodustamise piirangute jaoks, mis võimaldab teil dubleerimist kõrvaldada, tagab andmebaasi säilitamise järjepidevuse, vähendab andmebaasi säilitamise tööjõukulusid.

Laske üliõpilase tabelis, mis sisaldab Trail-Racing väljad: Grupi number, täielik nimi, hollandi nr, sünniaeg, erinumber, õppejõud. Selline ladustamisorganisatsioonil on mitmeid puudusi:

  • Teabe dubleerimine (eriala nimi ja õppejõud korratakse iga õpilase puhul), mistõttu suureneb andmebaasi maht;
  • Tabelis esitatud teabe uuendamise protseduur on raske iga redigeerimise vajaduse tõttu rasketabeli kirje.

Tabelite normaliseerimine on mõeldud nende puuduste kõrvaldamiseks. Kättesaadav kolm normaalset suhteid.

Esimene normaalne vorm. Relatsioonitabeli kuvatakse esimesele normaalsele vormile, kui ja ainult siis, kui ükski selle ridadest ei sisalda ühtegi väärtust rohkem kui ühel väärtuses ja ükski selle võtmevälja ei ole tühi. Niisiis, kui üliõpilane peab saama teavet õpilase nime kohta teavet, tuleks FIO väli jagada osa nimest, nimest, patroonikast.

Teine tavaline vorm. Relatsioonitabeli on seatud teises normaalses vormis, kui see vastab esimese normaalse vormi nõuetele ja kõik selle väljad, mis ei ole primaarses võtmes sisalduvad, on seotud põhiklahviga täieliku funktsionaalse sõltuvusega. Tabeli teisele normaalsele vormile tuua, on vaja kindlaks määrata väljade funktsionaalsed sõltuvused. Funktsionaalne sõltuvus väljad on sõltuvus, kardinaga eksemplaris infoobjekti, ainult üks väärtus kirjeldavate rekvisiidid vastab teatud väärtusele võtme rekvisiidid.

Kolmas tavaline vorm. Tabel on kolmandas normaalses vormis, kui see vastab teise normaalse vormi nõuetele, sõltub ükski tema mitte-võtmeväljadest funktsionaalselt mis tahes muu mittejärjestuse väljast. Näiteks tabelis, üliõpilane (grupi number, täielik nimi, testraamatu number, sünniaeg, vanem) Kolm väljad - katseraamatu number, grupi arv, vanem on transitiivse sõltuvuse korral. Grupi arv sõltub katseraamatu arvust ja vanem sõltub grupi arvust. Transitiivse sõltuvuse kõrvaldamiseks on osa õpilaste tabeli väljadest osa grupi teise tabeli üle kanda. Tabelid võtavad järgmine vorm: õpilane (grupi number, täielik nimi, krediidiraamat nr, sünniaeg), grupp (grupi number, esituli).

Relatsioonitabelite üle on võimalik järgmised toimingud:

  • Ühendades tabelite sama struktuuriga. Tulemus - kogu tabel: Esiteks, esimene, siis teine \u200b\u200b(conctanation).
  • Tabelite ületamine sama struktuuriga. Tulemus - need dokumendid, mis on mõlemas tabelis valitakse.
  • Lahutada tabelid sama struktuuriga. Tulemus - need dokumendid, mis ei ole lahutamatud.
  • Proovide võtmine (horisontaalne alamhulk). Tulemuseks on valitud kirjed, mis vastavad teatud tingimustele.
  • Projektsioon (vertikaalne alamhulk). Tulemuseks on suhe, mis sisaldab mõningaid allikalaudade väljad.
  • CARTESOVO Saadud tabeli salvestamise tabeli saamiseks saadakse iga esimese tabeli salvestamise ühendamisel iga teise tabeli kirjega.

Seetõttu saab relatsioonilisi tabeleid seostada, seetõttu saab andmeid samaaegselt eemaldada mitmetes tabelites. Tabelid on seotud üksteisega, et lõppkokkuvõttes vähendada andmebaasi mahtu. Iga tabelipaaride ühendamine on tagatud, kui neis on identsed veerud.

Olemas on järgmised teabevahendid:

  • üks ühele;
  • üks-to-paljud;
  • Paljud-co-paljud.

Kommunikatsioon üks-ühele See eeldab, et ainult üks atribuut teise tabeli vastab ühe atribuudi esimese tabeli ja vastupidi.

Kommunikatsioon One-to-Paljudsee eeldab, et üks esimese tabeli atribuut vastab mitme teise tabeli atribuudile.

Kommunikatsioon Paljud co-paljud Ta eeldab, et üks esimese tabeli atribuut vastab teise tabeli mitmele atribuudile ja vastupidi.

Relatsioonilised andmebaasid on praegu kõige levinumad, kuigi koos üldtunnustatud eelistega on mitmeid puudusi. Relatsioonilise lähenemisviisi eeliseid võib seostada:

Väikese abstraktsioonide kogumi olemasolu, mis võimaldab teil suhteliselt lihtsalt enamik ühiseid objekti valdkondade simuleerida ja võimaldada täpseid formaalseid määratlusi, ülejäänud intuitiivseid;

Lihtsa ja samal ajal võimsa matemaatilise aparaadi olemasolu põhineb peamiselt komplekti teooria ja matemaatilise loogika teooria ja andmebaaside korrapärase lähenemisviisi teoreetilise aluse tagamine;

Andmete ainulaadse manipuleerimise võimalus ilma vajaduseta tunda välismälu andmebaaside konkreetset füüsilist korraldust.

Relatsioonilised süsteemid ei ole kohe laialdaselt laialt levinud. Kuigi peamised teoreetilised tulemused selles valdkonnas saadi 70ndatel ja samal ajal esimesed prototüüpide relatsiooniline DBMS ilmus, pikka aega oli võimatu saavutada tõhusa rakendamise selliste süsteemide. Eespool täheldatud eelised ja relatsiooniandmebaaside korraldamise meetodite ja algoritmide järkjärguline kogunemine ja nende haldamine viisid, et 1980. aastate keskel on relatsioonisüsteemid praktiliselt ümberasunud varajase DBMSi maailmaturult.

Praegu ei ole relatsiooniliste DBMSi kriitiku peamine teema nende ebapiisav tõhusus, vaid nende süsteemide omane omadus Mõned piirangud (otsene tagajärg lihtsuse tagajärjel), kui kasutate nn ebatavalisi valdkondi (kõige tavalisemad näited on projekteerimise automatiseerimissüsteemid) kus on vaja äärmiselt keerulisi andmestruktuure. Teine sagedusega seotud andmebaaside puudumine on objekti semantika piisava peegeldamise võimatus. Teisisõnu, võimaluse esitada teadmisi suhteliste süsteemide valdkonna semantiliste spetsifikatsioonide kohta väga piiratud. Kaasaegsed uuringud uurimise süsteemide valdkonnas on peamiselt pühendatud nende puuduste kõrvaldamisele.

Suhtealaste andmebaaside peamised mõisted on andmeliik, domeen, atribuut, kiirus, esmane võti ja suhtumine.

Kontseptsioon andmetüüp Relatsiooniline andmemudel mõjutab andmeliik täielikult adekvaatselt programmeerimiskeeltes. Tavaliselt kaasaegsetes relatsiooniandmebaasides lubatud sümboolsete, numbriliste andmete, bitiliinide, spetsialiseeritud numbriliste andmete (näiteks "raha") ladustamine, samuti spetsiaalsed "ajalised" andmed (kuupäev, kellaaeg, ajavahemik). Lähenemisviis laiendades suhted suhteliste süsteemide abstraktne andmetüübid (asjakohased võimalused, näiteks Ingres / Postgres pere süsteemid) areneb.

Nende relatsioonilise mudeli struktuur.Relatsiooniline andmemudel korraldab ja esindab andmeid tabelite või sugulaste kujul. Seos - See on mõiste, kes tuli matemaatika ja tähistavad lihtsat kahemõõtmelist tabelit. Relatsioonil põhineva lähenemisviisi hoone andmebaaside terminoloogia suhete teooria kasutatakse. Lihtsaim kahemõõtmeline tabel on määratletud kui suhtumine.

Tabel Relatsioonimudeli andmestruktuuri peamine tüüpi andmestruktuur (objekt) on see. Tabeli struktuur määratakse komplekti järgi veerud. Iga tabeli rida sisaldab ühe väärtust sobivas veerg. Tabel ei saa olla kaks identset joont. Ridade koguarv ei ole piiratud.

Veerg Vastab mõnele andmeühikule - atribuut mis on kõige lihtsam andmestruktuur. Tabel ei tohi sisaldada mitmeid elemente, rühma või korduvat rühma, nagu eespool nimetatud võrgus ja hierarhilistel mudelitel. Iga veeru tabel peab olema nimetus Vastava andmeelemendi (atribuut).

Tabeli kolonni vastava atribuudi väärtustega nimetatakse domeen ja stringid erinevate atribuutide väärtustega - partii, kaubasaadetis.

Relatsiooniline tabeliga seotud. Joonisel fig. 9 kujutab suhtelaua suhet R.. Formaalne määratlus suhted R (relatsiooniline tabel) tugineb tema ideele domeenidD. I, (veerud) ja cortech K. j (read). R suhe, mis on määratletud domeenide komplekti (D i), nimetatakse alamhulka dECARTOVA (DIRECT) Domeenide toodeD 1 * d 2 * ... .. * d n

Lauavaldus (Vt joonis 1) sisaldab veergusid andmete elementide nimedega - atribuudid (A 1, A 2, ...). Atribuutide väärtused D on tabeli sisuosas ja moodustavad ridade ja veergude. Paljud atribuutide väärtused ühes veerus moodustab ühe domeenD I.. Mitmesugused atribuutide väärtused ühes reas vormis kohus J. Suhtumine R moodustab paljud tellitud tuples.

R \u003d (KJ), J \u003d 1- M KJ \u003d (D 1J, D 2 J, ... d NJ),

kus n on suhe domeenide arv; Määrab suhte mõõtme;

j-CORUT number;

m - koguarvu koguarv nimetatakse koordinaatide arvsuhted.

Joonis9. Relatsioonitabeli suhte illustratsioon

Domeeni. Kõige üldisem vorm, domeeni määrab ülesande teatud põhitüübi andmed, mille domeeni elemendid ja meelevaldne loogiline väljendrakendatakse andmeliikide kirjele. Kui selle loogilise väljenduse arvutamine annab tulemuse "tõde", andmete element on domeeni element.

Domeeni kontseptsiooni kõige õigem intuitiivne tõlgendamine on domeeni mõistmine lubatud võimalike väärtuste kogumitena seda tüüpi. Näiteks on meie näites domeeni "nimed" määratletud tähemärkide põhitüübis, kuid väärtuste arv võib sisaldada ainult neid jooni, mis võivad kujutada nime (eelkõige sellised jooned ei saa alustada pehme märk).

Samuti tuleb märkida domeeni mõiste semantiline koormus: andmeid peetakse võrreldavaks ainult siis, kui need on seotud ühe domeeniga. Meie näites viitavad domeenide domeenide "passi numbrite" ja "grupi numbri" domeenid täisarvu liiki, kuid ei ole võrreldavad. Pange tähele, et enamikus relational DBMS, mõiste domeeni ei kasutata, kuigi Ogas1e V.7 on juba toetatud.

Suhtekava, andmebaasi skeem. Suhtekava on nimega paarikaupa (atribuut nimi, domeeninimi (või tüüp, kui domeeni mõistet ei toetata)). Selle komplekti võimsus on suhe või "Aria" skeem. Näite suhte suhe on kuus, st see on 6-marul. Kui kõik ühe suhte atribuudid on määratletud erinevatel domeenidel, kasutage arukalt nimetades atribuudid vastavate domeenide nimed (mitte unustamata, muidugi, et see on ainult mugav Nimetamine ja ei kõrvalda erinevusi domeeni ja atribuudi mõistete vahel). Andmebaasi skeem (struktuurilises mõttes) on nimetatud suhete skeemide kogum.

Nimekiri, kus nimed relatsioonlaudade antakse loendamise nende atribuutide (võtmed on alla joonitud) ja määratlused väliste klahvide nimetatakse andmebaasi relatsiooniline diagramm. Relatsiooniandmebaasi elutsükli elutsükli etapi loomise tulemus on esialgne tulemus. Näide:

Töötaja [ Töötaja-ID, Nimi, tunnitasu, oskuste tüüp, SVPV-ID]

Välised võtmed: oskuste tüüp viitab oskuste

SVPV-ID viitab töötajale

Ülesanne [ Töötaja-ID, Bldg-id, Algusaeg, päevade arv]

Välised võtmed: Töötaja-ID viitab töötajale

Bldg-ID viitab BVildingile

Bvilding [ Bldg-id, Aadress, tüüp, qlty-tase, statvs]

Oskused [ Oskus-, Boonusmäära, tunde-nädalas]

Tuple, suhtumine. Sellele suhtele vastava valikuklahv on paarikaupade kogum (atribuudi nimi, väärtus, mis sisaldab iga seoseskeemi kuuluva iga atribuudi nime kannet. "Väärtus" on selle atribuudi domeeni lubatud väärtus (või andmetüüp, \\ t Kui domeeni mõistet ei toetata). Seega langeb see Corget'i kraad või "Arnost", st nende elementide arv kokkusurumise vastava skeemi "aryy". Lihtsalt pannakse tuple määratud tüüpi väärtuste kogum.

Suhtumine - See on ühe komplekt, mis vastab ühele suhtekavale. Mõnikord ei tohi nad segi ajada, ütlevad nad "suhe-skeemi" ja "suhtumise koopia", mõnikord nimetatakse suhete pealkirjaks ja suhtumine tuplede komplektina on suhe. Tegelikult on suhete kava kontseptsioon kõige lähemal struktuurilise andmeliigi kontseptsioonile programmeerimiskeeltes. See oleks üsna loogiliselt lubada suhtekava eraldi määratleda ja seejärel ühe või mitme suhte selle kavaga.

Seda ei aktsepteerita siiski relatsiooniandmebaasides. Selliste andmebaaside suhete skeemi nimi langeb alati kokku vastava näidise nimega. Klassikalistes relatsiooniandmebaasides pärast andmebaasi skeemi määramist muudetakse ainult seadeid. Need võivad ilmuda uusi ja eemaldatavaid või muuta olemasolevaid lugusid. Paljud rakendused on siiski lubatud muuta andmebaasi skeemi: olemasolevate suhete uue ja muutmise määramine. Seda nimetatakse andmebaasi skeemi areng.

Suhte tavaline igapäevane esindatus on tabel, mille pealkiri on suhe ja liinide skeem - proovidekoore; Sellisel juhul viitavad atribuutide nimed selle tabeli veergudele. Seetõttu ütlevad nad mõnikord "tabeli veerg", mis tähendab "suhte atribuut". Kui me jätkame suhteliste andmebaaside ja juhtimisvahendite korraldamise praktilisi küsimusi, kasutame seda igapäevase terminoloogiat. See terminoloogia järgib enamiku kaubanduslike relatsiooniliste DBMSi.

Relatsiooniandmebaas on suhted suhted, mille nimed langevad kokku andmebaasi süsteemi suhete skeemi nimedega.

Nagu näha, on suhtelise andmemudeli peamised struktuuripõhised kontseptsioonid (välja arvatud domeeni kontseptsioon) väga lihtne intuitiivne tõlgendus, kuigi relatsiooniandmebaasi teoorias määratakse nad kõik absoluutselt ametlikult ja täpselt.

Võtmelaua suhe. Corgerit ei tohi korduda sees tabelite suhted Ja seetõttu peavad neil olema ainulaadne identifikaator - esmane võti.Üks või mitu atribuute, mille väärtused ühemõtteliselt tuvastada tabelitrea võti Tabelid.

Esmane võti kutsutakse lihtne , Kui see koosneb ühest atribuusest või komposiit Kui see koosneb mitmest atribuutidest. Lisaks esmasele võtmele võib eksisteerida ja sekundaarsed võtmed.

Teisese võti See on selline võti, mille väärtusi saab korrata erinevates ridades. Seal võib esineda rühma rida sama väärtusega teisese võtme.

Väline võti - See on ühe tabeli atribuutide komplekt, mis on teise (või sama) tabeli võti. Välised klahvid annavad olulisi sidemeid tabelite vahel. Neid kasutatakse andmete sidumiseks ühest tabelist teise tabeli andmetega. Välised võtme atribuudid ei pea olema samad nimed kui peamised atribuudid, mida nad sobivad.


Sarnane teave.


See artikkel alustame uut tsüklit, mis on pühendatud andmebaasidele, kaasaegsetele andmetele juurdepääsu tehnoloogiatele ja nende töötlemisele. Kogu selle tsükli jooksul plaanime kaaluda kõige populaarsemaid töölaua ja serverihaldussüsteeme. andmebaasid (DBMS), andmetele juurdepääsu mehhanismid (vana DB, ADO, BDE jne) ja kommunaalteenused andmebaasidega töötamiseks (haldusvahendid, aruande generaatorid, andmete graafilised esinduse tööriistad). Lisaks plaanime pöörata tähelepanu andmete avaldamise meetoditele Internetis, samuti selliseid populaarseid meetodeid andmete töötlemiseks ja salvestamiseks, nagu OLAP (on-line analüütiline töötlemine) ja luua andmete ladu (andmehoidla).

Käesolevas artiklis kaalume andmebaasi juhtimissüsteemide põhikontseptsioone ja põhimõtteid. Me arutame relatsioonilist andmemudelit, mõistet viide terviklikkus Andmete normaliseerimise põhimõtted ja andmekujundusvahendid. Siis me ütleme, millised on DBMS-i, milliseid objekte saab andmebaasides sisalduda ja kuidas taotlused nendele objektidesse tehakse.

Relatsiooniandmebaaside peamised mõisted

Alustame DBMSi põhikontseptsioonidest ja lühike sissejuhatus relatsiooniandmebaaside teooriasse - kõige populaarsem andmesalvestusmeetod on nüüd.

Relatsiooniline andmemudel

Relatsiooniline andmemudel E.F. Koddd (Dr. E.F.Codd), tuntud andmebaasi teadlane 1969. aastal, kui ta oli IBMi töötaja. Esimest korda avaldati selle mudeli põhikontseptsioonid 1970. aastal. Üldise jagatud andmepankade andmete relatsiooniline mudel, CACM, 1970, 13 N 6).

Relatsiooniandmebaas on andmehoidla, mis sisaldab kahemõõtmelise tabeli komplekti. Sellise ladustamise haldamiseks mõeldud vahendid relational andmebaasi haldamise süsteem (RSUBD). Rsubd võivad sisaldada kommunaalteenuseid, rakendusi, teenuseid, raamatukogusid, rakenduste loomise tööriistu ja muid komponente.

Kõik relatsiooniandmebaasi tabel koosneb rida (Samuti nimetatakse ka märkused) I. veerg (Samuti nimetatakse ka väljad). Selles tsüklis me kasutame mõlemad paari tingimusi.

Tabel read sisaldavad teavet selle kohta esitatud faktide kohta (või dokumendid või inimesed, ühes sõnas, - umbes sama tüüpi objektide kohta). Kolonni ristumiskohas on tabelis sisalduvate andmete konkreetsed väärtused.

Tabelites andmed vastavad järgmistele põhimõtetele:

  1. Iga stringi ja veeru ristmikus sisalduv väärtus peab olema aatomi- (See tähendab, et mitmed väärtused ei ole lahti lasknud).
  2. Andmeväärtused samas veerus peab kuuluma samasse tüüpi kasutamiseks selles DBMS-is.
  3. Iga tabeli kanne on ainulaadne, st tabelis ei ole kahte kandet, kus on täielikult kokku puutuvad oma valdkonna väärtuste kogum.
  4. Igal väljal on ainulaadne nimi.
  5. Tabelis olevate väljade järjestus on ebaoluline.
  6. Andmete järjestus on samuti ebaoluline.

Hoolimata asjaolust, et tabelite rida peetakse häireteks, võimaldab iga andmebaasi juhtimissüsteem sorteerida stringide ja veergude sorteerimist selle soovitud kasutaja poolt.

Kuna tabelis veergude järjestus on ebaoluline, on nende kaebuse esitamine nime järgi ja need nimed selle tabeli nimed on unikaalsed (kuid mitte tingimata kogu andmebaasi jaoks).

Niisiis, nüüd me teame, et suhtelised andmebaasid koosnevad tabelitest. Mõnede teoreetiliste sätete illustreerimiseks ja näidete loomiseks peame valima mis tahes andmebaasi. Selleks, et mitte "leiutada ratast", kasutame Microsofti pakendis Northwind andmebaasi SQL Server Ja Microsofti juurdepääs.

Nüüd vaatame tabelite vahelist seoseid.

Klahvid ja ühendused

Vaatame NorthwiD andmebaasi klientide tabeli fragmenti (kliendid) (eemaldasime väljad selle väljad, tähtsusetu, et illustreerida tabelite vaheliste seoseid).

Kuna tabelis olevad jooned on ebakorrapärased, vajame iga rea \u200b\u200bunikaalse identifitseerimise jaoks veerust (või mitu veergu). Sellist veergu (või veergude komplekti) nimetatakse esmane võti (esmane võti.). Iga tabeli esmane võti on vaja iga rea \u200b\u200bjaoks unikaalseid tühi väärtusi sisaldada.

Kui esmane võti koosneb rohkem kui ühest veerust, nimetatakse seda Ühendi esmane võti (komposiit algvõti).

Tüüpiline andmebaas koosneb tavaliselt mitmest seotud tabelitest. Tellimuste tabeli fragment (tellimused).

Selle tabeli kliendi-valdkond sisaldab kliendi identifikaatorit, mis mängib seda tellimust. Kui me peame välja selgitama, mida nimetatakse tellimuse esitamiseks, peame otsima sama kliendi ID väärtust klientide tabeli kliendi valdkonnas ja leitud liinil lugege ettevõttename väärtust. Teisisõnu, me peame siduma kaks tabelit, klienti ja tellimusi, mööda kliendi valdkonnas. See kanne on seotud teise tabeli sisenemise veerg kutsutakse väline võti (võõrkeha.). Kui me näeme tellimuste tabeli puhul, on välise võtme kliendi kolonn (joonis 1).

Teisisõnu, väline võti on kolonn või veerude komplekt, mille väärtused langevad kokku teise tabeli peamise klahvi olemasolevate väärtustega.

Seda seost tabelite vahel nimetatakse commonwealth (relalatsioon). Kahe tabeli vaheline ühendus määratakse ühe tabeli välise võtmeväärtuste määramisega primaarse võtme väärtuste abil.

Kui iga tabeli klientide klient võib majutada ainult ühte tellimust, ütlevad nad, et need kaks tabelit seostatakse suhetega üks ühele (Üks-ühele suhted). Kui iga tabeli klientide klient saab paigutada nulli, üks või mitu tellimusi, öelge, et need kaks tabelit seostatakse suhtega üks-kuni palju (Üks-paljude suhete) või suhtega meister. Selliseid suhteid tabelite vahel kasutatakse kõige sagedamini. Sellisel juhul nimetatakse välise võtme sisaldavat tabelit detaillaudja laud, mis sisaldab primaarvõit, mis määrab välise klahvi võimalike väärtuste määrab põhilaud.

Nimetatakse seotud tabelite rühma skeem Andmebaas ( andmebaasi skeem.). Teave tabelite, nende veergude (nimed, andmeliikide, välja pikkusega), esmaste ja väliste klahvide kohta, samuti teised andmebaasi objektid, kutsusid metaandmed (metaandmed.).

Kõik manipulatsioonid andmebaaside andmetega, näiteks valik, sisestamine, kustutamine, andmete muutmine, muutmine, muutmine või metaandmete valimine, nimetatakse taotlus andmebaasi ( päring.). Tavaliselt sõnastatakse päringud keelele, mis võib olla nii erinevatele DBMS-ide standardile ja sõltuvalt konkreetsetest DBMS-idest.

Täpsusta terviklikkust

Ülaltoodud oleme juba rääkinud asjaolust, et mis tahes tabeli esmane võti peab sisaldama selle tabeli ainulaadseid tühi väärtusi. See avaldus on üks reegleid. viide terviklikkus (referentlik terviklikkus). Mõned (kuid mitte kõik) DBMS saab juhtida unikaalsust esmaseid klahve. Kui DBMS kontrollib primaarsete võtmete unikaalsust, siis püüdes määrata esmane võti teises rekordis juba olemasoleva väärtuse määramiseks, tekitab DBMS diagnostilise sõnumi, mis sisaldab tavaliselt fraasi esmane peamine rikkumine. Seda sõnumit saab hiljem edastada taotlusele, millega lõppkasutaja manipuleerib andmeid.

Kui seos on seotud kaks tabelit meisterVäline võti detaile-tabelid peavad sisaldama ainult neid väärtusi, mis on juba olemas peamised põhiväärtuste seas. master-tabelid. Kui DBMS ei jälgi väliste võtmeväärtuste õigsust, saame rääkida viide terviklikkuse tõttu. Sel juhul, kui me kustutame kliendi tabeli rekordi, millel on vähemalt üks sellega seotud detaile-salvestamine tellimuste tabelis toob see kaasa asjaolu, et tellimuste tabel salvestatakse tellimuste kohta, mis on esitatud teadmata kellele. Kui DBMS kontrollib välise võtmeväärtuste õigsust, siis üritades määrata välise võti väärtusele, mis puudub esmaste põhiklahvide väärtuste seas või kui eemaldades või modifitseerides meisterlauakanded, mis viib võrdluskonteerimishäire DBMS genereerib diagnostika sõnumi, mis tavaliselt sisaldab fraasi välisriigi võtme rikkumine.Mida saab hiljem kasutajarakendusele edastada.

Enamik kaasaegseid DBMSi, nagu Microsoft Access 97, Microsoft Access 2000 ja Microsoft SQL Server 7.0, on võimelised jälgima järgimist võrdluskontelliskirjade järgimist, kui neid on kirjeldatud andmebaasis. Sel eesmärgil kasutavad sellised DBMS erinevaid andmebaasi objekte (me arutame neid veidi hiljem). Sel juhul kõik katsed rikuvad viide terviklikkuse reegleid surutakse samaaegse põlvkonna diagnostika sõnumeid või erandeid ( andmebaasi erandid.).

Andmete normaliseerimine

Andmeprojekti protsess on metaandmete määratlus vastavalt infosüsteemi ülesannetele, milles tulevikus andmebaasi kasutatakse. Üksikasjad selle kohta, kuidas teha teemavaldkonna analüüsi, luua "sisuliselt kommunikatsioon" diagrammid ( ERD - üksuse-suhete diagrammid) ja andmemudel, mis ei ületa selle tsükli ulatust. Nendes küsimustest huvitatud võivad pöörduda näiteks K.j.Detit "raamatust andmebaasi süsteemide tutvustamisega" ("dialektika", Kiiev, 1998).

Käesolevas artiklis arutame ainult ühte andmeprojekti aluspõhimõtteid - põhimõtet normaliseerimine.

Normaliseerimine See on protsess andmete ümberkorraldamiseks, kõrvaldades korduvaid rühmi ja muid vastuolusid andmete säilitamisel, et tuua tabelid liikidele, mis võimaldab teil teostada järjepidevat ja korrektset andmete redigeerimist.

Normaliseerimise teooria põhineb tavapäraste vormide kontseptsioonil. On öeldud, et tabel on selles normaalses vormis, kui see vastab teatud nõuetele. On teoreetiliselt viis normaalset vormi, kuid praktikas kasutatakse tavaliselt ainult esimest kolme. Lisaks on kaks esimest tavalist vormi sisuliselt vahepealseid samme, et viia andmebaasi kolmandale normaalsele vormile.

Esimene normaalne vorm

Me illustreerime normaliseerimisprotsessi näitel, kasutades Northwind Base andmeid. Oletame, et registreerime kõik tellitud tooted järgmises tabelis. Selle tabeli struktuuril on vorm (joonis fig 2).

Nii et tabel vastab esimesele normaalsele vormile, peavad kõik oma väljade väärtused olema aatomi ja

kõik dokumendid on unikaalsed. Seetõttu on kõik relatsioonitabeli, sealhulgas tellitud products tabel, määratluse järgi, on juba esimeses normaalses vormis.

Sellegipoolest sisaldab see tabel koondatud andmed, näiteks sama kliendiandmeid korratakse iga tellitud toote kirjetes. Andmete koondamise tulemus on anomaalia modifitseerimine andmed-tekib dokumentide lisamisel, muutmisel või kustutamisel. Näiteks andmete redigeerimisel tellitud products tabelis võivad esineda järgmised probleemid:

  • Konkreetse kliendi aadress võib andmebaasis sisalduda ainult siis, kui klient tellis vähemalt ühe toote.
  • Kui kustutate salvestuse tellitud toote kohta, kustutage samaaegselt teavet tellimuse ja kliendi kohta, mida on rõhutatud.
  • Kui Jumal keelab, klient on muutnud aadressi, peate uuendama kõik neile tellitud toodete andmed.

Mõned neist probleemidest saab lahendada andmebaasi tuues teine tavaline vorm.

Teine tavaline vorm

On öeldud, et relatsiooniline tabel on sisse lülitatud teine tavaline vormKui see on esimeses normaalses vormis ja selle valikuväljades täielikult sõltub kogu algsest võtmest.

Tellitavad products tabel on esimeses, kuid mitte teises normaalses vormis, kuna CustomerId välja, aadress ja ORDERDATE sõltuvad tellimuste väljale, mis on osa komposiitide esmaklahvust (tellimus, productID).

Teise normaalse vormi teise liikumiseks peate tegema järgmised sammud:

  1. Määrake, millised osad saate esmaklahvi murda, nii et mõned mitte-valdkonnas väljad sõltuvad ühest neist osadest ( need osad ei pea ühest veerust koosnema!).
  2. Looge uue tabeli võtme ja rühmast sõltuvate väljade jaoks uue tabeli ning liiguta need sellesse tabelisse. Osa endisest peamisest võtmest on uue tabeli peamine võti.
  3. Eemaldage teistele tabelitele ümberasustatud välja allika tabelis, välja arvatud need, mis muutuvad välisteks võtmeteks.

Näiteks, et tellida tellitud products tabeli teisele normaalses vormis, peate liikuma Customeride, aadress ja ORDERDATE väljad uuele tabelisse (kutsuge seda tellimusi . 3).

Selle tulemusena omandavad uusi tabeleid selliseid liike. Kuid tabelid teises, kuid mitte kolmandas normaalses vormis sisaldavad andmete muutmise anomaaliaid. Siin on see, mida nad on näiteks tellimuste tabeli jaoks:

  • Konkreetse kliendi aadressi saab andmebaasis siiski sisaldada ainult siis, kui klient tellis vähemalt ühe toote.
  • Tellimuse kustutamine tellimuse tellimiseks tabelis kustutab kirje kliendi kohta.
  • Kui klient on aadressi muutnud, peate värskendama mitmeid andmeid (kuigi eelmise juhtumi puhul on tavaliselt vähem vähem kui eelmisel juhul).

Likvideerige need anomaaliad lülitumise teel kolmas tavaline vorm.

Kolmas tavaline vorm

On öeldud, et relatsiooniline tabel on sisse lülitatud kolmas tavaline vormKui see on teises normaalses vormis ja kõik selle valikuväljad sõltuvad ainult algsest võtmest.

Järjekorra tabel on juba kolmandas normaalses vormis. Mitte-selektiivse koguse väljale sõltub täielikult komposiitide esmane klahv (tellimus, productID). Kolmandas normaalses vormi tellimusteinfo tabelit ei leita siiski, kuna see sisaldab selektiivsete väljade vahelisi suhteid (seda nimetatakse transitiivne sõltuvus- transiidivastaselus) - Aadressivälja sõltub kliendi valdkonnas.

Teisest tavalisest vormi kolmas liikumine kolmandaks peate tegema järgmised sammud:

  • Määrake kõik väljad (või põldude rühmad), millest teised väljad sõltuvad.
  • Looge iga sellise välja (või väljade rühma) ja grupi sõltuvate väljade jaoks uus tabel ja liigutage need sellesse tabelisse. Väli (või valdkondade rühm), millest kõik teised ümberasustatud väljad sõltuvad uue tabeli esmase võtmega.
  • Eemaldage allika tabelist ümberasustatud väljad, jättes ainult need neist, mis muutuvad välisteks võtmeteks.

Tutvustage tellimuste tabeli kolmandale normaalsele vormile, looge uus klientide tabel ja liigutage kliendi ja aadressi väljad. Allikatabeli aadressivälja kustutatakse ja Customeride Field lahkub - nüüd on see väline klahv (joonis 4).

Niisiis, pärast lähtelaadi esitamist tabelite kolmandale normaalsele vormile, kolm - kliendid, tellimused ja järjekorrad.

Normaliseerimise eelised

Normaliseerimine kõrvaldab andmete koondamine, mis vähendab salvestatud andmete kogust ja vabaneda ülalkirjeldatud kõrvalekaldetest. Näiteks pärast eespool nimetatud andmebaasi esitamist kolmandale normaalsele vormile on ilmsed järgmised parandused:

  • Kliendi aadressi teavet saab salvestada andmebaasis, isegi kui see on ainult potentsiaalne klient, kes ei ole veel ühe tellimuse esitamist.
  • Teavet tellitud toote kohta saab kustutada ilma kliendi andmete ja tellimuse kustutamiseta.

Kliendi aadressi või tellimuse registreerimise kuupäeva muutmine nõuab nüüd ainult ühte salvestusmuutust.

Kuidas andmebaaside disain

Tavaliselt sisaldavad kaasaegsed DBMS-i vahendid tabelite ja võtmete loomiseks vahendeid. On ka kommunaalteenused eraldi DBMS (ja isegi teenindavad mitmeid erinevaid DBMS samaaegselt), mis võimaldab teil luua tabeleid, võtmeid ja side.

Teine võimalus luua tabelite, võtmete ja kommunikatsiooni andmebaasi kirjutamine nn DDL-i skripti (DDL - andmete määratluse keel; me räägime sellest veidi hiljem).

Lõpuks on veel üks viis, mis muutub üha populaarsemaks - see on spetsiaalsete tööriistade kasutamine kutsus juhtumi puhul (juhtum - arvutipõhine süsteemitehnoloogia). Seal on mitu tüüpi juhul tööriistu, kuid luua andmebaase kõige sagedamini kasutage tööriistu luua "üksuse-suhe diagrammid" (E / R diagrammid). Nende tööriistade kasutamine on loodud nn loogiline Andmemudel, mis kirjeldab selles registreeritavaid fakte ja objekte (sellistes mudelites tabelite prototüüpe nimetatakse üksusteks (üksusteks) ja väljad - nende atribuudid (atribuudid). Pärast üksuste vaheliste seoste loomist, mis määratlevad atribuudid ja normaliseerimine Keeratud on loodud. füüsiline Andmemudel konkreetse DBMS-i jaoks, kus kõik tabelid, väljad ja muud andmebaasi objektid on määratletud. Pärast seda saate luua kas andmebaasi ise või DDL stsenaariumi selle loomiseks.

Kõige populaarsemate juhtumifondide nimekiri.

Tabelid ja väljad

Tabelite toetavad kõik suhtelised DBMd ja andmeid saab salvestada oma väljad. erinevad tüübid. Kõige tavalisemad andmetüübid.

Indeksid

Just eespool, rääkisime esmaste ja väliste võtmete rollist. Enamikus relational DBMS-is rakendatakse klahve kasutades esemeid, mida nimetatakse indeksid, mida saab määratleda kirjete loendina, mis näitab, millises järjekorras neid pakkuda.

Me juba teame, et relatsiooniliste tabelite kirjed on ebakorrapärased. Siiski on kõik konkreetse ajahetkel rekordil andmebaasi faili täiesti kindel füüsiline asukoht, kuigi see võib muuta andmete redigeerimisprotsessi või DBMSi sisemiste tegevuste tulemusena.

Oletame mingil hetkel aja salvestamist klientide tabelis hoiti niisugusel viisil.

Oletame, et peame selle andmete tellitud kliendi väljale. Tehniliste üksikasjade alandamine, võime öelda, et selle valdkonna indeks on rekordiliste numbrite järjestus, mille kohaselt need peavad olema toodanguna, st:

1,6,4,2,5,3

Kui me tahame luua aadressi väljale sisenemise, on rekordiliste numbrite järjestus erinevad:

5,4,1,6,2,3

Indeksite säilitamine nõuab oluliselt vähem ruumi kui tabeli erinevate sorteeritud versioonide säilitamist.

Kui me peame leidma kliendiandmeid, millest kliendi andmed algavad "Bo" tähemärkidega, leiame nende dokumentide asukoha indeksiga (sel juhul 2 ja 5 (on ilmne, et nende dokumentide indeksis on ilmselge) Rida) ja lugege seejärel teine \u200b\u200bja viies kirje, mis selle asemel kogu tabeli vaatamiseks. Seega vähendab indeksite kasutamine andmete prooviaega.

Oleme juba rääkinud asjaolust, et dokumentide füüsiline asukoht võib muutuda nende kasutajate redigeerimise protsessis, samuti andmebaasi failide manipulatsioonide tulemusena (näiteks andmete kokkusurumine, prügikontaaž jne .). Kui asjakohased muudatused ja indeks esineb, nimetatakse seda toetatud Ja selliseid indekseid kasutatakse enamikus kaasaegsetes DBMS-is. Selliste indeksite rakendamine toob kaasa asjaolu, et iga tabeli andmete muutmine toob kaasa oma seotud indeksite muutuse ja see suurendab DBMSi nõutud aega selliste toimingute läbiviimiseks. Seetõttu tuleks selliste DBMSi kasutamisel luua ainult need indeksid, mis on tõesti vajalikud ja juhitavad kõige sagedamini päringuid.

Piirangud ja reeglid

Enamik kaasaegsem serveri DBMS sisaldab spetsiaalseid esemeid piirangud (Piirangud) või reeglid (Reeglid). Need objektid sisaldavad teavet väljade võimalike väärtuste suhtes kehtestatud piirangute kohta. Näiteks sellise objekti kasutamisel saate selle välja maksimaalse või minimaalse väärtuse määrata ja pärast seda ei võimalda DBMS-i salvestada rekordi, mis ei vasta andmebaasis sellele tingimusele.

Lisaks andmete muutmise paigaldusvalikuga seotud piirangutele on ka võrdluspiirangud (viitepiirangud, näiteks kliendi ja tellimuste tabelite meister-detailide seost, saab rakendada piiranguna, mis sisaldab nõuet, et CustomerId Field (Väline klahv) tellimuste tabelis oli võrdne ühe olemasolevate väärtuste kliendi kliendi valdkonnas valdkonnas väärtused.

Pange tähele, et mitte kõik DBMS toetuspiirangud. Sel juhul rakendada reeglite sarnast funktsionaalsust, saate kas kasutada muid objekte (näiteks vallandajad) või salvestada need reeglid kliendirakendustes, mis töötavad selle andmebaasi.

Esindus

Peaaegu kõik suhtelised DBMS toetab esildisi (vaated). See objekt on virtuaalne tabel, mis annab ühe või mitme reaalse tabeli andmeid. Tõesti, see ei sisalda andmeid, kuid kirjeldab ainult nende allikat.

Sageli luuakse sellised objektid komplekssete päringute andmebaaside säilitamiseks. Tegelikult on vaade säilitamise taotlus.

Vaate loomine kõige kaasaegsetes DBMS-is toimub eriliste visuaalsete vahenditega, võimaldades teil kuvada vajalikke tabeleid ekraanil, nende vaheliste sidemete loomiseks valige kuvatud väljad, siseneb rekord ja teised.

Sageli kasutatakse neid objekte andmete turvalisuse tagamiseks, näiteks andmete vaatamise lahendamisel oma abiga ilma tabelite juurde pääsemist. Lisaks mõned esitamise objektid võivad tagastada erinevaid andmeid sõltuvalt näiteks nimel kasutaja, mis võimaldab tal saada ainult oma andmeid.

Vallandab ja salvestatud protseduurid

Käivitus- ja salvestatud protseduuride toetatud enamikus kaasaegsetes serveris DBMS kasutatakse salvestada käivitatava koodi.

Salvestatud protseduur on eri tüüpi protseduur, mida teostab andmebaasi server. Salvestatud protseduurid on kirjutatud menetluslikesse, mis sõltub konkreetsetest DBMS-st. Nad võivad üksteist helistada, et lugeda ja muuta andmeid tabelites ning neid saab nimetada andmebaasiga töötava kliendirakendusest.

Salvestatud protseduure kasutatakse tavaliselt tavaliste ülesannete täitmisel (näiteks raamatupidamise tasakaalu vähendamine). Neil võivad olla argumendid, tagastamise väärtused, veakoodid ja mõnikord rida ja kõlarite komplektid (sellist andmekogumit nimetatakse mõnikord terminiks andmekogumisse). Kuid viimane kord ei toeta kõik DBMS.

Triggers sisaldavad ka käivitatavat koodi, kuid erinevalt protseduuridest ei saa kliendirakenduse või salvestatud protseduuri nimetada. Käivitus on alati seotud konkreetse tabeliga ja jookseb, kui selle tabeli redigeerimisel on sündmus, millega see on ühendatud (näiteks sisestamine, kustutamine või uuendamine).

Enamikel DBMS-i toetavatest käivitatavatest DBMS-i saab määratleda mitmeid vallandajad, mis viiakse läbi, kui sama sündmus tekib ja määrake tellimus täitmisest.

Objektid esmaste klahvide genereerimiseks

Väga tihti tekivad esmased võtmed ise DBMSi poolt. See on mugavam kui nende põlvkonna kliendirakenduses, sest kui multiplayer operatsioon, võtme põlvkonna DBMS-i kasutamine on ainus viis, kuidas vältida võtmete dubleerimist ja saada oma järjestikuseid väärtusi.

Erinevad DBMS-id kasutavad võtmete loomiseks erinevaid objekte. Mõned neist esemetest salvestavad täisarv ja reegleid, millele see on tekkinud, see saavutatakse käivitajate abil. Selliseid objekte toetatakse näiteks Oracle'is (sel juhul nimetatakse neid järjestuste järjestustena) ja IB andmebaasis (antud juhul nimetatakse neid generaatoriteks).

Mõned DBMS toetavad erilist tüüpi esmaseid klahve. Andmete lisamisel on sellised väljad täidetud automaatselt järjestikused väärtused (tavaliselt täisarv). Juhul Microsoft Access ja Microsoft SQL Server, selliste väljade nimetatakse identiteedi väljad ja puhul Corel Paradox - Auto-Creque väljad (autoincrement väljad).

Kasutajad ja rullid

Volitamata andmebaasi ennetamine on tõsine probleem, mis on lahendatud erinevatel viisidel. Lihtsaim on parooli kaitse või kogu tabel või mõned selle väljad (selline mehhanism toetatakse näiteks Corel paradoksis).

Praegu on teine \u200b\u200bandmekaitse meetod populaarsem - kasutajate nimekirja loomine (paroolid) nimekirja (paroolid). Sellisel juhul kuulub iga andmebaasi objekt konkreetsele kasutajale ja see kasutaja pakub teistele kasutajatele selle objekti andmete lugemiseks või muutmiseks või objekti muutmiseks. Seda meetodit rakendatakse kõigis serveris ja mõnedes töölaua DBMS-is (näiteks Microsoft Access).

Mõned DBMS, enamasti server, toetavad mitte ainult kasutajate nimekirja, vaid ka rolle (rollid). Roll on privileegide komplekt. Kui konkreetne kasutaja saab ühe või mitme rolli ja nendega - ja kõik selle rolli jaoks määratletud privileegid.

Andmebaaside taotlused

Muudatuse ja andmete valiku muutmine metaandmete muutmine ja mõned muud toimingud viiakse läbi päringute (päringu) abil. Enamik kaasaegseid DBMS-id (ja mõned rakenduste arendamise vahendid) sisaldavad raha selliste taotluste loomiseks.

Üks võimalusi andmete manipuleerimiseks nimetatakse "päringuid näiteks" (QBE) - proovi abil. QBE on vahend visuaalsete siduvate tabelite jaoks ja valides väljad kuvatakse päringu tulemusena.

Enamikus DBMS-is (välja arvatud mõned töölaud), visuaalne konstruktsioon päringu kasutades QBE toob kaasa päringu teksti kasutades spetsiaalse SQL päringu keelt (struktureeritud päringu keel). Samuti saate kirjutada taotluse otse SQL-is.

Kursori

Sageli on päringu tulemus ridade ja veergude komplekt (andmestik). Erinevalt relatsioonist tabelist tellitakse sellistes stringide komplektis ja nende tellimus määratakse allika taotlus (ja mõnikord - indeksite olemasolu). Seetõttu saame määrata praeguse joone sellises komplekti ja kursorit, mida nimetatakse kursoriks (kursoriks).

Enamik kaasaegseid DBMS toetab nn kahesuunaliste kursorite (kahesuunaliste kursorite), mis võimaldab teil liikuda mööda saadud andmete kogumit edasi-tagasi. Mõned DBMS toetavad siiski ainult ühesuunalisi kursioone, mis võimaldavad teil liikuda ainult andmeid ainult edasi.

SQL keel

Struktureeritud päringu keel (SQL) on kasumlik keel, mida kasutatakse andmebaaside päringute kujundamiseks kõige kaasaegsetes DBMS-is ja on praegu tööstusstandardis.

Nekromaani keel tähendab, et on võimalik täpsustada, et teil on vaja teha andmebaasiga, kuid te ei saa kirjeldada selle protsessi algoritmi. Kõik SQL-i töötlemise algoritmid loovad DBMSi enda ja ei sõltu kasutajast. SQL Keel koosneb ettevõtjate kogum, mida saab jagada mitmeks kategooriasse:

  • Andmete määratluse keel (DDL) - Andmete määratluse keel, mis võimaldab teil luua, kustutada ja muuta objekte andmebaasides
  • Andmete manipuleerimiskeel (DML) - Andmehaldustikke keel, mis võimaldab teil muuta, lisada ja kustutada andmeid olemasolevatesse andmebaasi objektidesse
  • Andmekontroll Keeled (DCL) - kasutajate privileegide haldamiseks kasutatav keel
  • Tehingu kontrollkeel (TCL) - Keel, kes hallata ettevõtjate rühmade muudatuste tegemist
  • Kursori juhtkeel (CCL) - operaatorid kursori määramiseks, SQL-ettevõtjate ettevalmistamine ja mõningaid muid toiminguid.

Te ütlete üksikasjalikumalt SQL keele kohta ühes järgmistest käesoleva tsükli artiklitest.

Kasutaja määratud funktsioonid

Mõned DBMS-i võimaldavad kasutada kasutaja määratud funktsioone (UDF-kasutaja määratletud funktsioonid). Neid funktsioone salvestatakse tavaliselt välistes raamatukogudes ja need tuleb andmebaasi registreerida, pärast mida neid saab kasutada päringutes, vallandandades ja salvestatud protseduurides.

Kuna kasutajate poolt määratletud funktsioonid sisalduvad raamatukogudes, saab neid luua mis tahes arenguvahendite abil, mis võimaldab teil luua raamatukogud platvormile, millel see DBMS funktsioonid.

Tehingud

Tehing (tehing) on \u200b\u200brühm andmete toimingute, mis on kas täidetud koos või on täielikult tühistatud koos.

Lõpetamine (toime) Tehing tähendab, et kõik tehingus sisalduvad toimingud on edukalt lõpule viidud ja nende toimimise tulemus salvestatakse andmebaasi.

Tehingu tagasipöördumine tähendab, et kõik tehingus sisalduvad teostatud toimingud tühistatakse ja kõik nende toimingute poolt mõjutatud andmebaasi objektid tagastatakse algsele riigile. Tehingu tagasivõtmise võime rakendamiseks palju DBMS toetab sissetulekufaile, mis võimaldavad taastada lähteandmeid tagasipöördumise korral.

Tehing võib koosneda mitmest pesastatud tehingust.

Mõned DBMS-i toetavad tehingute kahefaasilist lõpetamist (kahefaasiline toime) on protsess, mis võimaldab tehinguid mitme andmebaasiga seotud sama DBMSiga.

Jaotatud tehingute toetamiseks (s.o tehingud erinevate DBMSi hallatavate andmebaaside üle), on spetsiaalseid vahendeid, mida nimetatakse tehingute monitoriks (tehingu monitorid).

Järeldus

Käesolevas artiklis arutasime suhteliste DBMSi ehitamise peamisi mõisteid, andmekujunduse aluspõhimõtteid ning rääkis ka selle kohta, milliseid objekte saab andmebaasides luua.

Järgmises artiklis tutvustame meie lugejaid kõige populaarsemate töölaua DBMSiga: DBASE, paradoks, juurdepääs, Visual FoxPro, töötab ja arutavad nende peamisi funktsioone.

Arvutivarja 3 "2000

Avaleht\u003e Loeng

Loeng BD peatükk 2 Relational andmebaasid 2.1. Tingimused ja mõisted Relatsiooniandmebaaside väljatöötamine algas 1960. aastate lõpus, kui esimesed teosed ilmusid, kus arutati võimalust kasutada spetsialisti spetsialistile tuttavad meetodid tabelite vormis andmete vormis esitatud andmete esitamise kujul. Mõned eksperdid selline võimalus esitada teavet nimetatakse lahenduste tabelid, muud - tabellalgoritmid. Teorereli puuduste relatsiooniandmebaaside tabelina teabe esitamise viisiks nimetati Datalog mudelid. Suhtealaste andmebaaside teooria asutaja on ettevõtte IVM Dr. EF CoDD töötaja, kes on avaldatud 6. juunil 1970. Artiklile "Suitsetamine suurte kollektiivsete andmepankade relatsiooniline andmeedastus" "on suurte jagatud andmepankade andmete relatsiooniline mudel ". Käesolevas artiklis kasutati esimest korda mõistet "suhteline andmemudel", mis pani alguse suhteliste andmebaasidega. 1970. aastatel välja töötatud relatsiooniliste andmebaaside teooria. Ameerika Ühendriikides, Dr. F. CoDD, tugines Te-oryol komplekti matemaatilisele aparatuurile. Ta tõestas, et mis tahes andmekogumi saab eelnevalt panna kahemõõtmeliste tabelite kujul, mis on seotud metemi-tšekitud spetsiaalsete liikide tabelitena. Inglise sõna "suhe" "suhtumine") ja nimi "Relational Data Mudel" tekkis. Praegu on andmebaaside kujundamise teoreetiline alus (andmebaas) suhtelise algebra matemaatiline aparatuur (vt alldaz. 1.2). Seega relatsiooniandmebaas on aforing (andmed) objektid esindatud kujul kahemõõtmelise massiivide - tabelid ühendatud teatud võlakirju. Andmebaas võib koosneda ühest tabelist. Enne vaatamisväärsusi kaaluge relatsiooniandmebaaside edasiseks uurimiseks teoorias ja praktikas kasutatavaid mõisteid ja määratlusi. Andmebaasi tabel- kahemõõtmelise massiivi, mis sisaldab ühe objektide klassi moodustumist. Relational Al-Gebra teoorias nimetatakse kahemõõtmelise massiivi (tabelit) suhe. Tabel koosneb järgmistest elementidest: väli, rakk, per-täht (joonis 2.1). Alasisaldab ühe BD-objekti iseloomustava märgi väärtusi. Tabeli väljade arv vastab BOD-objektide iseloomustava at-tähemärkide arvule. 22. Kambersisaldab vastava välja eriväärtust (ühe objekti omadus). Rekord- Tabel rida. See sisaldab kõigi ühe objekti iseloomustavate märkide väärtusi. Andmete arv (read) vastab vahekaardil sisalduvate objektide arvule. Andmebaasi tingimuste teoorias rekordvastab kontseptsioonile koristama- üksteisega seotud atribuutide järjestus ja (s). Graafikute teoorias kohussee tähendab lihtsa filiaali orienteeritud graafik - puit. Vahekaardil. 2.1 Näidatakse relatsiooniandmebaaside teoorias ja praktikas kohaldatavaid mõisteid. Üks olulisi kontseptsioone, mis on vajalikud suhteliste andmebaaside op-tymal struktuuri loomiseks, on võtme mõiste või võtmevälja mõiste. Võtiväli kaalutakse, mille väärtused määravad üheselt kindlaks kõigi teiste tabeli väljade väärtused. Näiteks "passi number" väli või "maksupunkti identifitseerimisnumber (INN)" määrab üheselt iga inimese omadused (vastavate andmebaasi tabelite koostamisel personaliosakondade või ettevõtte raamatupidamise jaoks).
23

Võtme võti ei pruugi olla üks, vaid mitu väljad. Sellisel juhul võivad paljud väljad olla võimalikud peamised võti ainult siis, kui kaks sõltumatut tingimust on täidetud: unikaalsus ja minimaalsus. Iga väli, mitte esmases võti, nimetatakse laua peamiseks valdkonnaks.

Unikaalsusvõti tähendab, et igal ajal ei saa andmebaasi tabel sisaldada kahte erinevat kirjet, millel on sama peamised väljad. Unikaalsuse tulemuslikkuse tingimused on kohustuslik. Seisukord minimaalsuspõhiväljad tähendab, et ainult valitud väljade väärtuste kombinatsioon vastab andmebaasi tabeli kirjete UNI-kaltsiliikumise nõuetele. See tähendab ka seda, et ükski sissetulev välja ei saa sellest välja jätta ilma unikaalsuse häirimata. Kui moodustate andmebaasi tabeli klahvi, mis koosneb mitmest väljast, peate juhinduma järgmistest positsioonidest: ei tohiks olla võtmevälja võtmesse, mille väärtused ise kindlasti tuvastavad kanded vahekaardil. Näiteks ei tohiks te luua võtit, mis sisaldas samaaegselt "passi numbrit" ja "ID-numbrit", kuna iga nende atribuudid võivad ainulaadselt tuvastada tabelis kanded; Võtmes on võimatu kaasata mitte-unikaalse välja, s.o valdkonnas, mille väärtusi saab tabelis korrata. Igal tabelis peab olema vähemalt üks hoiatusnumber, mis on valitud esmane võti.Kui tabelis on väljad, millest igaüks määratleb need väljad kindlasti need väljad alternatiivsed võtmed.Näiteks, kui valite nano-plaastri identifitseerimisnumbri kui esmane võti, siis passi number on alternatiivne võti. 2.2. Relatsiooniandmebaasi tabelite normaliseerimine Relatsiooniandmebaas on teatav tabelite imetamine omavahel ühendatud. Tabelite arv ühes failis või ühes andmebaasis sõltub paljudest teguritest, millest on järgmised: andmebaasi kasutajate koosseis, mis tagab teabe terviklikkuse (eriti paljudes inimestes oluline infosüsteemidah), tagades väikseima mälu koguse ja mini-ajaandmete töötlemise. 24.

Nende tegurite arvestus relatsiooniandmebaaside projekteerimisel viiakse läbi tabelite normaliseerimismeetodite meetoditega ja nende vahel.

Tabelite normaliseeriminesee on ühe andmebaasi tabeli eraldusmeetodid mitmeks tabeliteks, üldiselt eespool loetletud vastavatele nõuetele. Tabeli normaliseerimine on järjestikune muutus tabeli struktuuris, kuni see on rahul uue normaliseerimisvormi nõuetega. Kokku kuus normaliseerimisvormi:
    Esimene normaalne vorm - 1NF); Teine normaalne vorm (teine \u200b\u200bnormaalne vorm - 2NF); Kolmas tavaline vorm (kolmas tavaline vorm - ZNF); Normaalne poiste vorm - koodi (Brice - CoDD normaalne vorm -BcNF); Neljas tavaline vorm (ForethTavaline vorm - 4NF); Viies tavaline vorm või tavaline projektsioon kuju - ühendused (viies tavaline vorm - 5NF või PJ / NF ).
Normaalsete vormide kirjeldamisel kasutatakse järgmist intensiivsust: "Funktsionaalne sõltuvus väljade vahel"; "Täielik funktsionaalne sõltuvus väljade vahel"; "Mitmekülgne funktsionaalne sõltuvus väljade vahel"; "Transitiivne funktsionaalne sõltuvus väljade vahel"; "Vastastikune sõltumatus väljade vahel." Funktsionaalne sõltuvuspõlvade A ja B vahel nimetatakse sõltuvuseks, kus iga väärtus A igal ajal vastab ainsale väärtusele kõigist võimalikest väärtusele. Funktsionaalse sõltuvuse näide on suhe maksumaksja identifitseerimisnumbri ja tema passi numbri vahel. Täielik funktsionaalne sõltuvuskomposiitvälja a ja põllu vahel B nimetatakse sõltuvusest, millal välja B sõltub funktsionaalselt väljalt A-st ja ei sõltu väljale A-alamhulgast A. Mitmekülgne funktsionaalne sõltuvusväljade vahel on kindlaks määratud järgmisel viisil. V. V. V. V. V. V. V. väärtuste vastavate väärtuste "hea defo-jagatud komplekti" jaoks on väli B Sisaldab väljad "teema" (väli A) ja "hindamise" (väljale B), seejärel B-l B on "hästi määratletud komplekti" up-tähed: 1, 2, 3, 4, 5, s.o iga valdkonna valdkonnas "objekti" valdkonnas, on mitmekordselt hinnatud "hästi määratletud palju" valdkonnas väärtused "hindamine". Transitiivne funktsionaalne sõltuvuspõlvade A ja C vahel on olemas, kui valdkond funktsionaalselt sõltub 25 väljast B ja valdkonnas funktsionaalselt sõltub valdkonnas A; Sel juhul ei ole valdkonna funktsionaalset sõltuvust ja väljast B. Varjade vastastikune sõltumatusmääratud järgmiselt. Mitmed väljad on üksteisest sõltumatu, kui ükski neist ei sõltu teisest. Esimene normaalne vorm.Tabel on esimeses normaalses vormis, kui ja ainult siis, kui ükski väljad ei sisalda rohkem kui ühte väärtust ja mis tahes võtmevälja ei ole tühi. Esimene normaalne vorm on suhtelise mo-deli. Mis tahes tabelis relatsiooniandmebaasis automaatselt on esimeses normaalses vormis, teine \u200b\u200bon lihtsalt mitte-võimalik määratlus. Sellises tabelis ei tohiks see sisaldada XIA väljad (märgid), mida võiks jagada mitmeks väljadeks (märgid). Reeglina erakordselt on tabeleid, nonsense, mis ei ole mõeldud arvutite töötlemiseks nende sisalduva teabe töötlemiseks. Näiteks tabelis. 2.2 kujutab tabeli frag-politseinik "Universaalsed metallist lõikamismasinad", millele on avaldatud metallist lõikamismasinate eksperimentaalse uurimis- ja uurimisinstituut (EIRES). See tabel on ebanormaalne järgmistel põhjustel. 1. See sisaldab jooni, millel on ühes lahtris ühes valdkonnas mitmeid väärtusi: "Ravi suurim läbimõõt, MM" ja "spindli kiirus, RPM". 2. Üks väli - " mõõtmed (Pikkus x laius x kõrge), mm »võib jagada kolme väljad:" Pikkus, MM "," Shi-Rin, MM "ja" kõrgus, MM ". Sellise eraldamise teostatavust võib põhjendada vajaduse korral piirkondade hilisemate arvelduste järele või okupeeritud mahtude arv. Lähtetabeli tuleb muuta esimese nulli kuju. Selleks on vaja: väljad "Töötlemise suurim läbimõõt, MM" ja "spindli sagedus, RPM" jagatakse mitmetesse väljadesse vastavalt samas rakus sisalduva väärtuste arvu järgi ;
26

Väli "Üldine mõõtmed (pikkus x laiuse kõrgus), mm", jagatud kolmeks väljadeks: "pikkus, mm", "laius, mm", "kõrgus, mm". Selle tabeli peamine valdkond võib olla väli "Masina mudel" või "Nr P / P", millel on tabelis tabelis. 2.3. Mõtle teist näidet. Joonisel fig. 2.2 kujutab eksami avalduse keldri fragmenti, mis nagu eelmises näites algselt mõeldud arvutitele. Laske meil luua andmebaasi testimise ja eksamiseansi tulemuste automatiseeritud töötlemise jaoks vastavalt
27

eksami avalduse sisuga. Selleks teisendage vormi sisu andmebaasi tabelisse. Kas-läheb välja vajadust järgida tingimuste funktsionaalse de-vastavusse valdkondade vahel, on vaja moodustada mini-emumeid, kaks tabelit (joonis 2.3) (iga tabeli võtmeväljad on esile tõstetud paksus). Esimene tabel sisaldab iga õpilase krediidireitide (eksami) tulemusi CONK-retalobjektis. Teine tabel sisaldab saadud konkreetse rühma krediidi (eksami) tulemusi konkreetse teema kohta. Esimeses tabelis on võti üliõpilase FIO FIO ja teises tabelis - "distsipliini" valdkonnas. Tab liinid peavad olema omavahel seotud valdkondades "distsipliini" ja "rühma cipher".

Esitatud tabeli struktuurid vastavad täielikult esimese normaalse vormi nõuetele, kuid seda iseloomustavad järgmised puudused: Uute andmete lisamine tabelisse nõuab kõigi väljade sisendväärtusi; Iga tabeli igas reas on vaja tutvustada "distsipliini", "fio fio-fio-fio korduvaid väärtusi," Grupp Cipher ". Järelikult on tabelite ja nende struktuuri koosseisu ja nende struktuuri koostisega selget koondamist, mis loomulikult tugevus-buet täiendav mälu. Loetletud puuduste vältimiseks on vaja tabelite testida teise või kolmanda normaalse vormi. Teine tavaline vorm.Tabel on teises normaalses vormis, kui see vastab esimese normaalse vormi ja kõigi selle väljade nõuetele, mis ei ole primaarses võti kaasatud, on seotud peamise võtmega täieliku funktsionaalse sõltuvusega. 28.

Kui tabelil on lihtne esmane võti, mis koosneb ainult ühest väljast, on see automaatselt teises normaalses vormis.

Kui komposiidi esmane võti on tabel vabatahtlik, kuid see on teises normaalses vormis. Siis tuleb see jagada kaheks või enamaks tabeliteks, nii et esmane võti tuvastas ühemõtteliselt väärtust mis tahes valdkonnas. Kui on olemas vähemalt üks väli, mis ei sõltu suledest, peavad seejärel esmaklahv olema lubatud. Kui selliseid veergusid ei ole, peate lisama uue veeru. Nende tingimuste põhjal, mis määravad teise normaalse vormi, saab koostatud tabelite omaduste kohaselt tõmmata järgmised järeldused (vt joonis 2.3). Esimesel tabelis ei ole otsest seost õpetaja võtmevälja ja FIO FIO vahel, kuna erinevad õpetajad saavad testida või eksami teha. In twc-s on täielik funktsionaalne sõltuvus ainult kõigi teiste valdkondade ja võtmevälja "distsipliini" vahel. Samamoodi puudub otsene seos teises tabelis vahele võtmevaldkonna ja täieliku FIO õpetaja. Andmebaasi optimeerimiseks, eelkõige vajaliku mälu vähendamiseks, mis on vajalikud "distsipliini" väljade ja täieliku nime väärtuste iga kirje vajadusest korrata, on vaja muuta andmebaasi struktuuri - eel- Allikas tabelid teises normaalses vormis. Muudetud andmebaasi struktuuri tabelite koosseis on näidatud joonisel fig. 2.4. Transformeeritud andmebaasi struktuur koosneb kuuest vahekaardist, millest kaks on omavahel seotud (iga tabeli võtmeväljad on esile tõstetud paksus kirjas). Kõik tabelid vastavad teise normaalse vormi nõuetele. Viiendal ja kuues tabelis on valdkondades korduvad väärtused, kuid arvestades, et need väärtused on täisarvud teksti andmete asemel, on teabe salvestamiseks vajalik mälu kogus oluliselt väiksem kui allikatabelites (vt joonis fig. 2.1). Lisaks uue struktuuri andmebaasi tagab võimaluse täita tabeleid erinevate spetsialistide (juhtimisteenuste aluseks). Andmebaasi vahekaartide edasine optimeerimine vähendatakse nende kolmandale normaalsele vormile. Kolmas tavaline vorm.Tabel asub kolmandas riigis, kui see vastab teise ja hallituse määratlusele ja ükski selle võtmevaldkonnad sõltuvad funktsionaalselt muudest mitte-võtmeväljast. 29.

Samuti võite öelda, et tabelis on kolmandas riigis, kui see on teises normaalses vormis ja iga mitte peamine väli ei sõltu algsest võtmest. Nõue kolmanda normaalse vormi vähendatakse, et tagada kõigi võtmeväljade sõltuvad ainult esmane võti ja ei sõltu üksteisest. Vastavalt nendele nõuetele andmebaasi tabelites (vt joonis 2.3), kolmas, kolmas ja neljas tabel on kolmas normaalne vorm. Viienda ja kuuenda tabeli tuua kolmandas normaalses vormis, loome uue tabeli, mis sisaldab teavet koossaja sajade kohta, mille eksamid või testid õpilaste rühmade peetakse. Võtmena luua "counter" valdkonnas, vuntsid rekord number tabelis, kuna iga kirje peab olema unikaalne. kolmkümmend

Selle tulemusena saame uue andmebaasi struktuuri, mis on näidatud joonisel fig. 2.5 (iga tabeli võtmeväljakud on esile tõstetud rasvases kirjas). See struktuur sisaldab seitse vahekaarti, mis vastavad kolmanda normaalse vormi nõuetele.

Poiste tavaline vorm - koodi.Tabel on poiste tavapärases vormis - kood ainult siis, kui selle valdkondade funktsionaalne sõltuvus väheneb võimaliku klahvi täieliku funktsionaalse sõltuvuse suhtes. Selle määratluse kohaselt andmebaasi struktuuris (vt joonis 2.4) vastavad kõik tabelid poiste tavapärase vormi nõuetele - kood. Andmebaasi tabelite edasist optimeerimist tuleks vähendada täieliku tabeli lagunemiseni. Tabeli täielik laguneminenad kutsuvad sellist komplekti meelevaldse arvu oma prognoose, mille ühendus on täielikult kokku laua sisuga. Projekti nimetatakse tabeli koopiaks, millesse ühe või mitme uue tabeli veeru ei kuulu. Neljas tavaline vorm.Neljas normaalvorm on viienda tavalise vormi erijuhtum, kui täielik lagunemine peaks olema kahe prognoosi ühend.
31

Sellist tabelit on väga raske leida nii, et see oleks neljandas normaalses vormis, kuid ei vastanud viienda normi määratlusele.

Viies tavaline vorm.Tabel on viiendas normaalses vormis, kui ja ainult siis, kui kõik prognoosid sisaldavad kõiki prognoose igas Full DeK asendis. Tabelis, millel ei ole ühte täielikku lagunemist, on ka viiendas normaalses vormis. Praktikas lõpeb andmebaasi tabelite optimeerimine kolmanda normaalse vormiga. Tabelite loomine neljandale ja viiendale tavalisele vormile esindab meie arvates puhtalt teoreetilist huvi. Peaaegu see probleem otsustab uue tabeli loomise taotluste väljatöötamisel. 2.3. Tabelite vaheliste sidemete projekteerimine Andmebaaside allikalaudade normaliseerimise protsess võimaldab teil luua optimaalse infosüsteemi struktuuri - kord töötavad andmebaas, mis nõuab väikseimaid mäluvahendeid ja selle tulemusena tagades kõige väiksema juurdepääsu teabele. Samal ajal nõuab ühe allika tabeli eraldamine mitmeks COM-ile infosüsteemide disaini ühe olulisema seisundi rakendamist - teavitamise tagamine andmebaasi toimimise käitamise ajal. Ülaltoodud näites allikakaartide normaliseerimise näide (vt joonis 2.3), saime lõpuks seitse tabelit kolmandale ja neljandale normaalsele vormile. Nagu praktika näitab, reaalsetes tootmise ja äriandmebaaside on multiplayer süsteemid. See kehtib nii loomise ja andmete säilitamise kohta sõelumise tabelites ja teabe kasutamise kohta otsuseid. Ülaltoodud näites on ülikooli või kolleegiumi haridusprotsessi juhtimise tegelikult toimivas süsteemis tehtud koolitusrühmade per-in-in-in-trükirühmi moodustamisega aktsepteerimise komisjonitasude registreerimisel sissepääsueksamite tulemuste põhjal. Teabe edasine säilitamine üliõpilaste koosseisu kohta ülikoolide rühmades on määratud dekaanidele ja kolledžites - haridusasutustes või asjaomastes struktuurides. Gruppide haridusvaldkondade koosseis määrab teiste teenuste või spetsialistide poolt. Teave õpetaja-ruumi kohta moodustub personaliosakondades. Testide ja eksamite tulemused on vajalikud dekaani ja kontorite juhtide jaoks, sealhulgas teha otsuseid 32 stipendiumiõpilasele või "Siphel-DIY-ga" vaeste õpilaste väljavõtmisel. Kõikide andmebaasi tabelite muudatused peaksid olema kõikides teistes tabelites piisava muutuse muutmine. See on andmebaasi terviklikkuse olemuse olemus sisuliselt. Prak-Tsiliselt see ülesanne tehakse andmebaasi tabelite vaheliste seoste loomisega. Me sõnastame põhireeglid tabelite vaheliste seoste loomiseks. 1. Valige kahest ühendatud tabelist peamisest ja alluvusest. 2. Valige igas tabelis võtme välja. Võtmevälja nimetatakse peamiseks tabeliks esmane võti.Sub-tabeli peamist valdkonda kutsutakse väline võti. 3. Tabelite sidumisväljal peab olema üks andmeliik. 4. Tabelite vahel on järgmised tüübid: "üks kuni üks"; "Üks paljudele"; "Paljud paljudele": "Üks ühele" ühendus on loodud juhtudel, kus peamise tabeli konkreetne joon igal ajal on seotud ainult ühe alluva tabeliga; Side "Üks paljude" on loodud juhtudel, kus peamise tabeli konkreetne rida igal ajal
33 on seotud mitme alluva tabeli stringidega; Sellisel juhul on iga orjalaua rida ühendatud ainult ühe liiniga peamise tabeliga; Ühendus "Paljud paljud" on loodud juhtudel, Clang-Yes, peamise tabeli konkreetne joon igal ajal on seotud mitme alluva tabeli stringiga ja samal ajal on seotud üks orjalaua üks rida. peamise tabeli libisemisklahvidega. Peamise põhiväärtuse muutmisel peamistes tabelis on võimalik sõltuva tabeli järgmised valikud. Cascading.Peamise põhiandmete muutmisel peamistes tabelis muudetakse sõltuva tabeli vastavaid väliseid põhiandmeid. Kõik võlakirjade säilitamine on säilinud. Piirata.Kui üritate sulgeda sulgede väärtust, mis sõltuvad sõltuva tabeli read, lükatakse muudatused tagasi. On lubatud muuta ainult nende põhivõti väärtusi, mille puhul ei ole mingit seost sõltuvalt tabeliga. Seadistamine (suhe).Peamiste põhiandmete muutmisel on väline klahv seatud määramata väärtusele (null). Teave sõltuva tabeli stringide kuulumise kohta on kadunud. Kui muudate primaarse võtme mitmeid väärtusi, siis sõltuvad tabelis on mitmeid rida rühmi, mis olid varem muutunud võtmetega seotud. Pärast seda ei ole võimalik kindlaks määrata, milliseid jooni esmase võtmega ühendati. Joonisel fig. 2.6 näitab joonisel fig. 2.5. Kontrolli küsimused 1. Andke definitsioonidele järgmistele andmebaasi tabelile toodetele: väli, rakk, salvestamine. 2. Mida mõisted "võti" tähendab "võtmevälja"? 3. Millist võtmevälja nimetatakse peamiseks võtmeks ja mis on välise võtme? 4. Milline on andmebaasi tabelite normaliseerimise protsess? 5. Millised on viie tavalise andmebaasi tabelite vormid? 6. Andke andmebaasi tabelite vahelised järgmised mõisted: "üks kuni üks"; "Üks paljudele"; "Paljud paljudele".