Zijn relationele databases gedoemd te mislukken? Relationele database - basisconcepten

Het begrip relationele (Engelse relatie) hangt samen met de ontwikkelingen van de bekende Amerikaanse specialist op het gebied van databasesystemen, een medewerker van IBM, Dr. E. Codd (Codd EF, A Relational Model of Data for Large Shared Data Banks CACM 13:6, juni 1970), de pionier van de term "relationeel datamodel".

Lange tijd werd de relationele benadering beschouwd als een handig formeel hulpmiddel voor database-analyse dat geen praktische vooruitzichten had, omdat de implementatie ervan te grote machinebronnen vereiste. Pas met de komst van personal computers begonnen relationele en gerelateerde systemen zich te verspreiden, waardoor er weinig ruimte was voor andere modellen.

Deze modellen worden gekenmerkt door eenvoud van datastructuur, gebruiksvriendelijke tabelweergave en de mogelijkheid om het formele apparaat van algebra van relaties en relationele calculus te gebruiken voor gegevensverwerking.

Het relationele model richt zich op het organiseren van gegevens in de vorm van tweedimensionale tabellen. Elke relationele tabel is een tweedimensionale array en heeft de volgende eigenschappen:

  • - elk element van de tabel is één gegevenselement; er zijn geen herhalende groepen;
  • - alle kolommen in de tabel zijn homogeen, d.w.z. alle elementen in een kolom hebben hetzelfde type (numeriek, karakter, etc.) en lengte;
  • - elke kolom heeft een unieke naam;
  • - er zijn geen identieke regels in de tabel;
  • - de volgorde van rijen en kolommen kan willekeurig zijn. Zo'n tabel wordt een relatie genoemd.

Een database die is gebouwd met behulp van relaties wordt een relationele database genoemd.

Relaties worden weergegeven in de vorm van tabellen, waarvan de rijen overeenkomen met tuples of records, en de kolommen met relatieattributen, domeinen en velden.

Een veld, waarvan elke waarde op unieke wijze een corresponderend record identificeert, wordt een eenvoudige sleutel (sleutelveld) genoemd. Als records uniek worden geïdentificeerd door de waarden van meerdere velden, dan heeft zo'n databasetabel een samengestelde sleutel.

Om twee relationele tabellen te koppelen, moet de sleutel van de eerste tabel worden opgenomen in de sleutel van de tweede tabel (de sleutels mogen samenvallen); anders moet u in de structuur van de eerste tabel een externe sleutel invoeren - de sleutel van de tweede tabel.

Na een relationeel datamodel te hebben voorgesteld, heeft E.F. Codd heeft ook een tool gemaakt om gemakkelijk met relaties te werken - relationele algebra. Elke bewerking van deze algebra gebruikt een of meer tabellen (relaties) als operanden en produceert als resultaat een nieuwe tabel, d.w.z. stelt u in staat om tabellen te "knippen" of "verlijmen".

Wat relationele modellen fundamenteel onderscheidt van netwerk- en hiërarchische modellen, kan als volgt worden gezegd: hiërarchische en netwerkdatamodellen hebben een relatie in structuur en relationele hebben een relatie in betekenis.

Databaseontwerp wordt traditioneel als een zeer moeilijke taak beschouwd. Relationele technologie vereenvoudigt deze taak aanzienlijk.

Door de logische en fysieke lagen van het systeem te scheiden, vereenvoudigt het het proces van het in kaart brengen van het "echte wereldniveau" in een structuur die het systeem direct kan ondersteunen. Omdat het relationele raamwerk zelf conceptueel eenvoudig is, maakt het de implementatie mogelijk van kleine en/of eenvoudige (en dus gemakkelijk te maken) databases, zoals persoonlijke databases, die in oudere, meer complexe systemen nooit voor mogelijk zouden zijn gehouden.

De theorie en discipline van normalisatie kunnen helpen door te laten zien wat er gebeurt als relaties niet van nature gestructureerd zijn.

Het relationele gegevensmodel is vooral handig voor gebruik in databases met een gedistribueerde architectuur - het geeft u toegang tot alle informatie-elementen die zijn opgeslagen in de knooppunten van een computernetwerk. Het is noodzakelijk om speciale aandacht te besteden aan het hoogwaardige aspect van de relationele benadering, die bestaat uit meervoudige verwerking van records. Hierdoor neemt het potentieel van de relationele aanpak aanzienlijk toe, wat niet kan worden bereikt bij het verwerken van één record tegelijk en het gaat vooral om optimalisatie.

Met dit model kunt u bepalen:

  • · Bewerkingen voor het opslaan en ophalen van gegevens;
  • · Beperkingen met betrekking tot het waarborgen van gegevensintegriteit.

Om de efficiëntie van het werk in veel relationele DBMS'en te vergroten, worden beperkingen aangenomen die overeenkomen met een strikt relationeel model.

Veel relationele DBMS'en presenteren databasebestanden aan de gebruiker in tabelvorm - met records als rijen en hun velden als kolommen. In tabelvorm wordt informatie veel gemakkelijker waargenomen. In de database op fysiek niveau worden gegevens echter in de regel opgeslagen in bestanden die reeksen records bevatten.

Het belangrijkste voordeel van relationele DBMS'en is de mogelijkheid om te koppelen op basis van specifieke verhoudingen van DB-bestanden.

Vanuit structureel oogpunt zijn relationele modellen eenvoudiger en homogener dan hiërarchische en netwerkmodellen. In het relationele model komt elk object in het domein overeen met een of meer relaties. Als het nodig is om expliciet een relatie tussen objecten te definiëren, wordt dit uitgedrukt in de vorm van een relatie, waarin identifiers van gerelateerde objecten als attributen aanwezig zijn. In het relationele model worden objecten in het domein en de verbindingen daartussen weergegeven door dezelfde informatieconstructies, wat het model zelf aanzienlijk vereenvoudigt.

Een DBMS wordt als relationeel beschouwd als aan de volgende twee voorwaarden is voldaan, voorgesteld door E. Codd:

  • · Ondersteunt een relationele datastructuur;
  • · Implementeert ten minste bewerkingen van selectie, projectie en verbinding van relaties.

Vervolgens is een aantal relationele DBMS'en gecreëerd die in meer of mindere mate aan deze definitie voldoen. Veel DBMS'en zijn belangrijke uitbreidingen van het relationele model, andere zijn gemengd en ondersteunen verschillende datalogische modellen.

Tegenwoordig blijven relationele databases de meest voorkomende, vanwege hun eenvoud en zichtbaarheid, zowel in het creatieproces als op gebruikersniveau.

Het belangrijkste voordeel van relationele databases is hun compatibiliteit met de meest populaire querytaal, SQL.

Met een enkele query in deze taal kunt u meerdere tabellen samenvoegen tot een tijdelijke tabel en de vereiste rijen en kolommen eruit knippen (selectie en projectie). Omdat de tabelstructuur van een relationele database intuïtief is voor gebruikers, is SQL eenvoudig en gemakkelijk te leren. Het relationele model heeft een solide theoretische basis waarop de evolutie en implementatie van relationele databases is gebaseerd. In het kielzog van de populariteit veroorzaakt door het succes van het relationele model, is SQL de primaire taal geworden voor relationele databases.

Maar ook de nadelen van het overwogen databasemodel werden geïdentificeerd:

  • - aangezien alle velden van één tabel een constant aantal velden van vooraf bepaalde typen moeten bevatten, is het noodzakelijk om extra tabellen te creëren, rekening houdend met de individuele kenmerken van de elementen, met behulp van buitenlandse sleutels. Deze benadering maakt het erg moeilijk om complexe relaties in de database te creëren;
  • - hoge complexiteit van het manipuleren van informatie en het veranderen van verbanden.

