Elementaire conceptkenmerken van relationele databasebeheersystemen. Gegevensbestand. basis database-objecten. ondertitel

Relationele DBMS hebben een aantal functies die van invloed zijn op de organisatie van extern geheugen. De belangrijkste kenmerken zijn de volgende.

De aanwezigheid van twee niveaus van het systeem:

niveau direct gegevensbeheer in extern geheugen (evenals meestal het beheren van RAM-buffers, het beheren van transacties en het loggen van databasewijzigingen),

taalniveau(bijvoorbeeld het niveau dat de SQL-taal implementeert).

Met een dergelijke organisatie moet het subsysteem op een lager niveau in het externe geheugen een reeks basisstructuren bewaren, waarvan de specifieke interpretatie een van de functies is van het subsysteem op het hogere niveau.

Steun directory-relaties(naslagwerken). Informatie met betrekking tot de naamgeving van database-objecten en hun specifieke eigenschappen (zoals de structuur van de indexsleutel) wordt onderhouden door het subsysteem op taalniveau. In termen van externe opslagstructuren verschilt een catalogusrelatie niet van een reguliere databaserelatie.

Regelmaat van datastructuren. Aangezien het hoofdobject van het relationele datamodel een platte (in 1NF) tabel is, kan de hoofdset van externe opslagobjecten een zeer eenvoudige regelmatige structuur hebben. Tegelijkertijd is het noodzakelijk om ervoor te zorgen dat de operatoren op taalniveau efficiënt kunnen worden uitgevoerd, zowel op één relatie (eenvoudige selectie- en projectiebewerkingen) als op verschillende relaties (de meest voorkomende en tijdrovende bewerking is het samenvoegen van verschillende relaties ). Hiervoor moeten extra indexen in het externe geheugen worden ondersteund.

Om te voldoen aan de eis van betrouwbare opslag van databases, is het noodzakelijk om: opslagredundantie data, die meestal wordt geïmplementeerd als een databasewijzigingslogboek.



Dienovereenkomstig verschijnen de volgende typen objecten in het externe geheugen van de database:

relatie strings- het grootste deel van de database, voor het grootste deel direct zichtbaar voor gebruikers;

bestuursstructuren- indexen die zijn gemaakt op initiatief van de gebruiker (beheerder) of het bovenste niveau van het systeem om de efficiëntie van de uitvoering van query's te vergroten en die gewoonlijk automatisch worden onderhouden door het lagere niveau van het systeem;

journaal informatie ondersteund om te voldoen aan de behoefte aan betrouwbare gegevensopslag;

service informatie, onderhouden om te voldoen aan de interne behoeften van het lagere niveau van het systeem; De set overheadstructuren hangt af van de algehele organisatie van het systeem, maar de volgende overheadkosten moeten doorgaans worden gehandhaafd:

interne catalogi (directories) die de fysieke eigenschappen van database-objecten beschrijven, zoals het aantal relatieattributen, hun grootte en, mogelijk, datatypes;

een beschrijving van de voor deze relatie gedefinieerde indexen;

· beschrijvingen van vrij en bezet geheugen in externe geheugenpagina's die zijn toegewezen aan opslagrelaties; dergelijke informatie is vereist om vrije ruimte te vinden bij het invoegen van tuples.

Basis geheugenstructuren

Structuur en soorten pagina's

De belangrijkste eenheid van gegevensopslag en -manipulatie in een bestandsloze organisatie is: geheugenpagina(of gegevensblok) is een deel van de geheugenruimte van de database-opslagomgeving, zo georganiseerd dat het bestaat uit een reeks van dergelijke delen (pagina's) met dezelfde lengte.

Een pagina is een uitwisselingseenheid met extern geheugen. De paginagrootte ligt vast voor de database en wordt ingesteld wanneer deze (de database) wordt gemaakt. Geheugenpagina's hebben unieke identifiers, wat meestal hun opeenvolgende nummers zijn. De inhoud van een geheugenpagina kan in één keer naar het klembord worden gelezen of naar het externe geheugen worden geschreven vanuit de buffer naar het externe geheugenapparaat. In sommige systemen kunnen geheugenpagina's intern zijn georganiseerd, ze kunnen bijvoorbeeld: inhoudsopgave Een die directe toegang biedt tot de opgeslagen records op de pagina. Pagina's met de eenvoudigste organisatie, die voorzien in opeenvolgende plaatsing van records erin, worden in sommige toegangsmethoden aangeroepen blokken records.

Er zijn vier soorten pagina's:

gegevenspagina's,

Indexpagina's

blob-pagina's,

beetje pagina's.

Gegevenspagina. De basiseenheid voor het uitvoeren van wisseltransacties. De structuur van de gegevenspagina wordt getoond in Fig. 32.

Rijst. 32. Structuur van de gegevenspagina

Pagina titel bevat interne systeeminformatie die wordt gebruikt door het DBMS in de paginabeheerengine.

Gegevens op de pagina worden gepresenteerd als lijnen. Elke rij komt overeen met een tupel van de weergegeven relatie.

Slots karakteriseren de plaatsing van rijen met gegevens op de pagina. In de database heeft elke tuple een unieke interne systeemidentificatie die het paginanummer en regelnummer bevat op de pagina waaraan de tuple is toegewezen. De inhoud van het slot is de identifier van de regel die ermee correspondeert (volgens het nummer op de pagina). Bij het bestellen van relatie-tupels op de waarde van een attribuut, worden rijen niet fysiek verplaatst op de overeenkomstige pagina's. In plaats daarvan wordt de inhoud van de slots opnieuw opgebouwd.

Indexpagina. Indexpagina's zijn ontworpen om indexstructuren op te slaan die door het DBMS worden gebruikt bij het implementeren van toegangsmethoden, en zijn georganiseerd als B-trees.

blob-pagina. blob-pagina's ( B inary L groot ob ject) zijn ontworpen om semi-gestructureerde informatie op te slaan die grote teksten, grafische informatie, binaire codes bevat. Deze gegevens worden behandeld als stromen van bytes van willekeurige grootte, en links naar deze pagina's worden gevormd in de gegevenspagina's. De gegevens van dergelijke typen in vroege DBMS behoorden tot het MEMO-type.

bit pagina. Bitpagina's bevatten beschrijvingen voor andere soorten pagina's. De paginabeschrijving heeft twee componenten − type pagina en zijn voorwaarde (vrij/druk).

Tabelruimten

Gemeenschappelijk voor DBMS is het concept: ruimte(voor sommige DBMS tabelruimte). Tabelruimten bevatten verschillende logische gegevensstructuren zoals tabellen en indexen, tijdelijke tabellen en een datadictionary. Het groeperen van opgeslagen gegevens in ruimtes wordt uitgevoerd volgens een aantal criteria: de frequentie van gegevenswijzigingen, de aard van het werk met gegevens (voornamelijk lezen of schrijven, enz.), De groeisnelheid van het gegevensvolume, het belang, enz. Zo worden bijvoorbeeld alleen-lezen tabellen in één ruimte met één opslaginstelling geplaatst, worden transactietabellen in een ruimte met verschillende instellingen geplaatst, enzovoort. (Afb. 33).

Afb.33. Fysieke locatie van gegevens per apparaat

Eén logische gegevenseenheid (tabel of index) bevindt zich in precies één ruimte, die kan worden toegewezen aan meerdere fysieke apparaten of bestanden. Tegelijkertijd kunnen niet alleen logische gegevenseenheden (tabellen gescheiden van indexen), maar ook gegevens met dezelfde logische structuur (een tabel op meerdere schijven) fysiek worden gescheiden (op verschillende schijven). Dit type opslag wordt genoemd horizontale fragmentatie(of snijden): de tabel is door rijen in fragmenten verdeeld. Fragmentatie is een manier om de prestaties te verbeteren.

Er kunnen verschillende schema's worden gebruikt voor het schrijven van gegevens naar gefragmenteerde tabellen. Een ervan is cirkelvormig, wanneer sommige rijen die in de tabel zijn ingevoegd, naar het eerste fragment worden geschreven, het andere deel naar het volgende, enzovoort in een cirkel. In dit geval kunnen door parallellisatie de prestaties van bewerkingen en query's voor gegevenswijziging worden verhoogd.

Er is nog een ander schema dat de logische verdeling van tabelrijen per sleutel bevat ( clustering). Met dit schema kunt u voorkomen dat u CPU-tijd verspilt en het totale aantal I / O-bewerkingen vermindert. De essentie is dat wanneer een tabel wordt gemaakt, de volledige waarderuimte van de tabelsleutel wordt verdeeld in verschillende intervallen en dat rijen met sleutels die tot verschillende intervallen behoren, verschillende locaties krijgen. Vervolgens wordt bij het verwerken van de aanvraag rekening gehouden met deze informatie door de optimizer. Als een sleutelzoekopdracht wordt uitgevoerd, kan de optimalisatietabel fragmenten uit de overweging verwijderen die niet aan de selectievoorwaarde voldoen.

Laat, bijvoorbeeld, voor een tafel persoon er worden twee secties gemaakt deel 1 En deel 2, die zich elk in hun eigen tabelruimte bevinden ( tblspace1 En tblspace2). Records met een veldwaarde Num van 1 tot 499 bevinden zich in het eerste gedeelte en vermeldingen met nummers van 500 tot 1000 - in het tweede (Fig. 34.).

Dan wanneer gevraagd:

SELECTEER FIO VAN persoon WAAR Num TUSSEN 10 EN 40

de optimizer zoekt alleen in de sectie part1, wat een aanzienlijke prestatiewinst kan opleveren in een tabel met tienduizenden rijen.

Dergelijke mechanismen voor gegevensfragmentatie worden ondersteund door bijna alle moderne DBMS, die vaak wordt gebruikt bij het maken van krachtige systemen.

Rijst. 34. Voorbeeld van recordclustering

Relationele databasestructuur.

DB-typen.

De belangrijkste kenmerken van het DBMS.

Het concept van een database, DBMS.

Plan

VOORWAARDEN: database, databasebeheersysteem (DBMS),

relationele database, databaserecord, databaseveld, databasesleutelveld, databasetabel, databasequery, databaseformulier, databaserapport, databasemacro, databasemodule.

Een van de belangrijkste gebieden van computergebruik in de moderne informatiemaatschappij is de opslag en verwerking van grote hoeveelheden informatie.

Database (DB ) is een gesystematiseerde opslagplaats van informatie over een specifiek onderwerpgebied, waartoe verschillende gebruikers toegang hebben om hun problemen op te lossen.

Verder, aan de hand van het voorbeeld van een van de meest voorkomende databasebeheersystemen - Microsoft Access onderdeel van het populaire Microsoft Office-pakket - we maken kennis met de belangrijkste soorten gegevens, hoe databases te maken en hoe met databases te werken.

Database- een georganiseerde set gegevens bedoeld voor langdurige opslag in het externe geheugen van een computer en voor permanent gebruik. Voor het opslaan van de database kan worden gebruikt als een enkele computer, en vele onderling verbonden computers.

Als verschillende delen van een database zijn opgeslagen op veel computers die zijn verbonden door een netwerk, dan wordt zo'n database genoemd gedistribueerde databank.

Databasemanagementsysteem(DBMS ) is software waarmee u een database kunt maken, de daarin opgeslagen informatie kunt bijwerken en er gemakkelijk toegang toe kunt krijgen om te bekijken en te zoeken.

Op dit moment is de meest gebruikte DBMS Microsoft Access, FoxPro, dBase. DBMS worden gedeeld door manier van organiseren databases op netwerk, hiërarchisch En relationele DBMS.

De belangrijkste kenmerken van het DBMS:

ü Update, aanvulling en uitbreiding van de database.

ü Hoge betrouwbaarheid van informatieopslag.

ü Opstellen van volledige en betrouwbare informatie over verzoeken.

ü Middelen om informatie in de database te beschermen.

databases zijn feitelijk en documentair.

Factografische databases bevatten beknopte informatie over de beschreven objecten, gepresenteerd in een strikt gedefinieerd formaat. De bibliotheekdatabase slaat bibliografische informatie op over elk boek: jaar van uitgave, auteur, titel, enz. De personeelsafdeling van de instelling bewaart persoonlijke gegevens van medewerkers: volledige naam, i, o, geboortejaar en plaats, enz. Database van wetgevende handelingen op het gebied van het strafrecht zullen bijvoorbeeld wetteksten omvatten; Database van moderne muziek - tests en notities van liedjes, referentie-informatie over componisten, dichters, artiesten, geluidsopnamen en videoclips. Bijgevolg bevat een documentaire database uitgebreide informatie van verschillende soorten: tekstueel, audio, multimedia.

Voor het opslaan van de database kan worden gebruikt als een enkele computer, en vele onderling verbonden computers.

Als verschillende delen van een database zijn opgeslagen op veel computers die zijn verbonden door een netwerk, dan wordt zo'n database genoemd gedistribueerde database.

bekend drie hoofdtypen: gegevens ordenen in DB en links daartussen:

· hiërarchisch (in de vorm van een boom),

· netwerk,

· relationeel .

In een hiërarchische database er is een ordening van de elementen in het record, één element wordt als het belangrijkste beschouwd, de rest zijn ondergeschikten. Het zoeken naar een data-element in een dergelijk systeem kan tijdrovend zijn vanwege de noodzaak om achtereenvolgens verschillende hiërarchische niveaus te doorlopen.

Voorbeeld: een hiërarchische database wordt gevormd door een map met bestanden die op schijf zijn opgeslagen.

Dezelfde database is een generieke genealogische stamboom.

Netwerkdatabase is flexibeler, het heeft de mogelijkheid om naast verticale verbindingen ook horizontale verbindingen tot stand te brengen.

Relationele databases(van de Engelse relatie - "relatie") worden databases genoemd die informatie bevatten in de vorm van rechthoekige tabellen. Volgens deze benadering wordt zo'n tabel een relatie genoemd. Elk tafel rij bevat informatie over een een apart object het onderwerp dat wordt beschreven in de database , en elk kolom - bepaalde kenmerken (eigenschappen, attributen) deze objecten . relationeel de database is in wezen een tweedimensionaal tafel. Er zijn vier hoofdtypen velden die in een relationele database worden gebruikt:

Numeriek,

Symbolisch (woorden, teksten, codes, etc.),

Datum (kalenderdatums in de vorm "dag / maand / jaar"),

· Booleaans (heeft twee waarden: "yes" - "no" of "true" - "false").

Het databasevenster bevat de volgende elementen:

ü Toetsen: "CREËREN", "OPEN", "CONSTRUCTEUR" enz. Knoppen openen een object in een bepaald venster of een bepaalde modus.

ü Objectknoppen. (Stubs voor objectselectie, tabbladen.) "Tafel", "Het formulier" enz. Objectknoppen tonen een lijst met objecten die kunnen worden geopend of gesloten.

ü Lijst met objecten. Toont een lijst met objecten die door de gebruiker zijn geselecteerd. In onze versie is de lijst momenteel leeg.

Basis database-objecten:

· tafel is een object dat is ontworpen om gegevens op te slaan in de vorm van records (rijen) en velden (kolommen). Meestal wordt elke tabel gebruikt om informatie over één specifiek probleem op te slaan.

· Het formulier is een Microsoft Access-object dat voornamelijk is ontworpen voor gegevensinvoer. U kunt besturingselementen op het formulier plaatsen die worden gebruikt om gegevens in tabelvelden in te voeren, weer te geven en te bewerken.

· Navraag - een object waarmee u de benodigde gegevens uit een of meer tabellen kunt halen.

· Verslag doen van – een Microsoft Access-databaseobject bedoeld voor het afdrukken van gegevens.

· Macro's - automatiseer standaardacties.

· Modules – automatiseer complexe bewerkingen die niet door macro's kunnen worden beschreven.

Onlangs zijn er uitspraken gedaan over een mogelijke paradigmaverschuiving - van relationele naar post-relationele DBMS. Volgens analisten zijn het tot nu toe echter relationele DBMS die worden gebruikt in de overgrote meerderheid van grote projecten die verband houden met de implementatie van databasebeheersystemen. De markt houdt duidelijk vast aan traditionele benaderingen bij het oplossen van dergelijke problemen.

Databasebeheersystemen (DBMS) is een van de fundamentele componenten van computerondersteuning voor informatieprocessen, die de basis vormt voor het bouwen van de meeste moderne informatiesystemen. De belangrijkste functie van het DBMS is het efficiënt opslaan en ter beschikking stellen van gegevens ten behoeve van specifieke applicatietaken.

Commerciële DBMS dateert uit het midden van de jaren '60, toen IBM het eerste product van deze klasse uitbracht - het hiërarchische IMS DBMS. Begin jaren 70 legde Edgar Codd de basis van het relationele datamodel, ontwikkelde de gestructureerde querytaal SQL en in de jaren 80 ontstonden industriële DBMS, die al snel een dominante positie innamen. Momenteel beheersen de top drie spelers - Microsoft, Oracle en IBM - de markt volledig, en hun vlaggenschipproducten Microsoft SQL Server, Oracle Database en IBM DB2 hebben samen een marktaandeel van ongeveer 90%. De DBMS-markt groeit snel en volgens Forrester-analisten zal het totale volume in 2013 $ 32 miljard bedragen.

Het belangrijkste nadeel van relationele DBMS is het beperkte gebruik dat inherent is aan deze systemen in gebieden die vrij complexe datastructuren vereisen. Een van de belangrijkste aspecten van het traditionele relationele gegevensmodel is de atomiciteit (uniekheid en ondeelbaarheid) van gegevens die zijn opgeslagen op de kruising van rijen en kolommen van een tabel. Een dergelijke regel werd vastgelegd in de basis van relationele algebra toen het werd ontwikkeld als een wiskundig gegevensmodel. Bovendien laten de specifieke kenmerken van de implementatie van het relationele model het niet toe om de werkelijke relaties tussen objecten in het beschreven onderwerpgebied adequaat weer te geven. Deze beperkingen belemmeren de effectieve implementatie van moderne applicaties die enigszins verschillende benaderingen van gegevensorganisatie vereisen, aanzienlijk.

Het basisprincipe van het relationele model is het elimineren van dubbele velden en groepen door middel van een proces dat normalisatie wordt genoemd. Platte genormaliseerde tabellen zijn veelzijdig, gemakkelijk te begrijpen en theoretisch voldoende om gegevens in elk vakgebied weer te geven. Ze zijn zeer geschikt voor gegevensopslag en weergavetoepassingen in traditionele industrieën zoals bank- of boekhoudsystemen, maar hun toepassing op systemen die gebaseerd zijn op complexere gegevensstructuren is vaak moeilijk. Dit komt in feite door de primitiviteit van de gegevensopslagmechanismen die ten grondslag liggen aan het relationele model.

De ervaring met het ontwikkelen van toegepaste informatiesystemen heeft aangetoond dat de afwijzing van de atomiciteit van waarden leidt tot een kwalitatief bruikbare uitbreiding van het datamodel. De introductie tot het relationele model van de mogelijkheid om velden met meerdere waarden als onafhankelijke geneste tabellen te gebruiken, op voorwaarde dat de geneste tabel aan de algemene criteria voldoet, maakt een natuurlijke uitbreiding van de mogelijkheden van relationele algebra mogelijk. In de klassieke zin wordt zo'n datamodel post-relationeel genoemd.

Omdat het post-relationele model multidimensionale structuren gebruikt waarmee andere tabellen in de velden van een tabel kunnen worden opgeslagen, wordt het ook wel "niet de eerste normaalvorm" of "multidimensionale database" genoemd. De taal die in dit querymodel wordt gebruikt, is uitgebreide SQL, waarmee u complexe objecten uit een enkele tabel kunt ophalen zonder join-bewerkingen. Er kan worden gezegd dat relationele en postrelationele DBMS'en verschillen in de manier waarop gegevens worden opgeslagen en geïndexeerd, maar in alle andere opzichten zijn ze vergelijkbaar. De eerste post-relationele DBMS'en die behoorlijk veel bekendheid verwierven, waren Ardent's Universe (later overgenomen door Informix, dat op zijn beurt werd overgenomen door IBM) en ADABAS van Software AG.

Object-relationele DBMS

Naast de afwijzing van normalisatie, kunt u met postrelationele DBMS'en gegevens van abstracte, door de gebruiker gedefinieerde typen opslaan in relatievelden. Dit maakt het mogelijk om problemen van een nieuw niveau op te lossen, objecten en data-arrays op te slaan die zijn gericht op specifieke onderwerpgebieden, en maakt post-relationele DBMS ook gerelateerd aan een andere klasse - objectgeoriënteerde DBMS. De introductie van de objectbenadering in het traditionele relationele model gaf aanleiding tot een andere richting - object-relationele DBMS. De eerste vertegenwoordiger van deze klasse van systemen wordt beschouwd als het Informix Universal Server-systeem van het bedrijf met dezelfde naam.

Zoals u weet, is de objectgeoriënteerde benadering van domeinmodellering gebaseerd op concepten als het object en de eigenschappen van inkapseling, overerving en polymorfisme. In tegenstelling tot relationele DBMS, zijn bij het ontwerpen van objectgeoriënteerde databases decompositie en normalisatie van objecten die zijn geselecteerd in de conceptuele ontwerpfase niet vereist. Objecten worden weergegeven zoals ze in werkelijkheid zijn, waardoor objectgeoriënteerde structuren zichtbaar worden en de tijd voor hun ontwerp en ontwikkeling aanzienlijk kan worden verkort.

Een van de meest bekende post-relationele DBMS is het Postgres-systeem, gecreëerd in het midden van de jaren 80 van de vorige eeuw onder leiding van een van de toonaangevende DBMS-ontwikkelaars, Michael Stonebreaker. Stonebreaker had (en heeft nog steeds) een enorme impact op de database-industrie, met een hand in bijna alle veelbelovende ontwikkelingen op dit gebied. Postgres breidde het traditionele relationele model uit door objectbeheermechanismen te introduceren waarmee niet-traditionele gegevenstypen efficiënt konden worden opgeslagen en beheerd. Postgres ondersteunde ook een multidimensionaal model voor tijdelijke gegevensopslag en -toegang. Alle belangrijke ideeën en ontwikkelingen van Postgers zijn voortgezet en ontwikkeld in het gratis PostgreSQL DBMS, dat momenteel het meest ontwikkelde open source DBMS is.

Vaak worden DBMS ook post-relationeel genoemd, waarmee u gegevens zowel in de vorm van relationele tabellen als objectklassen kunt weergeven. Een typische vertegenwoordiger van dit type DBMS is het Cache-systeem van InterSystems. Volgens de ontwikkelaars combineert dit systeem het meest effectief relationele en objectbenaderingen, gebaseerd op respectievelijk de SQL-92- en ODMG 2.0-standaarden. Mechanismen voor het werken met objecten en relationele tabellen bevinden zich op hetzelfde logische niveau, wat zorgt voor een hogere snelheid van toegang en werken met gegevens en functionele volledigheid. Cache gebruikt ook een multidimensionaal gegevensopslagmodel en is geoptimaliseerd voor transactieverwerking in systemen met grote en supergrote databases (honderden gigabytes, terabytes) en een groot aantal (duizenden, tienduizenden) gelijktijdig werkende gebruikers, terwijl u zeer hoge prestaties krijgen.

Ontwikkelingsperspectieven

Moderne industriële DBMS zijn complexe complexen die bestaan ​​uit verschillende elementen, technologieën en benaderingen. Deze componenten worden gecombineerd en verbeterd op basis van de noodzaak om ideale omstandigheden te bieden voor het oplossen van de problemen van het beheer van grote hoeveelheden gegevens in verschillende omstandigheden. Tegelijkertijd voeren alle ontwikkelaars grootschalig onderzoekswerk uit. Jarenlange ervaring in DBMS-ontwikkeling heeft aangetoond dat het veel tijd kost om te zorgen voor een efficiënte, betrouwbare en foutloze werking van nieuwe functionaliteit. Hevige concurrentie op de DBMS-markt dwingt fabrikanten om de producten van concurrenten nauwlettend in de gaten te houden, nieuwe trends te identificeren, en de opkomst van belangrijke nieuwe functies van een van de leveranciers dwingt de rest om vergelijkbare functionaliteit in hun ontwikkelingen te implementeren.

Op hun beurt groeien ook de behoeften van moderne databaseontwikkelaars. Dit komt in de eerste plaats door de snelle ontwikkeling van internet, het actieve gebruik van multimedia en de noodzaak om semi-gestructureerde data te verwerken.

Volgens de resultaten van onderzoek door IDC, gepubliceerd eind 2009, worden traditionele relationele DBMS gebruikt in de overgrote meerderheid van grote projecten die verband houden met de implementatie van databasebeheersystemen. Slechts ongeveer 7% zijn projecten die niet-relationele DBMS gebruiken. Deze krachtenbundeling in de markt van echte implementaties weerspiegelt de algemene toestand: ontwikkelaars houden nog steeds actief vast aan traditionele benaderingen voor het oplossen van problemen die verband houden met het gebruik van DBMS.

Al het bovenstaande suggereert dat de ontwikkelingsstrategie die is gekozen door de leidende spelers op de DBMS-markt, leidersposities zal blijven behouden. Hun belangrijkste producten zullen worden verbeterd, nieuwe functionaliteit zal worden geïmplementeerd en ontwikkelaars zullen blijven kiezen voor universele en beproefde traditionele oplossingen.

Maxim Nikitin

naar het begin

Databases en DBMS

Informatie Systemen

Een van de belangrijkste voorwaarden voor het goed functioneren van een organisatie is de aanwezigheid van een ontwikkeld informatiesysteem. Informatie Systeem implementeert geautomatiseerde verzameling, verwerking en manipulatie van gegevens, bevat technische middelen voor gegevensverwerking, software en onderhoudspersoneel.

De moderne vorm van informatiesystemen zijn databanken, waaronder een computersysteem, een of meer databases (DB), een databasebeheersysteem (DBMS) en een set applicatieprogramma's (AP). De belangrijkste functies van databanken zijn:

Gegevensopslag en bescherming;

Wijzigen (actualiseren, toevoegen en verwijderen) van opgeslagen gegevens;

Zoeken en selecteren van gegevens volgens gebruikersverzoeken;

Gegevensverwerking en output van resultaten.

Databasebiedt opslag van informatie en is een benoemde verzameling gegevens die is georganiseerd volgens bepaalde regels, waaronder algemene principes voor het beschrijven, opslaan en manipuleren van gegevens.

Databasemanagementsysteem is een pakket applicatieprogramma's en een set taaltools die zijn ontworpen om databases te maken, te onderhouden en te gebruiken.

Toepassingsprogramma's (applicaties) als onderdeel van databanken worden gebruikt voor gegevensverwerking, berekeningen en het opmaken van outputdocumenten volgens een bepaald formulier.

bijlageis een programma of een reeks programma's die een database gebruiken en de informatieverwerking vanuit een bepaald vakgebied automatiseren. Applicaties kunnen zowel in de DBMS-omgeving als buiten de DBMS worden gemaakt - met behulp van bijvoorbeeld een programmeersysteem,Delphi of C++Bouwer, met behulp van databasetoegangstools.

Om in veel gevallen met de database te werken, kunt u de DBMS-tools alleen gebruiken door bijvoorbeeld queries en rapporten te maken. Toepassingen worden voornamelijk ontwikkeld in gevallen waar het nodig is om het gemak van het werken met de database voor onervaren gebruikers te waarborgen of de DBMS-interface niet geschikt is voor de gebruiker.

Het belangrijkste voordeel van het gebruik van een database in informatiesystemen is het waarborgen van de onafhankelijkheid van gegevens uit applicatieprogramma's. U hoeft zich niet bezig te houden met problemen met de locatie van gegevens in het geheugen, methoden om ze te openen, enz.

Een dergelijke onafhankelijkheid wordt bereikt door de representatie op meerdere niveaus van gegevens in de database die wordt ondersteund door het DBMS op logische (gebruikers) en fysieke niveaus.

Als het belangrijkste criterium voor het optimaal functioneren van de database worden in de regel de temporele kenmerken van de implementatie van gebruikersverzoeken door toepassingsprogramma's gebruikt.

Hulpmiddelen voor het maken van databases

Bestandssystemen

Ontwikkeling van de basisconcepten van datarepresentatie

Elk rekenproces is het in kaart brengen van een bepaalde input naar output.

De verhouding tussen de complexiteit van de representatie van de verwerkte gegevens en het rekenalgoritme definieert twee klassen van problemen:

- rekentaken - een vrij eenvoudige weergave van gegevens en een complex rekenproces;

- gegevensverwerkingstaken (niet-computationele taken) - een eenvoudig gegevensverwerkingsalgoritme en een complexeweergave van de verwerkte gegevens.

In overeenstemming hiermee is het noodzakelijk om aandacht te besteden aan zowel de ontwikkeling van een algoritme voor het oplossen van het probleem als aan de methoden voor het presenteren van de verwerkte gegevens.

Vanaf het einde van de jaren zestig werden computers intensief gebruikt om de zogenaamde niet-computationele problemen op te lossen die verband houden met de verwerking van verschillende soorten documenten. Bij gebruik van bestandssystemen worden gegevens opgeslagen in een bestand dat alleen voor deze taak is ontworpen. In dit geval wordt de beschrijving van de gegevens opgenomen in het aanvraagprogramma. Als u het bestandsrecordformaat wijzigt, moet u het toepassingsprogramma wijzigen. Het softwaresysteem dat het probleem oplost, definieert dus zijn eigen gegevens en beheert deze.

Nadelen van bestandssystemen

1. De recordstructuur van een bestand is alleen bekend bij het programma waarin het is gemaakt. Het wijzigen van de structuur vereist het wijzigen van de programma's die dit gegevensbestand gebruiken. Op deze manier, programma's zijn afhankelijk van gegevens .

2. Problemen met toegangsautorisatie. U kunt hulpprogramma's voor toegangscontrole van het besturingssysteem gebruiken. Deze oplossing is mogelijk, maar onhandig. We hebben gecentraliseerde methoden nodig voor toegang tot informatie.

3. Problemen met de organisatie van toegang voor meerdere gebruikers. Bestandsbeheersystemen bieden een modus voor meerdere gebruikers, maar hebben functies die het gebruik voor een database bemoeilijken. Er zijn geen problemen bij het uitlezen van gegevens door meerdere gebruikers. Het aanbrengen van wijzigingen vereist synchronisatie van gebruikersacties. Meestal wordt bij het openen van een bestand de modus (lezen / schrijven) opgegeven. Als op dit punt het bestand is geopend door een ander proces in de modus Wijzigen, meldt het besturingssysteem dat het bestand niet kan worden geopend, of wordt de actie geblokkeerd totdat het andere proces wordt gesloten. In elk geval kunnen ofwel meerdere gebruikers de database niet tegelijkertijd wijzigen, ofwel verloopt het proces traag.

In een applicatieprogramma dat een of meer afzonderlijke bestanden gebruikt om een ​​probleem op te lossen, was de programmeur die met dit probleem werkte verantwoordelijk voor de veiligheid en betrouwbaarheid van de gegevens. Het gebruik van een database omvat het werken ermee van verschillende toepassingsprogramma's die de problemen van verschillende gebruikers oplossen.

Uiteraard kan een programmeur die een van de toegepaste problemen oplost niet langer verantwoordelijk zijn voor de veiligheid en betrouwbaarheid van de geïntegreerde data. Daarnaast kan het uitbreiden van het takenpakket dat met behulp van de database wordt opgelost, leiden tot het ontstaan ​​van nieuwe soorten records en relaties daartussen. Een dergelijke wijziging in de structuur van de database mag niet leiden tot een wijziging in de set van eerder ontwikkelde en succesvol functionerende applicatiesoftwaresystemen die met de database werken. Anderzijds mag een eventuele wijziging in een van de applicatieprogramma's op zijn beurt niet leiden tot een wijziging in de datastructuur. Al het bovenstaande leidt tot:de noodzaak om gegevens van toepassingen te scheiden.

Databasebeheersystemen

De rol van de interface tussen applicatieprogramma's en de database, die hun onafhankelijkheid garandeert, wordt gespeeld door een softwarepakket - een databasebeheersysteem (DBMS).

DBMS is een softwarepakket voor het ondersteunen van een geïntegreerde set gegevens, ontworpen om door veel gebruikers een database te creëren, te onderhouden en te gebruiken (toepassingsprogramma's).

Basisfuncties van het databasebeheersysteem.

1. Bepaling van de structuur van de aangemaakte database, de initialisatie en het initiële laden

2. Gebruikers de mogelijkheid bieden om gegevens te manipuleren (de benodigde gegevens selecteren, berekeningen uitvoeren, een I/O-interface ontwikkelen, visualisatie).

3. Zorgen voor de onafhankelijkheid van applicatieprogramma's en (logische en fysieke onafhankelijkheid).

4. Bescherming van de logische integriteit van de database.

5. Bescherming van de fysieke integriteit.

6. Gebruikersrechten voor toegang tot de database beheren.

7. Synchronisatie van het werk van meerdere gebruikers.

8. Beheer van opslagomgevingen.

9. Ondersteuning van de werkzaamheden van systeempersoneel.

1. Bepaling van de structuur van de aangemaakte database, de initialisatie en het initiële laden. In de meeste moderne DBMS wordt de database weergegeven als een set tabellen.

2. Gebruikers de mogelijkheid bieden om gegevens te manipuleren (de benodigde gegevens selecteren, berekeningen uitvoeren, een I/O-interface ontwikkelen, visualisatie). Dergelijke mogelijkheden in het DBMS worden aangeboden door het gebruik van een speciale programmeertaal die deel uitmaakt van het DBMS, of door een grafische interface te gebruiken.

3. Zorgen voor de onafhankelijkheid van applicatieprogramma's en data (logische en fysieke onafhankelijkheid). De belangrijkste eigenschap van het DBMS is de mogelijkheid om twee onafhankelijke weergaven van de database te onderhouden - de "gebruikersweergave", belichaamd in de logische representatie van gegevens, en de weerspiegeling daarvan in toepassingsprogramma's; en "systeemweergave" - ​​de fysieke weergave van gegevens in het computergeheugen. Door logische gegevensonafhankelijkheid te bieden, kunt u (binnen bepaalde limieten) de logische weergave van de database wijzigen zonder dat de fysieke structuren van gegevensopslag moeten worden gewijzigd. Een verandering in de logische representatie van data in applicatieprogramma's leidt dus niet tot een verandering in dataopslagstructuren. Door de fysieke onafhankelijkheid van gegevens te waarborgen, kunnen (binnen bepaalde grenzen) de manieren waarop een database in het computergeheugen wordt georganiseerd, worden gewijzigd zonder dat de "logische" weergave van gegevens hoeft te worden gewijzigd. Het veranderen van de manier waarop de database is georganiseerd, verandert dus niets aan de toepassingsprogramma's.

4. Bescherming van de logische integriteit van de database.

Het belangrijkste doel van het implementeren van deze functie is om de validiteit van de gegevens in de database te verbeteren. De betrouwbaarheid van gegevens kan worden geschonden wanneer ze in de database worden ingevoerd of door illegale acties van gegevensverwerkingsprocedures die onjuiste gegevens ontvangen en invoeren in de database. Om de betrouwbaarheid van gegevens in het systeem te vergroten, worden zogenaamde integriteitsbeperkingen gedeclareerd, die in bepaalde gevallen onjuiste gegevens "vangen". Dus in alle moderne DBMS wordt de overeenstemming van de invoergegevens met hun type, beschreven bij het maken van de structuur, gecontroleerd. Het systeem staat u niet toe een teken in een numeriek veld in te voeren, staat u niet toe een ongeldige datum in te voeren, enz. In ontwikkelde systemen worden integriteitsbeperkingen beschreven door de programmeur, gebaseerd op de betekenisvolle betekenis van de taak, en worden ze gecontroleerd telkens wanneer de gegevens worden bijgewerkt. In detail

5. Bescherming van fysieke integriteit. Tijdens de werking van de computer kunnen storingen optreden (bijvoorbeeld door een stroomstoring), schade aan de machinegegevensdragers. In dit geval kunnen de koppelingen tussen de gegevens worden verbroken, wat leidt tot de onmogelijkheid van verder werk. Ontwikkelde DBMS hebben hulpprogramma's voor databaseherstel. Het belangrijkste gebruikte begrip is het begrip "transactie". transactie is een eenheid van acties die met de database worden uitgevoerd. Een transactie kan meerdere databasewijzigingsinstructies bevatten, maar al deze instructies worden uitgevoerd of geen ervan wordt uitgevoerd. Het DBMS houdt niet alleen de database zelf bij, maar ook een transactielogboek.

Laten we de noodzaak illustreren van het gebruik van transacties in databases met een vereenvoudigd voorbeeld. Laten we aannemen dat de database in een bank wordt gebruikt en dat een van de klanten geld wil overboeken naar de rekening van een andere klant van de bank. De database slaat informatie op over de hoeveelheid geld die elk van de klanten heeft. We moeten twee wijzigingen aanbrengen in de database - het bedrag op een van de rekeningen van de klant verlagen en dienovereenkomstig het geldbedrag op de andere rekening verhogen. Natuurlijk is de daadwerkelijke overdracht van geld in een bank een veel complexer proces, waarbij veel tabellen en mogelijk veel databases betrokken zijn. De essentie blijft echter hetzelfde: u moet ofwel alle acties voltooien (het account van de ene klant verhogen en het account van een andere verminderen), of geen van deze acties uitvoeren. U kunt de hoeveelheid geld op de ene rekening niet verlagen, maar niet de hoeveelheid geld op een andere verhogen.

Laten we ook aannemen dat na het uitvoeren van de eerste van de acties (het verminderen van het geldbedrag op de rekening van de eerste klant), er een storing is opgetreden. De verbinding van de clientcomputer met de database kan bijvoorbeeld worden onderbroken of er kan een systeemfout optreden op de clientcomputer waardoor het besturingssysteem opnieuw is opgestart. Wat is er in dit geval met de database gebeurd? De opdracht om het geld op de rekening van de eerste klant te verlagen werd uitgevoerd, maar de tweede opdracht om het geld op de andere rekening te verhogen niet, wat zou leiden tot een inconsistente, verouderde staat van de database.

Door gebruik te maken van het transactiemechanisme kunt u in deze en soortgelijke gevallen een oplossing vinden. Voordat de eerste actie wordt uitgevoerd, wordt een opdracht voor het starten van een transactie gegeven. Een transactie omvat het opnemen van geld op de ene rekening en het verhogen van het bedrag op een andere rekening. De transactievoltooiingsverklaring wordt gewoonlijk COMMIT genoemd. Aangezien de transactie na de eerste actie niet is voltooid, worden er geen wijzigingen in de database aangebracht. Wijzigingen worden pas doorgevoerd (vastgelegd) nadat de transactie is voltooid. Voorafgaand aan het afgeven van deze verklaring worden er geen gegevens in de database opgeslagen. In ons voorbeeld, aangezien de transactietoezeggingsverklaring niet is uitgegeven, zal de database "terugdraaien" naar de oorspronkelijke staat - met andere woorden, de bedragen in de rekeningen van de klant blijven hetzelfde als vóór het begin van de transactie. De databasebeheerder kan de status van transacties volgen en, indien nodig, transacties handmatig "terugdraaien".

Bovendien beslist het DBMS in voor de hand liggende gevallen zelfstandig om de transactie terug te draaien.

Transacties hoeven niet per se kort te zijn. Er zijn transacties die enkele uren of zelfs meerdere dagen duren. Het verhogen van het aantal acties binnen een enkele transactie vereist een toename van systeembronnen. Daarom is het wenselijk om transacties zo kort mogelijk te houden. Alle transacties worden vastgelegd in het transactielogboek - zowel vastgelegd als voltooid met een "rollback". Door transactieregistratie en databaseback-ups kunt u een hoge databasebetrouwbaarheid bereiken.

Laten we aannemen dat de database is beschadigd als gevolg van een hardwarestoring van de computer waarop de DBMS-server is geïnstalleerd. In dit geval moet de laatste databaseback-up en het transactielogboek worden gebruikt. Bovendien hoeft u alleen die transacties toe te passen op de database die zijn vastgelegd nadat de back-up is gemaakt. Met de meeste moderne DBMS'en kan de beheerder de database opnieuw maken vanuit een back-up- en transactielogboek. In dergelijke systemen wordt de database op een gegeven moment gekopieerd naar back-upmedia. Alle oproepen naar de database worden programmatisch vastgelegd in het wijzigingslogboek. Als de database wordt vernietigd, wordt een herstelprocedure gestart, waarbij alle gemaakte wijzigingen worden aangebracht in de back-upkopie uit het wijzigingslogboek.

6. Gebruikersrechten voor toegang tot de database beheren.

Verschillende gebruikers kunnen verschillende rechten hebben om met gegevens te werken (sommige gegevens moeten ontoegankelijk zijn; bepaalde gebruikers mogen geen gegevens bijwerken, enz.). Het DBMS biedt mechanismen voor het afbakenen van toegangsrechten, gebaseerd op de principes van wachtwoorden of op de beschrijving van rechten.

7. Synchronisatie van het werk van meerdere gebruikers.

Heel vaak kan er een situatie zijn waarin meerdere gebruikers tegelijkertijd een updatebewerking op dezelfde gegevens uitvoeren. Dergelijke botsingen kunnen leiden tot een schending van de logische integriteit van de gegevens, dus het systeem moet maatregelen nemen die voorkomen dat andere gebruikers gegevens bijwerken totdat de gebruiker die met deze gegevens werkt er helemaal klaar mee is. Het belangrijkste concept dat hier wordt gebruikt, is "blokkeren". Sloten zijn nodig om te voorkomen dat verschillende gebruikers tegelijkertijd toegang krijgen tot de database, omdat dit tot fouten kan leiden.

Om dit verbod uit te voeren, stelt het DBMS een slot in op de objecten die de transactie gebruikt. Er zijn verschillende soorten vergrendelingen - tabel, pagina, rij en andere, die van elkaar verschillen in het aantal vergrendelde records.

Rijvergrendeling wordt vaker gebruikt dan andere - wanneer een transactie toegang heeft tot één rij, wordt alleen deze rij vergrendeld, de overige rijen blijven beschikbaar voor wijziging.

Het proces van het aanbrengen van wijzigingen in de database bestaat dus uit de volgende reeks acties: er wordt een transactiestartinstructie uitgegeven, een gegevenswijzigingsverklaring wordt uitgegeven, het DBMS analyseert de instructie en probeert de vergrendelingen in te stellen die nodig zijn voor de uitvoering ervan, als de lock is succesvol, de instructie wordt uitgevoerd en vervolgens wordt het proces herhaald voor de volgende transactie-operator. Na de succesvolle uitvoering van alle instructies binnen de transactie, wordt de transactie-commit-instructie uitgevoerd. Het DBMS legt de wijzigingen vast die door de transactie zijn aangebracht en geeft de vergrendelingen vrij. Als een van de instructies mislukt, wordt de transactie "teruggedraaid", de gegevens krijgen de vorige waarden, de vergrendelingen worden vrijgegeven.

8. Beheer van opslagbronnen.

De database bevindt zich in het externe geheugen van de computer. Bij het werken in de database worden nieuwe gegevens ingevoerd (geheugen is bezet) en gegevens worden gewist (geheugen is vrij). Het DBMS wijst geheugenbronnen toe voor nieuwe gegevens, verdeelt vrijgekomen geheugen opnieuw, organiseert het onderhoud van een wachtrij met verzoeken naar extern geheugen, enz.

9. Ondersteuning voor de activiteiten van systeempersoneel.

Tijdens de werking van de database kan het nodig zijn om de parameters van het DBMS te wijzigen, nieuwe toegangsmethoden te selecteren, (binnen bepaalde grenzen) de structuur van de opgeslagen gegevens te wijzigen en ook een aantal andere systeembrede acties uit te voeren. Het DBMS biedt de mogelijkheid om deze en andere acties uit te voeren ter ondersteuning van de activiteiten van de database tot het onderhoud van het databasesysteempersoneel, de databasebeheerder genoemd.

DBMS-classificatie

DBMS worden in de regel volgens het gebruikte datamodel (evenals databases) onderverdeeld in de volgende typen: hiërarchisch, netwerk-, relationeel en objectgeoriënteerd.

Volgens de aard van het gebruik van het DBMS zijn ze onderverdeeld in: persoonlijk(DBMS) en multiplayer(SUBDM).

Persoonlijke DBMS omvat:Visueel FoxPro, Paradox, Clipper, dBase, ToegangDBMS voor meerdere gebruikers omvat bijvoorbeeld DBMSOrakel En Informix.DBMS voor meerdere gebruikers omvatten een databaseserver en een clientgedeelte, werken in een heterogene computeromgeving - verschillende soorten computers en verschillende besturingssystemen zijn toegestaan. Op basis van het DBMS is het dus mogelijk om een ​​informatiesysteem te creëren dat werkt volgens de client-server technologie. De veelzijdigheid van DBMS voor meerdere gebruikers wordt respectievelijk weerspiegeld in de hoge prijs en de computerbronnen die nodig zijn om ze te ondersteunen.

DBMS is een set taal- en softwaretools die zijn ontworpen om een ​​database te maken, te onderhouden en te gebruiken.

Persoonlijke DBMS de mogelijkheid bieden om persoonlijke databases en goedkope applicaties te maken die ermee werken, en, indien nodig, applicaties te creëren die werken met de databaseserver.

De besturingscomponent van veel DBMS is de kernel, die de volgende functies vervult:

- gegevensbeheer in extern geheugen;

- beheer van RAM-buffers (werkgebieden waarin gegevens uit de database worden uitgewisseld om de werksnelheid te verhogen);

- transactiebeheer.

transactie - dit is een opeenvolging van bewerkingen op de database, beschouwd door het DBMS als geheel. Onder transactie wordt opgevat als de impact op de database, het overbrengen van de ene integrale toestand naar de andere. De impact komt tot uiting in het wijzigen van de gegevens in de databasetabellen.

Als een van de wijzigingen in de database als onderdeel van een transactie mislukt, moet een rollback worden gemaakt naar de status van de database die plaatsvond vóór het begin van de transactie. Bijgevolg worden alle wijzigingen die binnen de transactie in de database worden aangebracht, ofwel tegelijkertijd bevestigd, ofwel geen ervan.

Wanneer uitgevoerd, kan de transactie ofwel met succes worden voltooid, en het DBMS zal de aangebrachte wijzigingen vastleggen in het externe geheugen. Als er een storing is in de pc-hardware, worden de wijzigingen niet weergegeven in de database. Het concept van een transactie is nodig om de logische integriteit van de database te behouden.

De integriteit van de database waarborgen - een noodzakelijke voorwaarde voor het succesvol functioneren van de database. DB-integriteit- eigendom van de database, dat wil zeggen dat de database volledige en consistente informatie bevat die nodig en voldoende is voor het correct functioneren van applicaties. Om de integriteit van de database te waarborgen, worden integriteitsbeperkingen opgelegd in de vorm van bepaalde voorwaarden waaraan de in de database opgeslagen gegevens moeten voldoen. Een voorbeeld van dergelijke voorwaarden kan de beperking zijn van het bereik van mogelijke waarden van de attributen van objecten, informatie waarover in de database is opgeslagen, of de afwezigheid van dubbele records in relationele databasetabellen.

Beveiliging bereikt in het DBMS door codering van applicatieprogramma's, gegevens, wachtwoordbeveiliging, ondersteuning voor toegangsniveaus tot de database, naar een aparte tabel.

Het uitbreiden van de mogelijkheden van de DBMS-gebruiker wordt bereikt door systemen aan te sluiten voor het maken van grafieken en diagrammen, evenals het verbinden van in talen geschreven modules programmeren.

Netwerkwerking wordt ondersteund door:

middelen voor het beheren van gebruikerstoegang tot gedeelde gegevens, d.w.z. middelen voor het vergrendelen van bestanden (tabellen), records, velden, die in verschillende mate zijn geïmplementeerd in verschillende DBMS'en;

middel van het transactiemechanisme dat de integriteit van de database garandeert wanneer deze in het netwerk werkt.

Ondersteuning voor interactie met Windows-toepassingen stelt het DBMS in staat om informatie in te sluiten die is opgeslagen in bestanden die zijn gemaakt met andere toepassingen, zoals een documentWoordof in een werkboekexcelleren, inclusief graphics en geluid. Om dit te doen, ondersteunt het DBMS mechanismen die zijn ontwikkeld voor de omgevingramen, zoals: DDE { dynamisch Gegevens Aandelenbeurs - dynamische gegevensuitwisseling) enOLE { Voorwerp Koppelen en Inbedding - objectbinding en injectie).

Presentatie niveaus

Moderne benaderingen voor het maken van databases suggereren hun organisatie op drie niveaus. Deze manier om de database te organiseren werd voorgesteld American National Standards Institute (ANSI) ) en wordt veel gebruikt.

Op het bovenste (buitenste) niveau kunnen er veel modellen zijn. Dit niveau bepaalt het standpunt over de database van individuele gebruikers (applicaties). Elke applicatie ziet en verwerkt alleen de gegevens die het nodig heeft.

Op conceptueel niveau wordt de database gepresenteerd in de meest algemene vorm, die alle externe representaties van het vakgebied combineert. Op conceptueel niveau hebben we een gegeneraliseerd model van het vakgebied waarvoor de database is gemaakt. Conceptuele representatie is er maar één. Bij het ontwikkelen van een conceptueel model zijn de inspanningen gericht op het structureren van gegevens en het identificeren van relaties, zonder rekening te houden met de kenmerken van implementatie en ontwikkelingsefficiëntie.

Het interne (fysieke) niveau zijn de feitelijke gegevens die zich op externe opslagmedia bevinden. Het interne model definieert gegevensplaatsing, toegangsmethoden, indexeringstechniek.

De drieledige organisatie van de database zorgt voor logische en fysieke onafhankelijkheid bij het werken met gegevens. Logische onafhankelijkheid impliceert de mogelijkheid om één applicatie te wijzigen, zonder andere applicaties die met dezelfde database werken aan te passen.

Fysieke onafhankelijkheid houdt de mogelijkheid in om opgeslagen informatie van het ene medium naar het andere over te brengen, terwijl de bruikbaarheid van alle toepassingen die deze database gebruiken, behouden blijft.

Classificatie van datamodellen

Een datamodel is een set regels waarmee gegevens worden georganiseerd.

Deze zeer eenvoudige definitie kan worden verfijnd. Een datamodel is een soort abstractie die, wanneer toegepast op specifieke data, gebruikers en ontwikkelaars in staat stelt deze te interpreteren als informatie, dat wil zeggen informatie die niet alleen data bevat, maar ook de relaties ertussen.

Het is gebruikelijk om drie groepen datamodellen te onderscheiden: infologisch, datalogisch en fysiek.

Fig.1 Gegevensmodellen

informatief(semantisch) model is een algemene beschrijving van het vakgebied, niet gebonden aan een computer en DBMS. Deze beschrijving, gemaakt met behulp van natuurlijke taal, wiskundige formules, tabellen, grafieken en andere middelen, combineert persoonlijke weergaven van de inhoud van de database, verkregen uit gebruikersonderzoeken, en de opvattingen van ontwikkelaars over gegevens die in toekomstige toepassingen nodig kunnen zijn.

Zo'n mensgericht model is volledig onafhankelijk van de fysieke parameters van de gegevensopslagomgeving. Daarom mag het infologische model niet veranderen zolang het het vakgebied adequaat weerspiegelt, dat wil zeggen, totdat er veranderingen in het vakgebied hebben plaatsgevonden.

datalogischde modellen zijn computergebaseerd, ze worden ondersteund door specifieke DBMS. Met hun hulp geeft het DBMS gebruikers toegang tot opgeslagen gegevens zonder zich zorgen te hoeven maken over hun fysieke locatie. Aangezien gegevens worden benaderd met behulp van een specifiek DBMS, worden datalogische modellen beschreven in termen van: gegevensbeschrijving taal gebruikte DBMS.

De benodigde gegevens worden door het DBMS op externe opslagapparaten gevonden met: fysiek data modellen. Het fysieke model werkt op categorieën die verband houden met de organisatie van externe geheugen- en gegevensopslagstructuren die in een bepaalde besturingsomgeving worden gebruikt.

Datalogische modellen

Deze groep omvat bekende modellen als hiërarchisch, netwerk-, relationeel en objectgericht.

Classificatie van modellen, hun beschrijving verscheen na de ontwikkeling van het relationele model. Daarvoor werd de database ontwikkeld met behulp van bestaande technologieën. En veel later analyseerden ze de bestaande databases en voerden hun theoretische beschrijving uit.

Grafiektheoretische modellen weerspiegelen een reeks objecten van de echte wereld in de vorm van een grafiek. Afhankelijk van het type grafiek zijn er hiërarchische en netwerkmodellen. Hiërarchische en netwerkgegevensmodellen werden in het begin van de jaren 60 van de 20e eeuw in DBMS gebruikt. Momenteel worden ze minder vaak gebruikt dan het relationele datamodel.

Om met complexe datasets te werken, hebben wiskundigen een hiërarchisch datamodel ontwikkeld. Dit model verscheen eerder dan andere datalogische modellen. Het is dit datamodel dat werd gebruikt in het eerste officieel erkende industriële DBMS door IBM.

Het hiërarchische model gaat ervan uit dat gegevens worden opgeslagen op een manier die vergelijkbaar is met de organisatie van mappen in MS DOS: alle mappen beginnen bij de wortel en vertakken zich als een boom. Elk bestand heeft slechts één pad, d.w.z. één mapnaam komt overeen met een bestand.

In de echte wereld zijn sommige objecten inherent hiërarchische structuren: sommige objecten zijn bovenliggende objecten, andere zijn kinderen. Hiërarchie is eenvoudig en natuurlijk voor het weergeven van relaties tussen objecten. Het volstaat te herinneren aan de talrijke classificaties die in verschillende kennisgebieden worden gebruikt, bijvoorbeeld de bovenstaande classificatie van datamodellen. Een ander voorbeeld is de datastructuur van een onderneming.

In een hiërarchische database vertakken alle records zich vanuit één root. Een item heeft altijd maar één ouder en kan zelf de ouder zijn van een ander item.

Het belangrijkste voordeel van het hiërarchische model is snelheid. Omdat alle relaties tussen tabellen vooraf gedefinieerd en statisch zijn, zijn zoekopdrachten en andere bewerkingen op een dataset erg snel.

Het belangrijkste nadeel is de inflexibiliteit. Omdat relaties binnen elk item worden opgeslagen, hebben de gegevens alleen zin in een specifieke context. Een ander nadeel is de moeilijkheid om gegevens van computer naar computer over te zetten. Het derde nadeel is dat wereldwijde gegevensveranderingen bijna onmogelijk zijn. Wijziging vereist dat elke invoer, inclusief ouder en kind, afzonderlijk wordt gewijzigd.

Bij het werken met dit datamodel komt veel kennis kijken. De meeste databases die een hiërarchisch model gebruiken, hebben speciaal opgeleid personeel nodig om een ​​goede werking te garanderen.

Het netwerkmodel wordt voorgesteld om flexibiliteit in databeheer te bieden. De ontwikkeling van dit model is sterk beïnvloed door de Amerikaanse wetenschapper C. Bachman.

De basisprincipes van het netwerkdatamodel zijn midden jaren '60 geformuleerd. De referentieversie van het netwerkdatamodel werd midden jaren 70 beschreven in de rapporten van de werkgroep over databasetalen CODASYL (Conference on DAta SYstem Languages).

Het netwerkmodel verschilt van het hiërarchische model doordat u meer dan één groepsrelatie voor een record kunt definiëren. Dit model bestaat uit veel records, die eigenaren of leden van groepsrelaties kunnen zijn. Het netwerkmodel maakt zoeken in verschillende structuren mogelijk en onderhoudt een een-op-veel-relatie voor records.

Net als in een hiërarchische database wordt relatie-informatie opgeslagen in records en moet deze vooraf worden gedefinieerd. Daarom heeft het netwerkgegevensmodel dezelfde beperkingen als het hiërarchische model.

Relationeel gegevensmodel

Basisconcepten en definities van het relationele model

relationeel model

In 1970 E. F. kabeljauw ( e. F. kabeljauw ) introduceerde het relationele databasemodel. Het concept van dit model is gebaseerd op het feit dat de organisatie van gegevens in de database flexibel, dynamisch en gebruiksvriendelijk moet zijn. De gebruiker hoeft alleen te werken met de logische weergave van de gegevens en het databasebeheersysteem zorgt voor de fysieke structuur van de gegevens. Codd formuleerde de belangrijkste bepalingen van relationele databases.

Het relationele model maakt gebruik van tabellen en is gebaseerd op twee uitspraken:

· de database moet uit tabellen bestaan ​​en alleen uit tabellen. Alleen de inhoud van de tabellen bepaalt de werking van de database;

· beschrijving en manipulatie van gegevens moeten onafhankelijk zijn van de manier waarop de gegevens op het lagere niveau worden opgeslagen. Met andere woorden, relationele databasebeheersystemen (RDBMS) moeten hun eigen beheersysteem bieden dat alleen is gebaseerd op de logische weergave van gegevens.

In zijn paper beschreef Codd een taal voor het omgaan met relationele structuren. In de loop van de tijd evolueerde deze taal naar wat nu een gestructureerde zoektaal wordt genoemd. SQL (Structured Query Language).

Codd heeft een reeks basisregels afgeleid waaraan een relationeel model DBMS moet voldoen. Er zijn er in totaal 12. Echt bestaande databases voldoen niet volledig aan alle regels van Codd. Elke ontwikkelaar implementeert het relationele model op zijn eigen manier. Als gevolg hiervan variëren de eigenschappen van relationele databases sterk.

Er zijn 4 categorieën in de regels van Codd:

1) basisfuncties - gegevensbeschrijving en programmeertaal;