De komst van computertechnologie in onze tijd markeerde een informatierevolutie op alle gebieden van menselijke activiteit. Maar om te voorkomen dat alle informatie op het wereldwijde internet onnodig afval wordt, is een databasesysteem uitgevonden, waarin materialen worden gesorteerd, gesystematiseerd, waardoor ze gemakkelijk te vinden en te presenteren zijn voor latere verwerking. Er zijn drie hoofdtypen - relationele databases, hiërarchisch, netwerk.

Fundamentele modellen

Terugkomend op de opkomst van databases, moet worden gezegd dat dit proces behoorlijk complex was, het vindt zijn oorsprong in de ontwikkeling van programmeerbare informatieverwerkingsapparatuur. Daarom is het niet verrassend dat het aantal van hun modellen op dit moment meer dan 50 bereikt, maar de belangrijkste worden beschouwd als hiërarchisch, relationeel en netwerk, die in de praktijk nog steeds veel worden gebruikt. Wat zijn ze?

Hiërarchisch heeft een boomstructuur en is opgebouwd uit gegevens van verschillende niveaus, waartussen koppelingen bestaan. Het DB-netwerkmodel is een complexer patroon. De structuur lijkt op een hiërarchische structuur en het schema is uitgebreid en verbeterd. Het verschil tussen beide is dat de erfelijke gegevens van het hiërarchische model een verbinding kunnen hebben met slechts één voorouder, terwijl de netwerkgegevens er meerdere kunnen hebben. De structuur van een relationele database is veel complexer. Daarom moet het in meer detail worden geanalyseerd.

Basisconcept van een relationele database

Een dergelijk model werd in de jaren 70 ontwikkeld door Edgar Codd, Ph.D. Het is een logisch gestructureerde tabel met velden die de gegevens beschrijven, hun relaties met elkaar, de bewerkingen die erop worden uitgevoerd en vooral de regels die hun integriteit garanderen. Waarom wordt het model relationeel genoemd? Het is gebaseerd op relaties (van lat. Relatio) tussen gegevens. Er zijn veel definities voor dit type database. Relatietabellen met informatie zijn veel gemakkelijker te organiseren en te verwerken dan in een netwerk- of hiërarchisch model. Hoe kan dit worden gedaan? Het is voldoende om de kenmerken, de structuur van het model en de eigenschappen van relationele tabellen te kennen.

Het proces van het modelleren en opstellen van de belangrijkste elementen

Om uw eigen DBMS te maken, moet u een van de modelleertools gebruiken, nadenken over met welke informatie u moet werken, tabellen en relationele enkelvoudige en meervoudige relaties tussen gegevens ontwerpen, entiteitscellen invullen en primaire externe sleutels instellen.

Tabelmodellering en relationeel databaseontwerp wordt gedaan door middel van gratis tools zoals Workbench, PhpMyAdmin, Case Studio, dbForge Studio. Na een gedetailleerd ontwerp moet u het grafisch gereedgemaakte relationele model opslaan en vertalen naar kant-en-klare SQL-code. In deze fase kun je aan de slag met het sorteren, verwerken en systematiseren van gegevens.

Functies, structuur en termen met betrekking tot het relationele model

Elke bron beschrijft zijn elementen op zijn eigen manier, dus voor minder verwarring zou ik een kleine hint willen geven:

  • relationeel label = entiteit;
  • layout = attributen = veldnamen = kolomkoppen entiteit;
  • entiteit instantie = tuple = record = tabelrij;
  • attribuutwaarde = entiteitscel = veld.

Om bij de eigenschappen van een relationele database te komen, moet u weten uit welke basiscomponenten deze bestaat en waarvoor ze dienen.

  1. Essence. Er kan één tabel in een relationele database zijn, of er kan een hele reeks tabellen zijn die de beschreven objecten karakteriseren vanwege de gegevens die erin zijn opgeslagen. Ze hebben een vast aantal velden en een variabel aantal records. Een relationele databasemodeltabel is samengesteld uit strings, attributen en een lay-out.
  2. Record - een variabel aantal regels die gegevens weergeven die het beschreven object kenmerken. De records worden automatisch genummerd door het systeem.
  3. Attributen zijn gegevens die de beschrijving van entiteitskolommen aantonen.
  4. Veld. Vertegenwoordigt een entiteitskolom. Hun aantal is een vaste waarde die wordt ingesteld tijdens het maken of wijzigen van de tabel.

Nu u de samenstellende elementen van de tabel kent, kunt u naar de eigenschappen van het relationele databasemodel gaan:

  • Relationele database-entiteiten zijn tweedimensionaal. Dankzij deze eigenschap is het gemakkelijk om er verschillende logische en wiskundige bewerkingen mee uit te voeren.
  • De volgorde van waarden van attributen en records in een relationele tabel kan willekeurig zijn.
  • Een kolom binnen één relationele tabel moet zijn eigen individuele naam hebben.
  • Alle gegevens in een entiteitskolom hebben een vaste lengte en hetzelfde type.
  • Elk record telt in wezen als één stuk gegevens.
  • De samenstellende componenten van snaren zijn uniek. Er zijn geen dubbele rijen in een relationele entiteit.

Op basis van de eigenschappen is het duidelijk dat de attribuutwaarden van hetzelfde type en dezelfde lengte moeten zijn. Laten we eens kijken naar de kenmerken van de attribuutwaarden.

Basiskenmerken van relationele databasevelden

Veldnamen moeten uniek zijn binnen dezelfde entiteit. Relationele databaseattributen of veldtypen beschrijven welke categoriegegevens worden opgeslagen in entiteitsvelden. Een relationeel databaseveld moet een vaste grootte in tekens hebben. De parameters en het formaat van attribuutwaarden bepalen hoe de gegevens daarin worden gecorrigeerd. Er bestaat ook zoiets als "masker" of "invoerpatroon". Het is bedoeld om de configuratie van gegevensinvoer in de attribuutwaarde te definiëren. In ieder geval, wanneer u iets verkeerd schrijft in het veld, moet er een foutmelding worden gegeven. Er worden ook enkele beperkingen opgelegd aan de elementen van de velden - de voorwaarden voor het controleren van de nauwkeurigheid en foutloze gegevensinvoer. Er is een vereiste attribuutwaarde die ondubbelzinnig moet worden gevuld met gegevens. Sommige attribuutstrings kunnen worden gevuld met NULL-waarden. Het is toegestaan ​​om lege gegevens in veldattributen in te voeren. Net als de foutmelding zijn er waarden die automatisch door het systeem worden ingevuld - dit zijn de standaardgegevens. Een geïndexeerd veld is bedoeld om het zoeken naar gegevens te versnellen.

2D relationeel databasetabelschema

Voor een gedetailleerd begrip van het model dat SQL gebruikt, kunt u het beste het schema als voorbeeld beschouwen. We weten al wat een relationele database is. Een record in elke tabel is één gegevensitem. Om gegevensredundantie te voorkomen, is het noodzakelijk om normalisatiebewerkingen uit te voeren.

Basisregels voor het normaliseren van een relationele entiteit

1. De waarde van de veldnaam voor een relationele tabel moet uniek zijn, uniek (de eerste normaalvorm is 1NF).

2. Voor een tabel die al is teruggebracht tot 1NF, moet de naam van een niet-identificerende kolom afhankelijk zijn van de unieke identifier van de tabel (2NF).

3. Voor de hele tabel die al in 2NF is, kan elk niet-identificerend veld niet afhankelijk zijn van een element van een andere niet-herkende waarde (entiteit 3NF).

Databases: relationele relaties tussen tabellen