2) toegang tot gegevens - regels voor toegang, opslag en opvraging,

3) flexibiliteit - regels voor het wijzigen (aanpassen) van gegevens;

4) integriteit - regels om de kwaliteit en veiligheid van gegevens te waarborgen.

Bij gebruik van het relationele DBMS-model werkt de gebruiker met een logische datastructuur. Om naar het laagste (fysieke) niveau te gaan, stelde Codd het concept van een datadictionary voor.

Een datadictionary is een centrale tabel en database-informatieopslag die informatie bevat over de locatie van gegevens, veldnamen, gegevenstypen en relatiekaarten. De datadictionary werkt met het besturingssysteem en koppelt tabellen (logische data) aan bestanden (fysieke data).

Als wiskundige van opleiding stelde E. Codd voor om het apparaat van de verzamelingenleer (unie, intersectie, verschil, cartesiaans product) te gebruiken voor gegevensverwerking. Hij toonde aan dat elke representatie van gegevens kan worden teruggebracht tot een reeks tweedimensionale tabellen van een speciaal soort, in de wiskunde bekend als houding– relatie (Engels) De kleinste data-eenheid van een relationeel model is een enkele atomair(onontbindbare) gegevenswaarde voor het gegeven model. Dus in het ene vakgebied kunnen de achternaam, naam en patroniem worden beschouwd als een enkele waarde, en in een ander - als drie verschillende waarden.