Er zijn 2 relationele hoofdtabellen:

  • Een-veel. Doet zich voor wanneer een sleutelrecord van tabel # 1 overeenkomt met verschillende instanties van de tweede entiteit. Een sleutelpictogram aan het ene uiteinde van de getekende lijn geeft aan dat de entiteit zich aan de "ene" kant bevindt, het andere uiteinde van de lijn is vaak gemarkeerd met een oneindigheidssymbool.

  • Een "veel-veel"-relatie wordt gevormd in het geval dat er een expliciete logische interactie is tussen meerdere rijen van een entiteit met een aantal records in een andere tabel.
  • Als er een één-op-één aaneenschakeling plaatsvindt tussen twee entiteiten, betekent dit dat de sleutel-ID van de ene tabel aanwezig is in een andere entiteit, dan moet een van de tabellen worden verwijderd, dit is overbodig. Maar soms, puur om veiligheidsredenen, scheiden programmeurs de twee bewust van elkaar. Daarom kan er hypothetisch een één-op-één relatie bestaan.

Het bestaan ​​van sleutels in een relationele database

De primaire en secundaire sleutels definiëren de potentiële relatie van de database. Relationele links van een datamodel kunnen maar één potentiële sleutel hebben, dit zal de primaire sleutel zijn. Hoe is hij? Een primaire sleutel is een entiteitskolom of set attributen waarmee u toegang kunt krijgen tot de gegevens voor een bepaalde rij. Het moet uniek en uniek zijn en de velden mogen geen lege waarden bevatten. Als de primaire sleutel uit slechts één attribuut bestaat, wordt deze eenvoudig genoemd, anders is het een component.

Naast de primaire sleutel is er ook een externe sleutel. Velen begrijpen niet wat het verschil tussen hen is. Laten we ze in meer detail bekijken aan de hand van een voorbeeld. Er zijn dus 2 tabellen: "Decanaat" en "Studenten". De entiteit "Decanaat" bevat de velden: "Student-ID", "Volledige naam" en "Groep". De tabel "Studenten" heeft attribuutwaarden zoals "Naam", "Groep" en "Gemiddeld". Aangezien student-ID niet hetzelfde kan zijn voor meerdere studenten, is dit veld de primaire sleutel. "Volledige naam" en "Groep" uit de tabel "Studenten" kunnen voor meerdere personen hetzelfde zijn, ze verwijzen naar het student-ID-nummer van de entiteit "Decanaat", daarom kunnen ze worden gebruikt als een externe sleutel.

Voorbeeld relationeel databasemodel

Voor de duidelijkheid geven we een eenvoudig voorbeeld van een relationeel databasemodel dat uit twee entiteiten bestaat. Er is een tabel genaamd "Deanery".

U moet verbindingen maken om een ​​volwaardige relationele database te krijgen. Het record "IN-41", zoals "IN-72", kan meer dan eens voorkomen in de plaat "Dean's office" en de achternaam, voornaam en patroniem van studenten kunnen in zeldzame gevallen samenvallen, dus deze velden kunnen niet worden maakte de primaire sleutel. Laten we de entiteit "Studenten" tonen.

Zoals we kunnen zien, zijn de soorten velden in relationele databases totaal verschillend. Er zijn zowel digitale als symbolische inzendingen. Daarom moeten de waarden van integer, char, vachar, date en andere worden gespecificeerd in de attribuutinstellingen. In de tabel "Decanaat" is alleen de student-ID een unieke waarde. Dit veld kan als primaire sleutel worden beschouwd. De volledige naam, groep en telefoonnummer van de entiteit "Studenten" kunnen worden genomen als een externe sleutel die verwijst naar de student-ID. De verbinding is tot stand gebracht. Dit is een voorbeeld van een één-op-één relatiemodel. Hypothetisch is een van de tabellen overbodig, ze kunnen eenvoudig worden gecombineerd tot één geheel. Om te voorkomen dat studentnummers algemeen bekend worden, is het bestaan ​​van twee tabellen redelijk realistisch.

de bestaande taaltools en softwaresystemen die hun hoge prestaties garanderen, en het creëren van de fundamenten van de theorie van databaseontwerp. Voor de algemene gebruiker van relationele DBMS'en kunnen informele equivalenten van deze concepten echter met succes worden toegepast:

"Relatie" - "tabel" (soms bestand), "tuple" - "rij" (soms record), "attribuut" - "kolom", "veld".

Dit veronderstelt dat "record" "instantie van het record" betekent en "veld" "naam en type veld".

Relationele database

Een relationele database is een verzameling relaties die alle informatie bevat die in een database moet worden opgeslagen. Gebruikers kunnen een dergelijke database echter zien als een verzameling tabellen. Opgemerkt moet worden:

Elke tabel bestaat uit lijnen van hetzelfde type en heeft een unieke naam; Rijen hebben een vast aantal velden (kolommen) en waarden (veel

Generieke velden en dubbele groepen zijn niet toegestaan). Met andere woorden, op elke positie in de tabel op het snijpunt van een rij en een kolom is er altijd precies één waarde of niets;

De rijen van een tabel moeten noodzakelijkerwijs op zijn minst één enkele waarde van elkaar verschillen, wat het mogelijk maakt om elke rij van een dergelijke tabel ondubbelzinnig te identificeren;

Namen worden uniek toegewezen aan de kolommen van de tabel en homogene gegevenswaarden (datums, achternamen, gehele getallen of geldbedragen) worden in elk van hen geplaatst;

De volledige informatie-inhoud van de database wordt weergegeven als expliciete gegevenswaarden en deze presentatiemethode is de enige; 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 (bijvoorbeeld vluchten met de bestemming "Parijs" en de aankomsttijd

tot 12 uur).

Relationele gegevens manipuleren

Na een relationeel datamodel te hebben voorgesteld, heeft E.F. Codd heeft ook een tool gemaakt om gemakkelijk met relaties te werken - relationele algebra. Elke bewerking van deze algebra gebruikt een of meer tabellen (relaties) als operanden en produceert als resultaat een nieuwe tabel, d.w.z. stelt u in staat om tafels te "knippen" of "verlijmen" (Fig. 1.5).

Rijst. 1.5. Enkele bewerkingen van relationele algebra

Er zijn talen voor gegevensmanipulatie gecreëerd waarmee alle bewerkingen van relationele algebra en bijna elke combinatie daarvan kunnen worden geïmplementeerd. Onder hen zijn de meest voorkomende SQL (Structured Query Language - gestructureerd

Query Language) en QBE (Quere-by-Example). Beide zijn

zijn gerelateerd aan talen van een zeer hoog niveau, met behulp waarvan de gebruiker aangeeft welke gegevens moeten worden verkregen, zonder de procedure voor het verkrijgen ervan te specificeren.

Met een enkele query in een van deze talen kunt u meerdere tabellen samenvoegen tot een tijdelijke tabel en de vereiste rijen en kolommen eruit knippen (selectie en projectie).

Relationeel databaseontwerp, ontwerpdoelstellingen