domein is een reeks atomaire waarden van hetzelfde type. De betekenis van domeinen is als volgt. Als de waarden van twee attributen uit hetzelfde domein komen, dan zijn vergelijkingen met die twee attributen waarschijnlijk zinvol.Als de waarden van twee attributen uit verschillende domeinen komen, dan is hun vergelijking waarschijnlijk niet logisch.

Een relatie op domeinen D1, D2, ..., Dn (het hoeft niet allemaal verschillend te zijn) bestaat uit een header en een body.

koptekst bestaat uit zo'n vaste set attributen A1, A2, ..., An dat er een één-op-één overeenkomst is tussen deze attributen Ai en de domeinen Di (i=1,2,...,n) die de hen.

Lichaam bestaat uit een in de tijd variërende set tupels, waarbij elke tuple op zijn beurt bestaat uit een set attribuut-waardeparen (Ai:Vi), (i=1,2,...,n), één zo'n paar voor elk Ai-attribuut in de kop. Voor elk gegeven attribuut-waardepaar (Ai:Vi) is Vi de waarde van het enkele domein Di dat is geassocieerd met attribuut Ai.

Relatie graad is het aantal van zijn attributen. Een relatie van graad één heet unair, graad twee heet binair, graad drie heet ternair, ..., en graad n wordt n-air genoemd. Relatie graad