Alleen kleine organisaties kunnen gegevens delen in één volledig geïntegreerde database. Meestal is het praktisch onmogelijk om alle informatiebehoeften van de werknemers van de organisatie (d.w.z. toekomstige gebruikers van het systeem) te dekken en te begrijpen. Daarom bevatten de informatiesystemen van grote organisaties enkele tientallen databases, vaak verdeeld over meerdere onderling verbonden computers van verschillende afdelingen. (Dus in grote steden worden niet één, maar meerdere plantaardige basissen gecreëerd, die zich in verschillende regio's bevinden.)

Afzonderlijke databases kunnen alle gegevens combineren die nodig zijn om een ​​of meerdere toegepaste problemen op te lossen, of gegevens met betrekking tot een bepaald vakgebied (bijvoorbeeld financiën, studenten, docenten, koken, enz.). De eerste worden meestal applicatiedatabases genoemd en de laatste worden onderwerpdatabases genoemd (gerelateerd aan de onderwerpen van de organisatie, en niet aan haar informatietoepassingen). De eerste kan worden vergeleken met logistieke of recreatiebases, en de laatste met groente- en kledingbases.

Onderwerpdatabases maken het mogelijk om ondersteuning te bieden voor alle huidige en toekomstige toepassingen, aangezien de set van hun data-items sets van data-items van toegepaste databases omvat. Als gevolg hiervan zijn onderwerpdatabases gemaakt

Bied een raamwerk voor het afhandelen van informele, veranderende en onbekende vragen en applicaties (applicaties waarvoor het onmogelijk is om vooraf gegevensvereisten te bepalen). Deze flexibiliteit en aanpasbaarheid maakt het mogelijk om redelijk stabiele informatiesystemen te creëren op basis van onderwerpdatabases, d.w.z. systemen waarin de meeste wijzigingen kunnen worden aangebracht zonder oude applicaties te hoeven herschrijven.

Door het databaseontwerp te baseren op huidige en voorzienbare toepassingen, is het mogelijk om de creatie van een zeer efficiënt informatiesysteem aanzienlijk te versnellen, d.w.z. een systeem waarvan de structuur rekening houdt met de meest voorkomende datatoegangspaden. Daarom trekt toegepast ontwerp nog steeds enkele ontwikkelaars aan. Naarmate het aantal toepassingen van dergelijke informatiesystemen groeit, neemt het aantal toegepaste databases echter snel toe, neemt het niveau van gegevensduplicatie sterk toe en nemen de onderhoudskosten toe.

Dus elk van de overwogen ontwerpbenaderingen beïnvloedt ontwerpresultaten in verschillende richtingen. De wens om zowel flexibiliteit als efficiëntie te bereiken heeft geleid tot de vorming van een ontwerpmethodologie die zowel subjectieve als toegepaste benaderingen gebruikt. In het algemeen wordt de subjectbenadering gebruikt om de initiële informatiestructuur op te bouwen, en de toegepaste benadering wordt gebruikt om deze te verbeteren om de efficiëntie van de gegevensverwerking te verhogen.

Bij het ontwerpen van een informatiesysteem is het noodzakelijk om de doelen van dit systeem te analyseren en de vereisten ervan van individuele gebruikers (medewerkers van de organisatie) te identificeren. Het verzamelen van gegevens begint met het onderzoeken van de entiteiten van de organisatie en de processen die deze entiteiten gebruiken. Entiteiten worden gegroepeerd op "overeenkomst" (de frequentie van hun gebruik om bepaalde acties uit te voeren) en op het aantal associatieve verbindingen tussen hen (vliegtuig - passagier, leraar - discipline, student - sessie, enz.). Entiteiten of groepen van entiteiten met de grootste overeenkomst en (of) met de hoogste frequentie van associatieve links worden gecombineerd tot onderwerpdatabases. (Vaak worden entiteiten gecombineerd tot onderwerpdatabases zonder het gebruik van formele methoden - volgens "gezond verstand").

Het belangrijkste doel van het ontwerpen van een database is om de redundantie van opgeslagen gegevens te verminderen, en bijgevolg om de hoeveelheid gebruikt geheugen te besparen, om de kosten van meerdere bewerkingen voor het bijwerken van overtollige kopieën te verminderen en om de mogelijkheid van inconsistenties als gevolg van het opslaan van informatie te elimineren over hetzelfde object op verschillende plaatsen. Het zogenaamde "schone" DB-project ("Elk feit op één plaats") kan worden gemaakt met behulp van de relatienormalisatie-methodologie.

Normalisatie is het splitsen van een tabel in twee of meer die betere eigenschappen hebben bij het opnemen, wijzigen en verwijderen van gegevens.

Het uiteindelijke doel van normalisatie is om een ​​database-ontwerp te hebben waarin elk feit op slechts één plaats voorkomt, d.w.z. redundantie van informatie is uitgesloten. Dit wordt niet zozeer gedaan om geheugen te besparen, maar om mogelijke inconsistentie van opgeslagen gegevens te elimineren.

Elke tabel in een relationele database voldoet aan de voorwaarde dat er op de kruising van elke rij en kolom van de tabel altijd een enkele atomaire waarde is, en er kan nooit een set van dergelijke waarden zijn. Elke tabel die aan deze voorwaarde voldoet, wordt genormaliseerd genoemd. In feite zijn niet-genormaliseerde tabellen, d.w.z. tabellen met herhalende groepen zijn zelfs niet toegestaan ​​in een relationele database.

Elke genormaliseerde tabel wordt automatisch beschouwd als een tabel in eerste normaalvorm, afgekort als 1NF. Dus strikt genomen betekenen "genormaliseerd" en "in 1NF" hetzelfde. In de praktijk wordt de term "genormaliseerd" echter vaak in engere zin gebruikt.

- "volledig genormaliseerd", wat betekent dat het project geen enkele norm van normalisatie schendt.

Nu, naast 1NF, nog meer niveaus van normaal

malisatie - tweede normaalvorm (2NF), derde normaalvorm

(3NF), enz. In wezen is een tabel in 2NF als deze zich in 1NF . bevindt

en bovendien voldoet aan een aanvullende voorwaarde, waarvan de essentie hieronder zal worden besproken. Een tafel is in 3NF als deze in 2NF staat en bovendien aan een andere aanvullende voorwaarde voldoet

enzovoort.

Elke normaalvorm is dus in zekere zin beperkter, maar ook wenselijker dan de vorige. Dit komt door het feit dat de "(N + 1) de normaalvorm" enkele van de onaantrekkelijke kenmerken van de "N de normaalvorm" niet heeft. De algemene betekenis van de aanvullende voorwaarde die wordt opgelegd aan de (N + 1)-de normaalvorm ten opzichte van de N-de normaalvorm is het elimineren van deze onaantrekkelijke kenmerken.

Normalisatietheorie is gebaseerd op de aanwezigheid van een of andere relatie tussen de velden van de tabel. Er worden twee soorten van dergelijke afhankelijkheden gedefinieerd:

rationeel en dubbelzinnig.

Functionele afhankelijkheid. Veld B van de tabel is functioneel afhankelijk van veld A van dezelfde tabel als en slechts dan als op een bepaald moment voor elk van de verschillende waarden van veld A slechts één van de verschillende waarden van veld B noodzakelijkerwijs bestaat. Hierbij wordt aangenomen dat velden A en B samengesteld kunnen zijn.

Volledige functionele afhankelijkheid. Veld B is in volledige functie

functionele afhankelijkheid van een samengesteld veld A als het functioneel afhankelijk is van A en niet functioneel afhankelijk is van een deelverzameling van het veld A.

Meerwaardige afhankelijkheid... Veld A definieert op dubbelzinnige wijze veld B dat

Relationele database - basisconcepten

Als het over een database gaat, bedoelen ze vaak gewoon een soort geautomatiseerd datawarehouse. Deze opvatting is niet helemaal correct. Waarom dit zo is, wordt hieronder weergegeven.

In de enge zin van het woord is een database inderdaad een bepaalde set gegevens die nodig zijn voor het werk (actuele gegevens). Gegevens zijn echter een abstractie; niemand heeft ooit "alleen gegevens" gezien; ze ontstaan ​​niet en bestaan ​​niet op zichzelf. Gegevens zijn een weerspiegeling van objecten in de echte wereld. Stel dat u bijvoorbeeld informatie wilt opslaan over onderdelen die in het magazijn zijn ontvangen. Hoe wordt een object uit de echte wereld - een onderdeel - weergegeven in de database? Om deze vraag te beantwoorden, moet u weten welke tekens of zijden van het onderdeel relevant zijn, noodzakelijk voor het werk. Onder hen kan de naam van het onderdeel zijn, het gewicht, de afmetingen, de kleur, de fabricagedatum, het materiaal waarvan het is gemaakt, enz. In traditionele terminologie worden objecten van de echte wereld, waarvan informatie in de database is opgeslagen, entiteiten genoemd (zelfs als dit woord de lezer niet bang maakt - dit is een algemeen aanvaarde term), en hun werkelijke tekens worden attributen genoemd.

Elk kenmerk van een bepaald object is de waarde van het attribuut. Het motoronderdeel heeft bijvoorbeeld een weight attribuutwaarde van 50, wat weergeeft dat deze motor 50 kilogram weegt.

Het zou een vergissing zijn om te denken dat alleen fysieke objecten in de database worden weerspiegeld. Ze is in staat om informatie op te nemen over abstracties, processen, verschijnselen - dat wil zeggen, over alles wat een persoon tegenkomt in zijn activiteiten. Een database kan bijvoorbeeld informatie opslaan over bestellingen voor de levering van onderdelen aan een magazijn (hoewel het geen fysiek object is, maar een proces). De attributen van de entiteit "bestelling" zijn de naam van het geleverde onderdeel, het aantal onderdelen, de naam van de leverancier, de levertijd, enz.

Objecten van de echte wereld zijn met elkaar verbonden door vele complexe afhankelijkheden waarmee rekening moet worden gehouden bij informatieactiviteiten. Onderdelen worden bijvoorbeeld door hun fabrikanten aan het magazijn geleverd. Daarom moet het attribuut "naam van de fabrikant" worden opgenomen in de attributen van het onderdeel. Dit is echter niet voldoende, omdat u mogelijk aanvullende informatie nodig heeft over de fabrikant van een specifiek onderdeel - zijn adres, telefoonnummer, enz. Dit betekent dat de database niet alleen informatie over onderdelen en inkooporders moet bevatten, maar ook informatie over hun fabrikanten. Bovendien moet de database de relatie weergeven tussen onderdelen en fabrikanten (elk onderdeel wordt geproduceerd door een specifieke fabrikant) en tussen bestellingen en onderdelen (elke bestelling wordt uitgegeven voor een specifiek onderdeel). Houd er rekening mee dat alleen relevante, betekenisvolle links in de database hoeven te worden opgeslagen.

Een database is dus in de brede zin van het woord een verzameling beschrijvingen van objecten in de echte wereld en verbanden daartussen, relevant voor een specifiek toepassingsgebied. In wat volgt, gaan we uit van deze definitie en verfijnen deze in de loop van de presentatie.

Relationeel gegevensmodel

We hebben dus een idee gekregen van wat er in de database is opgeslagen. Nu moet u begrijpen hoe entiteiten, attributen en relaties worden toegewezen aan gegevensstructuren. Dit wordt bepaald door het datamodel.

Traditioneel worden alle DBMS'en geclassificeerd volgens het datamodel dat eraan ten grondslag ligt. Het is gebruikelijk om hiërarchische, netwerk- en relationele datamodellen te onderscheiden. Soms wordt daaraan een datamodel toegevoegd op basis van omgekeerde lijsten. Men spreekt dan ook van hiërarchische, netwerk-, relationele DBMS of DBMS op basis van omgekeerde lijsten.

In termen van prevalentie en populariteit zijn relationele DBMS'en tegenwoordig niet meer te concurreren. Ze zijn de facto een industriële standaard geworden en daarom zal een huishoudelijke gebruiker in zijn praktijk precies met een relationeel DBMS te maken krijgen. Laten we eens kijken naar het relationele datamodel zonder in details te treden.

Het werd in 1969-70 door Codd ontwikkeld op basis van de wiskundige theorie van relaties en is gebaseerd op een systeem van concepten, waarvan de belangrijkste tabel, relatie, rij, kolom, primaire sleutel en vreemde sleutel zijn.

Een relationele database is er een waarin alle gegevens aan de gebruiker worden gepresenteerd in de vorm van rechthoekige tabellen met gegevenswaarden, en alle bewerkingen op de database worden beperkt tot het manipuleren van tabellen. De tabel bestaat uit rijen en kolommen en heeft een naam die uniek is binnen de database. De tabel weerspiegelt het type object in de echte wereld (entiteit), en elk van zijn lijnen is een specifiek object. De tabel Artikel bevat bijvoorbeeld informatie over alle onderdelen die in het magazijn zijn opgeslagen, en de rijen zijn sets met attribuutwaarden voor specifieke onderdelen. Elke kolom in een tabel is een verzameling waarden voor een bepaald attribuut van een object. De kolom Materiaal is bijvoorbeeld een reeks waarden "Staal", "Tin", "Zink", "Nikkel", enzovoort. De kolom Hoeveelheid bevat niet-negatieve gehele getallen. De waarden in de kolom Gewicht zijn reële getallen gelijk aan het gewicht van het onderdeel in kilogram.

Deze waarden komen niet uit de lucht vallen. Ze worden geselecteerd uit de verzameling van alle mogelijke waarden voor een attribuut van een object, dat een domein wordt genoemd. De waarden in de materiaalkolom worden dus geselecteerd uit de reeks namen van alle mogelijke materialen - kunststof, hout, metalen, enz. Daarom is het in de kolom Materiaal principieel onmogelijk dat een waarde verschijnt die niet in het overeenkomstige domein ligt, bijvoorbeeld "water" of "zand".

Elke kolom heeft een naam, die meestal bovenaan de tabel wordt geschreven ( Rijst. een). Het moet uniek zijn in de tabel, maar verschillende tabellen kunnen kolommen met dezelfde naam hebben. Elke tabel moet ten minste één kolom hebben; de kolommen zijn gerangschikt in de tabel volgens de volgorde van hun naam toen deze werd gemaakt. In tegenstelling tot kolommen hebben rijen geen namen; hun volgorde in de tabel is niet gedefinieerd en het aantal is niet logisch beperkt.

Figuur 1. Basisconcepten van de database.

Omdat de rijen in de tabel niet geordend zijn, is het onmogelijk om een ​​rij op positie te selecteren - er is geen "eerste", "tweede", "laatste" tussen. Elke tabel heeft een of meer kolommen, waarvan de waarden elk van de rijen uniek identificeren. Zo'n kolom (of combinatie van kolommen) wordt een primaire sleutel genoemd. In de Onderdeeltabel is de primaire sleutel de kolom Onderdeelnummer. In ons voorbeeld heeft elk onderdeel in het magazijn een enkel nummer, waarmee de benodigde informatie uit de Artikeltabel wordt gehaald. Daarom is in deze tabel de primaire sleutel de kolom Onderdeelnummer. De waarden in deze kolom kunnen niet worden gedupliceerd - de tabel Onderdeel mag geen rijen bevatten die dezelfde waarde hebben in de kolom Onderdeelnummer. Als een tabel aan deze eis voldoet, wordt het een relatie genoemd.

De relatie tussen tabellen is een essentieel onderdeel van het relationele datamodel. Het wordt ondersteund door externe sleutels. Beschouw een voorbeeld waarin de database informatie opslaat over gewone werknemers (de tabel Werknemers) en managers (de tabel Manager) in een organisatie ( Rijst. 2). De primaire sleutel van de Supervisor-tabel is de kolom Nummer (bijvoorbeeld personeelsnummer). De kolom Achternaam kan niet als primaire sleutel fungeren, omdat twee managers met dezelfde achternaam in dezelfde organisatie kunnen werken. Elke medewerker is ondergeschikt aan één manager, wat tot uiting moet komen in de database. De tabel Werknemer bevat de kolom Managernummer en de waarden in deze kolom worden geselecteerd uit de kolom Nummer van de tabel Managers (zie Rijst. 2). De kolom Supervisornummer is een refererende sleutel in de tabel Werknemer.

Figuur 2. Relatie tussen databasetabellen.

Tabellen kunnen niet worden opgeslagen en verwerkt als de database geen "gegevens over gegevens" bevat, bijvoorbeeld descriptors voor tabellen, kolommen, enzovoort. Ze worden gewoonlijk metadata genoemd. Metadata wordt ook gepresenteerd in tabelvorm en wordt opgeslagen in een datadictionary.

Naast tabellen kan de database andere objecten opslaan, zoals displays, rapporten, weergaven en zelfs toepassingen die met de database werken.

Voor de gebruikers van het informatiesysteem is het niet voldoende dat de database alleen objecten uit de echte wereld weerspiegelt. Het is belangrijk dat een dergelijke reflectie eenduidig ​​en consistent is. In dit geval zou de database voldoen aan de integriteitsvoorwaarde.

Om de juistheid en onderlinge consistentie van gegevens te garanderen, worden aan de database enkele beperkingen opgelegd, die gegevensintegriteitsbeperkingen worden genoemd.

Er zijn verschillende soorten integriteitsbeperkingen. Het is bijvoorbeeld vereist dat de waarden in een tabelkolom alleen uit het bijbehorende domein worden geselecteerd. In de praktijk worden ook complexere integriteitsbeperkingen overwogen, zoals referentiële integriteit. De essentie ervan ligt in het feit dat een externe sleutel geen verwijzing kan zijn naar een niet-bestaande rij in een tabel. Integriteitsbeperkingen worden geïmplementeerd met behulp van speciale tools, die worden besproken in sec.Database server .

SQL-taal

Op zichzelf zijn gegevens in computervorm niet interessant voor de gebruiker als er geen toegang tot deze gegevens is. Gegevenstoegang wordt uitgevoerd in de vorm van databasequery's, die zijn geformuleerd in een standaard querytaal. Tegenwoordig is deze taal voor de meeste DBMS'en SQL.

De opkomst en ontwikkeling van deze taal als middel om de toegang tot een database te beschrijven, wordt geassocieerd met de creatie van de theorie van relationele databases. SQL is ontstaan ​​in 1970 als onderdeel van het System/R-onderzoeksproject in het Santa Teresa-lab van IBM. SQL is nu de standaard voor interface met relationele databasebeheersystemen. Zijn populariteit is zo groot dat ontwikkelaars van niet-relationele DBMS (bijvoorbeeld Adabas) hun systemen voorzien van SQL-interface.

De SQL-taal heeft een officiële standaard - ANSI / ISO. De meeste DBMS-ontwikkelaars houden zich aan deze standaard, maar breiden deze vaak uit om nieuwe te implementeren. Nieuwe mechanismen voor gegevensbeheer worden beschreven in sec.Database server , kan alleen worden gebruikt via speciale SQL-instructies die over het algemeen niet in de taalstandaard zijn opgenomen.

SQL is geen traditionele programmeertaal. Er worden geen programma's op geschreven, maar queries naar de database. Daarom is SQL een declaratieve taal. Dit betekent dat het kan worden gebruikt om te formuleren wat er moet worden verkregen, maar niet hoe het moet worden gedaan. In het bijzonder, in tegenstelling tot procedurele programmeertalen (C, Pascal, Ada), mist de SQL-taal dergelijke operators als if-then-else, for, while, etc.

We zullen niet in detail treden over de syntaxis van de taal. Laten we er alleen op ingaan voor zover dat nodig is om eenvoudige voorbeelden te begrijpen. Met hun hulp zullen de meest interessante gegevensverwerkingsmechanismen worden geïllustreerd.

Een SQL-query bestaat uit een of meer instructies, de een na de ander, gescheiden door puntkomma's. Onderstaande tabel 1 geeft een overzicht van de belangrijkste operators die zijn opgenomen in de ANSI / ISO SQL-standaard.

Tabel 1. Basisoperators van de SQL-taal.

SQL-query's gebruiken namen die database-objecten uniek identificeren. Dit is met name de naam van de tabel (Detail), de naam van de kolom (Naam), evenals de namen van andere objecten in de database die tot extra typen behoren (bijvoorbeeld de namen van procedures en regels) , die zal worden besproken in sec.Database server ... Naast eenvoudige namen worden ook complexe namen gebruikt - de gekwalificeerde kolomnaam definieert bijvoorbeeld de naam van de kolom en de naam van de tabel waartoe deze behoort (Part.Weight). Voor de eenvoud zullen in de voorbeelden de namen in het Russisch worden geschreven, hoewel dit in de praktijk niet wordt aanbevolen.

Elke kolom in een tabel bevat gegevens van bepaalde typen. Er zijn basisgegevenstypen - tekenreeksen van vaste lengte, gehele getallen en reële getallen, en aanvullende gegevenstypen - tekenreeksen met variabele lengte, valuta, datum en tijd, logische gegevens (twee waarden - "TRUE" en "FALSE "). In SQL kunt u numerieke, tekenreeksen, tekens en datum- en tijdconstanten gebruiken.

Laten we een paar voorbeelden bekijken.

De vraag "bepaal het aantal onderdelen in voorraad voor alle soorten onderdelen" is als volgt geïmplementeerd:

KIES naam, hoeveelheid

VAN Deel;

Het resultaat van de query is een tabel met twee kolommen - Naam en Aantal, die zijn overgenomen uit de originele Part-tabel. Kortom, met deze query kunt u een verticale projectie van de originele tabel krijgen (meer strikt, een verticale subset van de set tabelrijen). Uit alle rijen van de tabel Onderdeel worden rijen gevormd die waarden bevatten uit twee kolommen - Naam en Aantal.

De vraag "welke onderdelen van staal zijn op voorraad?", Geformuleerd in SQL, ziet er als volgt uit:

VAN Deel

WHERE Materiaal = "Staal";

Het resultaat van deze query is ook een tabel met alleen die rijen uit de brontabel die de waarde "Steel" hebben in de kolom Materiaal. Met deze query kunt u een horizontale projectie van de Part-tabel krijgen (een asterisk in een SELECT-instructie betekent dat u alle kolommen uit de tabel selecteert).

Het verzoek "om in het magazijn de naam en hoeveelheid te bepalen van onderdelen die van kunststof zijn en minder dan vijf kilogram wegen" wordt als volgt geschreven:

KIES naam, hoeveelheid

VAN Deel

WHERE Materiaal = "Plastic"

En gewicht< 5;

Het resultaat van de zoekopdracht is een tabel met twee kolommen - Naam, Hoeveelheid, die de naam en het aantal onderdelen bevat die van plastic zijn gemaakt en minder dan 5 kg wegen. In feite is de selectiebewerking eerst de bewerking van het vormen van een horizontale projectie (zoek alle rijen van de Onderdeeltabel, waarvoor Materiaal = "Plastic" en Gewicht< 5), а затем вертикальной проекции (извлечь Название и Количество из выбранных ранее строк).

Indexen zijn een van de tools die snelle toegang tot tabellen bieden. Een index is een databasestructuur die een verwijzing is naar een specifieke rij in een tabel. Een database-index wordt op dezelfde manier gebruikt als een index-index in een boek. Het bevat waarden uit een of meer kolommen van een bepaalde tabelrij en een link naar die rij. De waarden in de index zijn geordend, waardoor het DBMS snel kan zoeken in de tabel.

Laten we aannemen dat een query naar de Warehouse-database is geformuleerd:

SELECT Naam Aantal, Materiaal

VAN Deel

WHERE Nummer = "T145-A8";

Als er geen indexen voor deze tabel zijn, moet het DBMS, om deze query uit te voeren, de hele detailtabel scannen, er achtereenvolgens rijen uit selecteren en de selectievoorwaarde voor elk ervan controleren. Voor grote tabellen duurt zo'n query erg lang.

Als er eerder een index is aangemaakt op de kolom Tabelnummer Onderdeel, dan wordt de zoektijd in de tabel tot een minimum beperkt. De index zal waarden bevatten uit de kolom Nummer en een link naar de rij met deze waarde in de tabel Onderdeel. Bij het uitvoeren van een query zal het DBMS eerst de waarde "T145-A8" in de index vinden (en dit snel doen, aangezien de index is geordend en de rijen klein zijn), en vervolgens, door verwijzing in de index, zal het bepaal de fysieke locatie van de vereiste rij.

De index wordt gemaakt met de SQL-instructie CREATE INDEX. In dit voorbeeld is de operator

UNIEKE INDEX MAKEN Onderdeelindex

AAN Onderdeel (nummer);

zal een index maken met de naam Part Index in de kolom Part Table Number.

Voor een gebruiker van een DBMS zijn het niet de individuele SQL-statements die van belang zijn, maar een bepaalde reeks ervan, als één geheel gevormd en vanuit zijn oogpunt logisch. Elke dergelijke reeks SQL-instructies implementeert een specifieke actie op de database. Het wordt in verschillende stappen uitgevoerd, waarbij bij elk een aantal bewerkingen worden uitgevoerd op de databasetabellen. Dus in het banksysteem wordt de overdracht van een bepaald bedrag van een kortetermijnrekening naar een langetermijnrekening in verschillende operaties uitgevoerd. Onder hen - het opnemen van een bedrag van een kortetermijnrekening, bijschrijving op een langetermijnrekening.

Als er tijdens het uitvoeren van deze actie een storing optreedt, bijvoorbeeld wanneer de eerste bewerking is voltooid, maar de tweede niet, dan is het geld verloren. Daarom moet elke actie op de database volledig of helemaal niet worden uitgevoerd. Deze actie wordt een transactie genoemd.

Transactieverwerking is afhankelijk van het logboek, dat wordt gebruikt om transacties terug te draaien en de status van de database te herstellen. Meer details over transacties worden besproken in sec.Transactieverwerking .

Om onze bespreking van de SQL-taal af te sluiten, willen we nogmaals benadrukken dat het een querytaal is. Het is onmogelijk om er een complex applicatieprogramma op te schrijven dat met een database werkt. Voor dit doel gebruiken moderne DBMS'en de taal van de vierde generatie (Forth Generation Language - 4GL), die zowel de basismogelijkheden heeft van de proceduretalen van de derde generatie (3GL), zoals C, Pascal, Ada, en de mogelijkheid om SQL-instructies in de programmatekst, evenals bedieningselementen van de gebruikersinterface (menu's, formulieren, gebruikersinvoer, enz.). Tegenwoordig is 4GL een van de de facto standaarden voor ontwikkelingstools voor databasetoepassingen.