hoofdtelwoord of vermogensverhouding: is het aantal van zijn tupels. Het hoofdtelwoord van een verhouding verandert in de loop van de tijd, in tegenstelling tot de mate ervan.

Aangezien een relatie een verzameling is en verzamelingen per definitie geen overeenkomende elementen bevatten, kunnen geen twee tupels van een relatie op een willekeurig tijdstip duplicaten van elkaar zijn. Laat R een relatie zijn met attributen A1, A2, ..., An. De verzameling attributen K=(Ai, Aj, ..., Ak) van een relatie R wordt een mogelijke sleutel van R genoemd dan en slechts als aan twee tijdonafhankelijke voorwaarden is voldaan:

  1. Uniciteit: op een willekeurig gegeven moment hebben geen twee verschillende tuples R dezelfde waarde voor Ai, Aj, ..., Ak.
  2. Minimaliteit: geen van de attributen Ai, Aj, ..., Ak kan van K worden uitgesloten zonder de uniciteit te schenden.

Elke relatie heeft minstens één mogelijke sleutel, aangezien minstens de combinatie van al zijn attributen voldoet aan de uniciteitsvoorwaarde. Een van de mogelijke sleutels (willekeurig gekozen) wordt als primaire sleutel genomen. De overige mogelijke sleutels, indien aanwezig, worden alternatieve sleutels genoemd.

Het bovenstaande en enkele andere wiskundige concepten vormden de theoretische basis voor de creatie van relationele DBMS, de ontwikkeling van geschikte taaltools en softwaresystemen die hun hoge prestaties garanderen, en de creatie van de fundamenten van de database-ontwerptheorie. Voor de massagebruiker van relationele DBMS kan men echter met succes informele equivalenten van deze concepten gebruiken:

Relatie - Tabel (soms Bestand),
Tuple - String (soms opnemen),
Attribuut - Kolom, Veld.

Dit veronderstelt dat "record" "recordinstantie" betekent en "veld" "veldnaam en type" betekent.

1. Elke tabel bestaat uit rijen van hetzelfde type en heeft een unieke naam.

2. Rijen hebben een vast aantal velden (kolommen) en waarden (meerdere velden en herhalende groepen zijn niet toegestaan). Met andere woorden, in elke positie van de tabel op het snijpunt van een rij en een kolom is er altijd precies één waarde of niets.

3. Tabelrijen verschillen noodzakelijkerwijs van elkaar door ten minste één waarde, wat het mogelijk maakt om elke rij van een dergelijke tabel uniek te identificeren.

4. De kolommen van de tabel zijn uniek toegewezen namen en homogene gegevenswaarden (datums, achternamen, gehele getallen of geldbedragen) worden in elk van hen geplaatst.

5. De volledige informatie-inhoud van de database wordt gepresenteerd in de vorm van expliciete gegevenswaarden, en deze presentatiemethode is de enige. Er zijn met name geen speciale "links" of verwijzingen die de ene tabel met de andere verbinden.

6. Bij het uitvoeren van bewerkingen op een tabel kunnen de rijen en kolommen in elke volgorde worden verwerkt, ongeacht hun informatie-inhoud. Dit wordt vergemakkelijkt door de aanwezigheid van tabelnamen en hun kolommen, evenals de mogelijkheid om een ​​van hun rijen of een reeks rijen met de gespecificeerde kenmerken te selecteren.

Sleutels

Relationele theorie vereist dat gegevens op unieke wijze worden verenigd volgens drie criteria:

· de tabel waarin dit data-element is opgeslagen;

· de naam van het veld in deze tabel;

· de waarde van de primaire sleutel voor de record.

Een primaire sleutel is een veld of een groep velden die de uniciteit van een record garandeert.

Wanneer u een tabel ontwerpt, moet u zoveel velden als de primaire sleutel kiezen als nodig is om ervoor te zorgen dat elk record in de tabel uniek is. Sommige tabellen bevatten een enkel veld dat elke record op unieke wijze identificeert. Voor andere tabellen is mogelijk een samengestelde sleutel vereist ( samengestelde sleutel ), dat wil zeggen een primaire sleutel die bestaat uit een combinatie van velden. Zelfs als een tabel een samengestelde primaire sleutel heeft, kan er maar één zijn.

Het bouwen van een primaire sleutel is verplicht. De gegevens hebben vaak een natuurlijke sleutel ( natuurlijke sleutel ). Een burgerservicenummer identificeert bijvoorbeeld elke Amerikaanse belastingbetaler; banken verstrekken rekeningnummers aan hun klanten; ziekenhuizen geven nummers aan patiënten in een dossierkast. Al deze - een sofinummer, een bankrekening, een dossierkastnummer - zijn de beste kandidaten voor de rol van de primaire sleutel, omdat ze respectievelijk belastingbetalers, klanten en patiënten op unieke wijze identificeren.

Wees voorzichtig bij het kiezen van een sleutel, aangezien sommige gegevens alleen uniek lijken te zijn. Bijvoorbeeld achternaam en voornaam, bedrijfsnaam en besteldatum.

Als de gegevens geen natuurlijke primaire sleutel bevatten, moet er een worden gemaakt. Er zijn twee stromingen die verschillende manieren bieden om een ​​kunstmatige sleutel te maken ( artefact sleutel).

De eerste school stelt dat de sleutel zo dicht mogelijk bij de data moet liggen. Bijvoorbeeld tabelinvoer Paradox worden standaard automatisch gesorteerd en weergegeven in de volgorde die is gedefinieerd door de primaire sleutel. Als u een sleutel opbouwt met vier letters van de achternaam plus twee letters van de voornaam, plus een opeenvolgend toegewezen nummer, dan toont de sortering de records in alfabetische volgorde. Maar zo'n sleutel heeft ook nadelen, bijvoorbeeld bij het wijzigen van de achternaam zul je de links moeten updaten.

De tweede school vindt dat de sleutel niets met de data te maken moet hebben, de zogenaamde surrogaatsleutel ( vervangende sleutel ).

De primaire sleutel moet zo kort mogelijk worden gevormd. Een lange toets leidt tot meer fouten bij het invoeren van gegevens. Aangezien een relationele database primaire sleutels gebruikt om relaties tussen tabellen te organiseren, verslechtert het verschijnen van foutieve relaties de gegevensbeveiliging. Als de natuurlijke primaire sleutel te lang blijkt te zijn, is het aan te raden om over te stappen op het gebruik van een surrogaatsleutel. Deze aanpak wordt in de praktijk vaak gebruikt en staat bekend als het genereren van unieke identifiers.