DBMS-functies.

DBMS-functies zijn van hoog en laag niveau.

Functies op hoog niveau:

1. Gegevensdefinitie - met behulp van deze functie wordt bepaald welke informatie in de database wordt opgeslagen (type, gegevenseigenschappen en hoe deze aan elkaar gerelateerd zijn).

2. Gegevensverwerking. Informatie kan op verschillende manieren worden verwerkt: selecteren, filteren, sorteren, de ene informatie met de andere combineren, totalen berekenen.

3. Gegevensbeheer. Deze functie specificeert wie de gegevens mag bekijken, corrigeren of nieuwe informatie mag toevoegen, evenals de regels voor gedeelde toegang.

Functies op laag niveau:

1. Gegevensbeheer in extern geheugen;

2. Beheer van RAM-buffers;

3. Transactiebeheer;

4. Introductie van een logboek van wijzigingen in de database;

5. Waarborgen van de integriteit en veiligheid van de database.

Per transactie wordt een ondeelbare reeks bewerkingen genoemd, die door het DBMS van het begin tot de voltooiing wordt gevolgd, en waarbij als één bewerking mislukt, de hele reeks wordt geannuleerd.

DBMS-logboek - een speciale database of een deel van de hoofddatabase dat niet toegankelijk is voor de gebruiker en wordt gebruikt om informatie over alle wijzigingen in de database vast te leggen.