toets element data-element is zo'n element waarmee het mogelijk is om de waarden van andere data-elementen te bepalen. Twee of meer gegevenselementen kunnen een object op unieke wijze identificeren. De belangrijkste gegevenselementen moeten zorgvuldig worden gekozen, aangezien de juiste keuze bijdraagt ​​aan het creëren van een geldig conceptueel gegevensmodel.

hoofdsleutelis een attribuut of groep attributen die elke rij in een tabel op unieke wijze identificeert.

Alternatief(ondergeschikt) toets is een attribuut of een groep attributen die niet overeenkomt met de primaire sleutel en een unieke identificeert een instantie van een object.

Indexen

Indexen vormen een integraal onderdeel van de databasestructuur en zijn ontworpen om het zoeken naar informatie in een tabel te versnellen.

Een index is een structuur die is gekoppeld aan een tabel of weergave en is ontworpen om het zoeken naar informatie daarin te versnellen. Een index wordt gedefinieerd op een of meer kolommen, geïndexeerde kolommen genoemd. Het bevat de gesorteerde waarden van de geïndexeerde kolom of kolommen met verwijzingen naar de overeenkomstige rij van de brontabel of weergave. Prestatiewinst wordt behaald door de gegevens te sorteren. Het gebruik van indexen kan de zoekprestaties aanzienlijk verbeteren, maar het opslaan van indexen vereist extra ruimte in de database.

Stel u als voorbeeld van het opzoeken van tabellen een telefoonboek voor waarin alle abonnees alfabetisch worden weergegeven. Het is duidelijk dat het in zo'n telefoonboek heel gemakkelijk is om een ​​telefoonnummer te vinden als de naam van de abonnee bekend is. Aan de andere kant is het buitengewoon moeilijk om de naam van een abonnee op zijn telefoonnummer te vinden, omdat het telefoonboek is niet gesorteerd op telefoonnummers, u zult met een eenvoudige opsomming naar de gewenste telefoon moeten zoeken. Het ordenen van informatie vergemakkelijkt dus het zoeken aanzienlijk. Dit principe is de basis van het indexsysteem.

De afbeelding toont een telefoonboek met vermeldingen die niet op telefoonnummer zijn geordend, en de index die voor dit telefoonboek is gegenereerd. In de figuur is te zien dat de index een reeks gehele getallen is, waarbij de telefoonnummers in het telefoonboek in oplopende volgorde van het telefoonnummer worden geplaatst. Hierdoor worden de vermeldingen geordend op telefoonnummer en in plaats van te zoeken door uitputtend te zoeken, kunt u de methode met halve delen of de binaire boommethode gebruiken.


Rijst. 3. Een voorbeeld van een index op het veld "telefoonnummer".

verbindingen

Verbindingis een functionele afhankelijkheid tussen entiteiten. Als er een relatie is tussen sommige entiteiten, dan verwijzen feiten van de ene entiteit naar of zijn op de een of andere manier gerelateerd aan feiten van een andere entiteit. Het handhaven van consistente functionele afhankelijkheden tussen entiteiten wordt referentiële integriteit genoemd. Aangezien de relaties "binnen" het relationele model zijn, kan de implementatie van referentiële integriteit zowel door de applicatie als door het DBMS zelf worden uitgevoerd (met behulp van declaratieve referentiële integriteitsmechanismen en triggers).

Bij het beschrijven van relaties wordt de relatie tussen records van verschillende tabellen geïmpliceerd. Als er bijvoorbeeld een een-op-veel-relatie wordt genoemd, betekent dit dat een record van een bepaalde tabel is gerelateerd aan veel records van een andere tabel. Het is in geen geval de bedoeling om één tabel aan meerdere tabellen te koppelen.

De eenvoudigste relatie tussen tabelrecords is één-op-één. Dit type relatie treedt op wanneer de tabellen die worden gekoppeld dezelfde primaire sleutel hebben. Meestal wordt dit type relatie gebruikt wanneer er een tabel is met een groot aantal velden, waarvan sommige secundair zijn (niet zo belangrijk). Een dossier over een persoon op de personeelsafdeling kan bijvoorbeeld bestaan ​​uit een achternaam, voornaam, patroniem, paspoortgegevens, autobiografie, etc. Een autobiografie kan worden geclassificeerd als secundaire informatie en in een extra tabel worden geplaatst met een één-op-één-relatietype.

Het meest voorkomende type verbinding een te veel. Bijvoorbeeld klant en bestellingen: één klant kan veel bestellingen plaatsen. De velden waarop verbindingen worden gemaakt zijn niet vrij, dat wil zeggen, ze kunnen geen willekeurige waarden hebben. Een bestelling moet bijvoorbeeld een klant vermelden die in de tabel "Klanten" staat. Vanuit het oogpunt van de tabel "Klanten" kan het veld "Klantnaam" willekeurig zijn, aangezien het niet afhankelijk is van de velden van andere tabellen.

Als alle sleutelvelden van een tabel en enkele sleutelvelden van een andere tabel zijn gekoppeld, kan het type relatie alleen een-op-veel zijn.

Een veel-op-veel-relatietype treedt op wanneer velden die gedeeltelijk zijn opgenomen in de primaire sleutel van de ene en de andere tabel gerelateerd zijn. Bijvoorbeeld het veld "Productnaam" in de tabel "Orders" en het veld "Productnaam" in de tabel "Inhoudingen". Een product kan door meerdere klanten worden besteld en productroyalty's gaan naar verschillende specialisten voor elke verkoop van het product (als de tabel "Rolls" twee velden heeft in de primaire sleutel - productnaam en specialist of productnaam en manager).

De methoden voor het koppelen van tabellen met behulp van de velden die in de primaire sleutel zijn opgenomen, worden hierboven besproken. Er is echter een andere manier om tabellen te koppelen, enerzijds kunnen velden die niet in de primaire sleutel zitten wel deelnemen aan de verbinding en anderzijds kunnen velden die wel in de primaire sleutel zitten. Dit wordt gedaan met behulp van secundaire of externe sleutels ( vreemde sleutel ). De secundaire sleutel is gebaseerd op velden die niet zijn opgenomen in de primaire sleutel.

Bij het definiëren van een relatie voert de ene tabel dus een relatie uit met behulp van de velden die in de primaire sleutel zijn opgenomen, en de andere kan alle velden van de primaire sleutel, een deel ervan, of velden gebruiken die niet in de primaire sleutel zijn opgenomen.

In tegenstelling tot relaties die alleen op de primaire sleutel zijn gebaseerd, worden relaties die zijn gebaseerd op het gebruik van een secundaire sleutel kandidaat genoemd. De databaseontwikkelaar beslist zelf of hij een dergelijke binding gebruikt of niet.

Een veel-op-een-relatie is in wezen een omgekeerde een-op-veel-relatie. De waarden in de relatievelden moeten worden gedefinieerd door een tabel waarin de gebruikte velden uniek zijn, dat wil zeggen dat slechts één record vele andere kan definiëren.

Referentiële integriteit zorgt ervoor dat de externe sleutelwaarde van de instantie van de onderliggende entiteit overeenkomt met de primaire sleutelwaarden in de bovenliggende entiteit. Referentiële integriteit kan worden gecontroleerd voor alle bewerkingen die gegevens wijzigen.

Opgeslagen procedure is een programma dat query's, procedurele logica (toewijzingsinstructies, vertakkingen, enz.) en gegevens die in de database zijn opgeslagen, combineert. Met dit mechanisme kunt u, samen met de gegevens, vrij complexe programma's bevatten die een grote hoeveelheid gegevensverwerkingswerk uitvoeren zonder gegevens over het netwerk over te dragen en zonder interactie met de client. In dit geval kan de database een functioneel onafhankelijke laag van de toepassing zijn die samenwerkt met andere lagen om query's te ontvangen en gegevens bij te werken.

reglementstelt u in staat om de uitvoering van gespecificeerde acties aan te roepen bij het wijzigen of toevoegen van gegevens aan de database en daardoor de waarheid van de daarin geplaatste gegevens te controleren. Gewoonlijk is een actie een aanroep van een specifieke procedure of functie. Regels kunnen worden gekoppeld aan een veld of record en dienovereenkomstig worden geactiveerd wanneer gegevens in een bepaald veld- of tabelrecord veranderen. Regels kunnen niet worden gebruikt bij het verwijderen van gegevens. In tegenstelling tot beperkingen, die slechts een middel zijn om relatief eenvoudige voorwaarden voor de juistheid van gegevensinvoer te controleren, kunt u met regels willekeurig complexe relaties tussen gegevenselementen in de database controleren en onderhouden.

In gang zettenis een vooraf gedefinieerde actie of reeks acties die automatisch wordt uitgevoerd bij het bijwerken, toevoegen of verwijderen van gegevens. De trigger is een krachtig hulpmiddel voor het controleren van gegevenswijzigingen in de database, het helpt de programmeur om de bewerkingen te automatiseren die in dit geval moeten worden uitgevoerd. De trigger wordt uitgevoerd nadat de regels voor het bijwerken van gegevens zijn gecontroleerd. Noch de gebruiker, noch de applicatie kan de trigger activeren, deze wordt automatisch gestart wanneer de gebruiker of applicatie bepaalde acties op de database uitvoert. De trigger bevat de volgende componenten:

* beperkingen voor de uitvoering waarvan een trigger wordt gecreëerd;

* een gebeurtenis die het optreden van een situatie kenmerkt die controlebeperkingen vereist. Gebeurtenissen worden meestal geassocieerd met een wijziging in de status van de database (bijvoorbeeld het toevoegen van een record aan een tabel), maar er kan ook rekening worden gehouden met aanvullende voorwaarden (bijvoorbeeld het toevoegen van een record met alleen een negatieve waarde);

Het gebruik van triggers in databaseontwerp biedt de volgende voordelen:

* triggers worden altijd uitgevoerd wanneer de bijbehorende acties worden uitgevoerd. De ontwikkelaar denkt na over het gebruik van triggers bij het ontwerpen van een database en mag er niet meer aan denken bij het ontwikkelen van een applicatie om toegang te krijgen tot gegevens;

* triggers kunnen indien nodig centraal direct in de database worden gewijzigd. Gebruikersprogramma's die met deze database werken, hoeven niet te worden gemoderniseerd;

* een gegevensverwerkingssysteem dat triggers gebruikt, is beter overdraagbaar naar de client-server-architectuur vanwege het kleinere aantal vereiste wijzigingen.

Normalisatie van relaties is het proces van het construeren van de optimale structuur van tabellen en relaties in een relationele database. Tijdens het normalisatieproces worden gegevensitems gegroepeerd in tabellen die objecten en hun relaties vertegenwoordigen. De theorie van normalisatie is gebaseerd op het feit dat een bepaalde set tabellen betere eigenschappen heeft voor het invoegen, wijzigen en verwijderen van gegevens dan alle andere sets tabellen die dezelfde gegevens kunnen vertegenwoordigen.

relationeel database logisch model in relationele database-objecten. Om dit probleem op te lossen, moet de databaseontwerper weten: a) welke objecten een relationele database in principe heeft; b) welke objecten worden ondersteund door een bepaald DBMS, dat is gekozen om de database te implementeren.

We gaan er dus van uit dat de beslissing om een ​​DBMS te kiezen al is genomen door de IT-projectmanager en is overeengekomen met de databaseklant, d.w.z. DBMS is ingesteld. De databaseontwerper moet de documentatie raadplegen die het SQL-dialect beschrijft dat door het gekozen DBMS wordt ondersteund. Deze lezing gaat ervan uit dat Oracle 9i is geselecteerd, hoewel de overgrote meerderheid van het materiaal objecten in een industriële relationele database omvat.

Opmerking. Over de keuze van DBMS. De keuze voor een DBMS verwijst naar een selectieprobleem met meerdere criteria en wordt in deze cursus niet behandeld. Houd er rekening mee dat het DBMS meestal slechts één gegevensmodel ondersteunt: relationeel, hiërarchisch, netwerk, multidimensionaal, objectgeoriënteerd, objectrelationeel. De uitzondering is een klein aantal DBMS. Bijvoorbeeld ADABAS, Software AG (netwerk- en relationele modellen) of Oracle 9i, Oracle Inc. (relationele en object-relationele modellen). Meestal proberen ze bij het kiezen van een DBMS, terwijl alle andere dingen gelijk zijn, een database te maken op een DBMS die beweert een industriestandaard te zijn.

De hiërarchie van relationele database-objecten is geschreven in de SQL-standaarden, in het bijzonder in de SQL-92-standaard, waarop we ons zullen concentreren bij de presentatie van het materiaal van deze lezing. Deze standaard wordt ondersteund door bijna alle moderne DBMS, inclusief desktopversies. De relationele database-objecthiërarchie wordt weergegeven in de onderstaande afbeelding.

Op het laagste niveau bevinden zich de kleinste objecten waarmee een relationele database werkt: kolommen (kolommen) en rijen. Deze zijn op hun beurt gegroepeerd in tabellen en weergaven.

Opmerking. In de context van een lezing worden attributen, kolommen, kolommen en velden als synoniemen beschouwd. Hetzelfde geldt voor de termen "string", "record" en "tuple".

De tabellen en views, die de fysieke weerspiegeling zijn van de logische structuur van de database, zijn verzameld in een schema. Verschillende schema's worden verzameld in mappen, die vervolgens in clusters kunnen worden gegroepeerd. Opgemerkt moet worden dat geen van de groepen objecten van de SQL-92-standaard is geassocieerd met de structuren van de fysieke opslag van informatie in het geheugen van computers.


Rijst. 8.1.

Naast de objecten die in de afbeelding worden getoond, kunnen indexen, triggers, gebeurtenissen, opgeslagen commando's, opgeslagen procedures en een aantal andere worden gemaakt in een relationele database. Laten we nu verder gaan met het definiëren van relationele database-objecten.

Elementaire relationele database-objecten

Clusters, catalogi en schema's zijn geen vereiste elementen van de standaard en dus van de relationele database-programmeeromgeving.

Een cluster is een groep directory's die toegankelijk is via een enkele verbinding met de databaseserver (DBMS-softwarecomponent).

In de praktijk is de procedure catalogus maken bepaald door de implementatie van het DBMS op een bepaald besturingsplatform. Een directory is een groep schema's. In de praktijk wordt een directory vaak geassocieerd met een fysieke database als een set fysieke besturingssysteembestanden die worden geïdentificeerd door de naam.

Voor een databaseontwerper is een schema een algemene logische weergave van de relaties van een volledige database. Vanuit een SQL-perspectief is een schema een container voor tabellen, views en andere structurele elementen van een relationele database. Het principe van het plaatsen van database-elementen in elk schema wordt volledig bepaald door de databaseontwerper.

U hebt geen schema nodig om tabellen en weergaven te maken. Als u van plan bent om slechts één logische database te installeren, dan is het duidelijk dat u zonder schema kunt. Maar als u van plan bent hetzelfde DBMS te gebruiken om meerdere databases te ondersteunen, dan kan een goede organisatie van database-objecten in schema's het onderhoud van die databases veel gemakkelijker maken. In de praktijk wordt een schema vaak geassocieerd met de objecten van een bepaalde fysieke databasegebruiker.

Hierna zullen relationele database-objecten worden geïntroduceerd in de context van een Oracle 9i relationele database. Deze aanpak is gekozen omdat het ontwerp het fysieke model van een relationele database wordt uitgevoerd voor een specifieke omgeving van de uitvoering ervan.

In Oracle 9i wordt de term schema (Schema) gebruikt om alle databaseobjecten te beschrijven die door een gebruiker zijn gemaakt. Voor elke nieuwe gebruiker wordt automatisch een nieuw schema gemaakt.

De basisobjecten van relationele databases zijn tabel, weergave en gebruiker.

Tabel (Tabel) is de basisstructuur van een relationele database. Het is een eenheid van gegevensopslag - een relatie. Een tabel wordt in de database geïdentificeerd aan de hand van zijn unieke naam, die de identiteit van de gebruiker omvat. De tabel kan leeg zijn of uit een reeks rijen bestaan.

Een weergave is een benoemde, dynamisch onderhouden DBMS-selectie van een of meer databasetabellen. De select-operator beperkt de voor de gebruiker zichtbare gegevens. Het DBMS garandeert meestal dat de weergave up-to-date is - deze wordt gegenereerd telkens wanneer de weergave wordt gebruikt. Soms worden optredens genoemd virtuele tafels.

Gebruiker (Gebruiker) is een object dat de mogelijkheid heeft om andere database-objecten te maken of te gebruiken en om de uitvoering van DBMS-functies aan te vragen, zoals het organiseren van een sessie, het wijzigen van de status van de database, enz.

Om de identificatie en naamgeving van objecten in de database te vereenvoudigen, worden objecten zoals synoniemen, volgorde en worden ondersteund.

synoniem ( Synoniem)- deze alternatieve naam object (alias) van een relationele database, waarmee u toegang hebt tot dit object. Een synoniem kan algemeen of bijzonder zijn. Een generiek synoniem stelt alle databasegebruikers in staat om met zijn alias naar het corresponderende object te verwijzen. Met een synoniem kunt u de volledige kwalificatie van een object in de database verbergen voor eindgebruikers.

Sequence is een databaseobject waarmee u een reeks unieke nummers (nummers) kunt genereren in termen van asynchrone toegang voor meerdere gebruikers. Doorgaans worden sequentie-elementen gebruikt om tabelelementen (rijen) op unieke wijze te nummeren in bewerkingen voor het wijzigen van gegevens.

Door de gebruiker gedefinieerde gegevenstypen ( Door de gebruiker gedefinieerde gegevenstypen ) zijn door de gebruiker gedefinieerde attribuuttypen (domeinen) die verschillen van de ondersteunde (ingebouwde) DBMS-typen. Ze worden gedefinieerd op basis van ingebouwde typen. Door de gebruiker gedefinieerde gegevenstypen vormen dat deel van de DBMS-omgeving dat is georganiseerd volgens het objectgeoriënteerde paradigma.

Om een ​​efficiënte toegang tot gegevens in relationele DBMS te garanderen, worden een aantal andere objecten ondersteund: index, tablespace, cluster, section.

Index (Index) is een databaseobject dat is gemaakt om de prestaties van het ophalen van gegevens te verbeteren en om de uniciteit van de primaire sleutel te controleren (als er een is ingesteld voor de tabel). Volledig indextabellen (index-georganiseerde tabellen) fungeren tegelijkertijd als tabel en index.

tabelruimte of regio ( tabelruimte) is een benoemd onderdeel van de database die wordt gebruikt om geheugen toe te wijzen aan tabellen en indexen. In Oracle 9i is dit de logische naam van de fysieke besturingssysteembestanden. Alle database-objecten die gegevens opslaan, komen overeen met sommige tabelruimten. De meeste databaseobjecten die geen gegevens opslaan, bevinden zich in een datadictionary in de SYSTEM-tabelruimte.

Een cluster is een object dat definieert hoe gegevens worden gedeeld tussen meerdere of enkele tabellen. Een van de criteria voor het gebruik van een cluster is het hebben van gemeenschappelijke sleutelvelden in meerdere tabellen die in dezelfde SQL-opdracht worden gebruikt. Gewoonlijk worden geclusterde kolommen of tabellen in de database opgeslagen als hash tabellen(d.w.z. op een speciale manier).

Sectie (partitie) is een databaseobject waarmee u een object met gegevens kunt weergeven als een set subobjecten die verband houden met verschillende tabelruimten. Op deze manier, snijden maakt het mogelijk om zeer grote tabellen over meerdere harde schijven te spreiden.

Om gegevens op een speciale manier te verwerken of te implementeren referentiële integriteit ondersteuning database-objecten worden gebruikt: opgeslagen procedure, functie, commando, trigger, timer en pakket (Oracle). Met behulp van deze database-objecten kunt u de zogenaamde rijverwerking (recordverwerking) gegevens uitvoeren. Vanuit het oogpunt van databasetoepassingen is verwerking per rij de sequentiële selectie van gegevens rij voor rij, verwerking ervan en doorgaan met het verwerken van de volgende rij.

Deze relationele database-objecten zijn programma's, d.w.z. uitvoerbare code. Deze code wordt meestal server-side code genoemd omdat deze wordt uitgevoerd door de computer waarop de relationele database-engine is geïnstalleerd. Het plannen en ontwikkelen van dergelijke code is een van de taken van een relationele databaseontwerper.

Een opgeslagen procedure (Opgeslagen procedure) is een databaseobject dat een benoemde set SQL-opdrachten en/of -instructies in gespecialiseerde databaseprogrammeertalen (zoals SQLWindows of PL/SQL) vertegenwoordigt.

Functie (Functie) is een databaseobject dat een benoemde set SQL-opdrachten en/of operators van gespecialiseerde databaseprogrammeertalen vertegenwoordigt, die, wanneer uitgevoerd, een waarde retourneert - het resultaat van berekeningen.

Een opdracht is een benoemde SQL-instructie die vooraf is gecompileerd en opgeslagen in een database. De verwerkingssnelheid van de opdracht is hoger dan die van de bijbehorende SQL-instructie, omdat: fasen worden niet uitgevoerd ontleden en compilatie.

Een trigger is een databaseobject dat een speciale opgeslagen procedure is. Deze routine wordt automatisch uitgevoerd wanneer de triggergebeurtenis plaatsvindt (bijvoorbeeld voordat een rij in een tabel wordt ingevoegd).

Een timer verschilt van een trigger doordat de triggergebeurtenis voor een opgeslagen procedure een timergebeurtenis is.

Een pakket is een databaseobject dat bestaat uit een benoemde gestructureerde set variabelen, procedures en functies.

Gedistribueerde relationele DBMS'en hebben speciale objecten: de snapshot en de databasekoppeling.

Momentopname (Snapshop) - een lokale kopie van een tabel in een externe database, die wordt gebruikt om een ​​tabel of queryresultaat te repliceren (repliceren). Snapshots kunnen worden gewijzigd of alleen-lezen.

Een databasekoppeling of externe databasekoppeling is een databaseobject waarmee u toegang hebt tot externe databaseobjecten. Grofweg kan de naam van een databaseverbinding worden gezien als een koppeling naar de toegangsparameters tot een database op afstand.

Om de gegevenstoegangscontrole effectief te beheren, onderhoudt Oracle een rolobject.

Rol (Role) - een databaseobject, een benoemde set privileges die kan worden toegewezen aan gebruikers, gebruikerscategorieën of andere rollen.