Introductie van het DBMS-logboek ontworpen om de betrouwbaarheid van de opslag in de database te garanderen in het geval van hardwarestoringen en storingen, evenals fouten in de software.

Database-integriteit - dit is een eigenschap van een database, wat inhoudt dat deze volledige, consistente en adequaat weerspiegelende informatie over het vakgebied bevat.

DBMS-classificatie.

DBMS kan worden ingedeeld:

1. Op type programma's:

A. Databaseservers (bijvoorbeeld MS SQL Server, InterBase (Borland)) - ontworpen om datacenters in computernetwerken te organiseren en databasebeheerfuncties te implementeren die worden aangevraagd door clientprogramma's met behulp van SQL-instructies (d.w.z. programma's die reageren op vragen);

B. DB-clients - programma's die om gegevens vragen. PFSDBMS, spreadsheets, tekstverwerkers, e-mailprogramma's kunnen als clientprogramma's worden gebruikt;

C. Volledig functionele databases (MS Access, MS Fox Pro) - een programma met een ontwikkelde interface waarmee u tabellen kunt maken en wijzigen, gegevens kunt invoeren, query's kunt maken en opmaken, rapporten kunt ontwikkelen en afdrukken.

2. Volgens het datamodel van het DBMS (evenals de DB):

A. hiërarchisch - zijn gebaseerd op een boomstructuur van informatieopslag en lijken op het bestandssysteem van een computer; het grootste nadeel is het onvermogen om de veel-op-veel-relatie te implementeren;

B. Netwerk - die de hiërarchische verving en niet lang duurde, aangezien het belangrijkste nadeel de complexiteit was van het ontwikkelen van serieuze applicaties. Het belangrijkste verschil tussen het netwerk en de hiërarchische is dat in de hiërarchische structuur "record - afstammeling" slechts één voorouder heeft, en in de afstammeling van het netwerk kan het een willekeurig aantal voorouders hebben;

C. relationeel - waarvan de gegevens zich in tabellen bevinden, waartussen bepaalde links zijn;

D. Objectgericht - ze slaan gegevens op in de vorm van objecten en het belangrijkste voordeel bij het werken met hen is dat je er een objectgeoriënteerde benadering op kunt toepassen;

e. Hybride, d.w.z. object - relationeel - combineer de mogelijkheden van relationele en objectgeoriënteerde databases. Een voorbeeld van zo'n database is Oracle (voorheen was het relationeel).

3. Afhankelijk van de locatie van de afzonderlijke onderdelen van het DBMS wordt onderscheid gemaakt tussen:

A. lokaal - waarvan alle onderdelen zich op één computer bevinden;

B. netwerk.

Netwerk omvat:

- met organisatiebestand - server;

Met een dergelijke organisatie bevinden alle gegevens zich op één computer, die een bestandsserver wordt genoemd, en die is verbonden met het netwerk. Bij het vinden van de benodigde informatie wordt het hele bestand overgedragen, inclusief veel overbodige informatie. En alleen bij het maken van een lokale kopie wordt het vereiste record gevonden.

- met een client-server organisatie;

De databaseserver ontvangt een verzoek van de client, zoekt het benodigde record in de gegevens en draagt ​​dit over aan de client. De query naar de server wordt gevormd in de gestructureerde querytaal SQL, daarom worden de databaseservers SQL-servers genoemd.

- gedistribueerde DBMS bevatten enkele tientallen en honderden servers die zich op een groot gebied bevinden.

Basisvoorzieningen van het relationele databasemodel.

Relationele database wordt een database genoemd waarin alle gegevens zijn georganiseerd in de vorm van tabellen en alle bewerkingen op deze gegevens worden teruggebracht tot bewerkingen op tabellen.

Kenmerken van relationele databases:

1. Gegevens worden opgeslagen in tabellen die bestaan ​​uit kolommen en rijen;

2. Er is één waarde op het snijpunt van elke kolom en rij;

3. Elke kolom - veld heeft zijn eigen naam, die als naam dient - een attribuut, en alle waarden in één kolom zijn van hetzelfde type;

4. Kolommen zijn gerangschikt in een specifieke volgorde, die wordt opgegeven bij het maken van een tabel, in tegenstelling tot rijen, die in een willekeurige volgorde zijn gerangschikt. Er mag geen enkele rij in de tabel staan, maar er moet minstens één kolom zijn.

Relationele database terminologie:

Relationeel database-element Presentatieformulier
1. Database Set tafels
2. Databaseschema Een set tabelkoppen
3. Houding tafel
4. Relatiediagram Tabel Kolomkoppen Rij
5. Essentie Beschrijving van objecteigenschappen
6. Attribuut Kolomkop
7. Domein Veel geldige kenmerkwaarden
8. Primaire sleutel Een unieke id die elk record in de tabel op unieke wijze identificeert
9. Gegevenstype Het type van de waarden van de elementen in de tabel
10. Tupel Tekenreeks (schrijven)
11. Kardinaliteit Aantal rijen in de tabel
12. Mate van houding Aantal velden
13. Lichaamsrelatie Meerdere relatie-tupels

Bij het ontwerpen van een relationele database worden gegevens in verschillende tabellen geplaatst. Relaties worden gelegd tussen tabellen met behulp van sleutels. Bij het koppelen van tabellen worden de hoofd- en aanvullende (ondergeschikte) tabellen geselecteerd.

Er zijn de volgende soorten relaties tussen tabellen:

1. Relatie van de vorm 1: 1 (één op één) betekent dat elk record in de hoofdtabel overeenkomt met één record in de aanvullende tabel en omgekeerd, elk record in de aanvullende tabel overeenkomt met één record in de hoofdtabel.

2. Relatietype 1: M (één op veel) betekent dat elk record in de hoofdtabel overeenkomt met meerdere records in de aanvullende tabel en, omgekeerd, elk record in de aanvullende tabel overeenkomt met slechts één record in de hoofdtabel.

3. Relatie zoals M: 1 (veel op één) betekent dat een of meer records in de hoofdtabel overeenkomen met slechts één record in de secundaire tabel.

4. Relatie van de vorm M: M (veel op veel) - dit is wanneer verschillende records van de aanvullende tabel overeenkomen met verschillende records van de hoofdtabel en vice versa.

5. De belangrijkste onderdelen van MS Access.

De belangrijkste onderdelen (objecten) van MS Access zijn:

1. Tafels;

3. Formulieren;

4. Rapporten;

5. Macro's:

Modules.

tafel Is een object dat is ontworpen om gegevens op te slaan in de vorm van records (rijen) en velden (kolommen). Elk veld bevat een apart deel van het record en elke tabel wordt gebruikt om informatie over één specifieke vraag op te slaan.

Navraag - een vraag over de gegevens die in tabellen zijn opgeslagen, of een instructie voor het selecteren van te wijzigen records.

Formulier Is een object waarin u besturingselementen kunt plaatsen voor het invoeren, weergeven en wijzigen van gegevens in de velden van tabellen.

Verslag doen van Is een object waarmee u door de gebruiker gedefinieerde informatie op een bepaalde manier kunt presenteren, bekijken en afdrukken.

macro - een of meer macro's die kunnen worden gebruikt om een ​​specifieke taak te automatiseren. Macro is de belangrijkste bouwsteen van een macro; een op zichzelf staande instructie die kan worden gecombineerd met andere macro's om een ​​taak te automatiseren.

module - een reeks beschrijvingen, instructies en procedures die onder één naam zijn opgeslagen. Er zijn drie soorten modules in MS Access: een formuliermodule, een rapportmodule en een algemene module. Formulier- en rapportmodules bevatten een lokaal programma voor formulieren en rapporten.

6. Tabellen in MS Access.

Er zijn de volgende methoden om tabellen te maken in MS Access:

1. Tafelmodus;

2. Constructeur;

3. Tabel Wizard;

4. Importeren van tabellen;

5. Relatie met tabellen.

V tafelmodus de gegevens worden ingevoerd in een lege tabel. Er is een tabel met 30 velden voorzien voor gegevensinvoer. Na het opslaan beslist MS Access zelf welk datatype aan elk veld wordt toegekend.

Constructeur biedt de mogelijkheid om onafhankelijk velden aan te maken, gegevenstypen voor velden, veldgroottes te selecteren en veldeigenschappen in te stellen.

Een veld definiëren in de modus Constructeur spelen zich af:

1. Veldnaam , die in elke tabel een unieke naam moet hebben die een combinatie is van letters, cijfers, spaties en speciale tekens, met uitzondering van " .!” “ ". De maximale naamlengte is 64 tekens.

2. Data type definieert het type en bereik van geldige waarden, evenals de hoeveelheid geheugen die voor dit veld is toegewezen.

MS Access-gegevenstypen

Data type Beschrijving
Tekst Tekst en nummers, zoals namen en adressen, telefoonnummers, postcodes (maximaal 255 tekens).
Memo veld Lange tekst en cijfers, zoals opmerkingen en uitleg (tot 64.000 tekens).
Numeriek Een algemeen gegevenstype voor numerieke gegevens waarmee wiskundige berekeningen mogelijk zijn, met uitzondering van monetaire berekeningen.
Datum Tijd Datum- en tijdwaarden. De gebruiker kan standaardvormen kiezen of een aangepast formaat maken.
monetair Monetaire waarden. Het wordt niet aanbevolen om numerieke gegevenstypen te gebruiken voor geldberekeningen, aangezien: ze kunnen worden afgerond in berekeningen. Valutawaarden worden altijd weergegeven met het opgegeven aantal decimalen achter de komma.
Balie Automatisch vertoonde volgnummers. De nummering begint bij 1. Het tellerveld is handig voor het aanmaken van een sleutel. Dit veld is compatibel met een numeriek veld waarvan de eigenschap Grootte is ingesteld op Lang.
Logisch Waarden zijn Ja / Nee, Waar / Niet waar, Aan / Uit, een van de twee mogelijke waarden.
OLE-objectveld Objecten die zijn gemaakt in andere programma's die het OLE-protocol ondersteunen.

3. De belangrijkste eigenschappen van de velden:

- Veld grootte stelt de maximale grootte in van de gegevens die in het veld zijn opgeslagen.

- Veldformaat is een weergave-indeling voor een bepaald gegevenstype en stelt de regels in voor het presenteren van gegevens bij weergave op het scherm of afdrukken.

- Veldhandtekening stelt de tekst in die wordt weergegeven in tabellen, formulieren, rapporten.

- Staat op waarde stelt u in staat om invoer te controleren, stelt beperkingen in op invoerwaarden, in geval van overtreding van voorwaarden, verbiedt invoer en geeft de tekst weer die is gespecificeerd door de eigenschap Foutbericht;

- Foutmelding specificeert de tekst van het bericht dat op het scherm wordt weergegeven wanneer de beperkingen die zijn ingesteld door de voorwaarde voor de waarde worden geschonden.

Controlerende type- een eigenschap die is ingesteld op het tabblad Vervanging in het venster van de tabelontwerper. Deze eigenschap bepaalt of het veld in de tabel wordt weergegeven en in welke vorm - als veld of als combobox.

Unieke (primaire) sleutel tabellen kunnen eenvoudig of complex zijn met meerdere velden.

Om de sleutel te definiëren, worden de velden waaruit de sleutel bestaat gemarkeerd en wordt op de knop op de werkbalk gedrukt sleutelveld of de opdracht wordt uitgevoerd Bewerken / sleutelveld.


© 2015-2019 site
Alle rechten behoren toe aan hun auteurs. Deze site claimt geen auteurschap, maar biedt gratis gebruik.
Datum waarop de pagina is aangemaakt: 2016-02-16