Relationsdatabaser. Grundläggande regler för normalisering av ett relationellt företag


Databas (DB) -detta är en namngiven uppsättning strukturerade data relaterade till ett specifikt ämnesområde och avsedda för lagring, ackumulering och behandling med datorer.

Relationsdatabas (RDB)  är en uppsättning relationer vars namn sammanfaller med namnen på de schematiska relationerna i databasschemat.

Grundläggande begrepprelationella databaser:

· Datatyp  - Typen av värden för en viss kolumn.

· domän  (domän) - uppsättningen av alla giltiga attributvärden.

· attribut  (attribut) - kolumnrubriken i tabellen som karakteriserar objektets namn egenskap, till exempel studentens namn, datum för beställning, anställdens kön, etc.

· tåg  - en rad i tabellen som representerar en uppsättning värden för logiskt relaterade attribut.

· inställning  (relation) - en tabell som återspeglar information om verkliga föremål, till exempel studenter, order, anställda, invånare etc.

· Primär nyckel  (primär nyckel) - ett fält (eller uppsättning fält) i en tabell som identifierar vart och ett av dess poster.

· Alternativ nyckel  - detta är ett fält (eller uppsättning fält) som inte sammanfaller med primärnyckeln och identifierar inspelningsinstansen på ett unikt sätt.

· Utländsk nyckel  Är ett fält (eller en uppsättning fält) vars värden matchar de befintliga primära nyckelvärdena i en annan tabell. När två tabeller är associerade med primärnyckeln i den första tabellen, kopplas den främmande nyckeln till den andra tabellen.

· Relational Data Model (RMD)- Organisering av data i form av tvådimensionella tabeller.

Varje relationstabell måste ha följande egenskaper:

1. Varje tabellpost är unikt, det vill säga uppsättningen av fältvärden upprepas inte.

2. Varje värde, registrerat vid skärningspunkten mellan en rad och en kolumn, är atomiskt (oskiljbart).

3. Värdena för varje fält måste vara av samma typ.

4. Varje fält har ett unikt namn.

5. Arrangemanget för posterna är inte viktigt.

Huvudelementen i databasen:

Fältet  - En elementär enhet för logisk dataorganisation. Följande egenskaper används för att beskriva fältet:

· Förnamn, till exempel Efternamn, Förnamn, Patronym, Födelsedatum;

· Skriv till exempel sträng, tecken, numerisk, datum;

· Längd, till exempel i byte;

· Precision för numeriska data, till exempel två decimaler för att visa bråkdelen av ett nummer.

rekord  - en uppsättning värden för logiskt relaterade fält.

index - ett sätt att påskynda de sökoperationsposter som används för att skapa relationer mellan tabeller. Tabellen som indexet används för kallas indexerad. När man arbetar med index är det nödvändigt att uppmärksamma organiseringen av index, som är grunden för klassificering. Ett enkelt index representeras av ett enda fält eller ett logiskt uttryck som bearbetar ett enda fält. Ett sammansatt index representeras av flera fält med förmågan att använda olika funktioner. Tabellindex lagras i en indexfil.


Dataintegritet  - detta är ett sätt att skydda data över kommunikationsfält, vilket gör det möjligt att hålla tabeller i ett konsekvent (konsekvent) tillstånd (det vill säga förhindra förekomsten av poster i den underordnade tabellen som inte har motsvarande poster i överordnade tabeller).

utredning  - en formulerad fråga till en eller flera sammankopplade tabeller som innehåller kriterier för val av data. Frågan utförs med det strukturerade SQL-frågespråket (Srtructured Query Language). Som ett resultat av att hämta data från en eller flera tabeller kan många poster fås, kallad en vy.

Datapresentation  - en namngiven fråga för att hämta data (från en eller flera tabeller) lagrade i databasen.

En vy är i huvudsak en tillfällig tabell genererad som ett resultat av en fråga. Själva begäran kan skickas till en separat fil, rapport, tillfällig tabell, tabell på disk, etc.

rapport- en komponent i systemet vars huvudsakliga syfte är att beskriva och skriva ut dokument baserat på information från databasen.

Allmänna egenskaper hos att arbeta med RBD:

Den vanligaste tolkningen av den relationella datamodellen tillhör uppenbarligen Data, som reproducerar den (med olika förbättringar) i nästan alla sina böcker. Enligt Data består den relationella modellen av tre delar som beskriver olika aspekter av den relationella metoden: den strukturella delen, manipuleringsdelen och den integrerade delen.

Det är fast i den strukturella delen av modellen att den enda datastrukturen som används i relationella databaser är det normaliserade n-ary-förhållandet.

I manipuleringsdelen av modellen godkänns två grundläggande mekanismer för att manipulera relationella databaser - relationalgebra och relationskalkyl. Den första mekanismen är huvudsakligen baserad på den klassiska uppsättningsteorin (med vissa förfiningar), och den andra är baserad på den klassiska logiska apparaten för beräkning av första ordningens predikat. Observera att huvudfunktionen för manipuleringsdelen av den relationella modellen är att tillhandahålla ett mått på relationen för ett visst språk i relationella databaser: ett språk kallas relationellt om det inte har mindre uttrycksförmåga och kraft än relationell algebra eller relationskalkyl.


28. ALGORITMISKA SPRÅK. TRANSLATORS (TOLKARE OCH SAMMANSTÄLLARE). ALGORITMISK SPRÅKBASIC. PROGRAMSTRUKTUR. ID. Variabel. Operatörer. BEHANDLING AV EN- OCH Två-DIMENSIONELLA UPPFINNINGAR. ANVÄNDARFUNKTIONER. Rutiner. Arbeta med datafiler.

Språk på hög nivå  - ett programmeringsspråk vars koncept och struktur är bekvämt för människans uppfattning.

Algoritmiskt språk  (Algoritmiskt språk) - ett programmeringsspråk - ett konstgjort (formellt) språk som är utformat för att skriva algoritmer. Programmeringsspråket definieras av dess beskrivning och implementeras som ett speciellt program: en kompilator eller tolk. Exempel på algoritmiska språk är Borland Pascal, C ++, Basic etc.

Grundläggande begrepp för algoritmiskt språk:

Språkkomposition:

Ett vanligt talat språk består av fyra huvudelement: symboler, ord, fraser och meningar. Algoritmiska språk innehåller liknande element, bara ord kallas elementära konstruktioner, fraser kallas uttryck, meningar kallas operatörer.

symboler, elementära konstruktioner, uttryck och operatörer utgör en hierarkisk struktur, eftersom elementära konstruktioner bildas av en sekvens av tecken.

uttryck  är en sekvens av elementära konstruktioner och symboler,

operatör  - en sekvens av uttryck, elementära konstruktioner och symboler.

Språkbeskrivning:

Beskrivningen av tecknen är att lista de giltiga tecknen på språket. Under beskrivningen av elementära strukturer förstår reglerna för deras bildning. Beskrivningen av uttryck är reglerna för bildandet av alla uttryck som är vettiga på ett visst språk. Beskrivningen av operatörer består av att ta hänsyn till alla typer av operatörer som är giltiga på språket. En beskrivning av varje element i språket ges av dess SYNTACIS och SEMANTICS.

syntax  definitioner fastställer reglerna för att konstruera språkelement.

semantik definierar betydelsen och reglerna för att använda de språkelement för vilka syntaktiska definitioner har givits.

Språksymboler  - det här är de huvudsakliga odelbara karaktärerna, i vilka alla texter på språket är skrivna.

Elementära konstruktioner  - det här är de lägsta språkenheterna som har en oberoende betydelse. De bildas av grundkaraktärerna i språket.

uttryck  i ett algoritmiskt språk består av elementära konstruktioner och symboler, anger det regeln för att beräkna ett visst värde.

operatör  anger den fullständiga beskrivningen av vissa åtgärder som ska utföras. En grupp operatörer kan behöva beskriva en komplex åtgärd.

I detta fall kombineras operatörerna till Sammansatt uttalande  eller Unit. åtgärderdefinierade av operatörerna körs på data. Algoritmiska språkmeningar som ger information om datatyper kallas beskrivningar eller uttalanden som inte kan köras. Kombinationen av beskrivningar och operatörer kombinerade med en enda algoritm bildar ett program på ett algoritmiskt språk. I processen att studera ett algoritmiskt språk är det nödvändigt att skilja ett algoritmiskt språk från det språk som beskrivningen av det algoritmiska språket genomförs med. Vanligtvis kallas det språk som studeras helt enkelt språket, och språket i vilket en beskrivning av det språk som studeras är meta.

översättare - (Engelsk översättare - översättare) är ett översättningsprogram. Den konverterar ett program skrivet på ett av högnivåspråken till ett program som består av maskininstruktioner.

Ett program skrivet på något högt algoritmiskt språk kan inte köras direkt på en dator. En dator förstår bara språket i maskininstruktionerna. Därför måste programmet på det algoritmiska språket översättas (översättas) till språket för kommandona på en viss dator. En sådan översättning utförs automatiskt av speciella översättarprogram skapade för varje algoritmiskt språk och för varje datortyp.

Det finns två huvudsakliga sätt att sända - sammanställning och tolkning.

1. Sammanställning: Compiler  (Engelsk kompilator - kompilator, samlare) läser hela programmet, gör sin översättning och skapar en färdig version av programmet på maskinspråk, som sedan körs.

vid sammanställning hela källprogrammet förvandlas omedelbart till en sekvens av maskininstruktioner. Därefter körs det resulterande programmet av en dator med tillgängliga initialdata. Fördelen med denna metod är att översättningen utförs en gång och (flera) exekvering av det resulterande programmet kan utföras med hög hastighet. Samtidigt kan det resulterande programmet ta mycket minne i datorns minne, eftersom en språkoperatör under översättningen ersätts av hundratals eller till och med tusentals kommandon. Dessutom är felsökning och modifiering av det översatta programmet mycket svårt.

2. Tolkning: Tolk  (Engelsk tolk - tolk, tolk) översätter och kör programmet rad för rad.

vid tolkning  det ursprungliga programmet lagras i datorminne nästan oförändrat. Tolkarprogrammet avkodar operatörerna av källprogrammet en i taget och säkerställer omedelbart deras exekvering med tillgängliga data. Det tolkade programmet tar lite plats i datorns minne, det är lätt att felsöka och ändra. Men körningen av programmet är ganska långsam, eftersom vid varje utförande utförs en alternativ tolkning av alla operatörer.

Samlade program körs snabbare, men tolkade program är lättare att fixa och modifiera

Varje specifikt språk är riktad antingen till sammanställning eller tolkning, beroende på vilket syfte det skapades för. Exempelvis används Pascal vanligtvis för att lösa ganska komplexa problem där hastigheten på program är viktig. Därför implementeras detta språk vanligtvis med kompilatorn.

Å andra sidan skapades BASIC som ett språk för början av programmerare, för vilka rad-för-rad-exekvering av programmet har obestridliga fördelar.

Ibland finns det en kompilator och en tolk för ett språk. I det här fallet kan du använda tolken för att utveckla och testa programmet och sedan kompilera det felsökta programmet för att öka dess körningshastighet.

RELATIV DATABASE OCH DETTA FUNKTIONER. TYPER LÄNKAR MELLAN RELÄTTABELL

Relationsdatabas - en samling sammankopplade tabeller, som var och en innehåller information om objekt av en viss typ. Tabellraden innehåller data om ett objekt (till exempel produkt, kund) och kolumnerna i tabellen beskriver de olika egenskaperna hos dessa objekt - attribut (till exempel namn, produktkod, kundinformation). Poster, dvs tabellrader, har samma struktur - de består av fält som lagrar ett objekts attribut. Varje fält, dvs en kolumn, beskriver bara en egenskap hos ett objekt och har en strikt definierad datatyp. Alla poster har samma fält, bara de visar olika informationsegenskaper för objektet.

I en relationsdatabas måste varje tabell ha en primär nyckel - ett fält eller en kombination av fält som identifierar varje rad i tabellen på ett unikt sätt. Om nyckeln består av flera fält kallas den sammansatt. Nyckeln måste vara unik och identifiera posten på ett unikt sätt. Med nyckelns värde kan du hitta en enda post. Nycklarna tjänar också till att organisera information i databasen.

Relationsdatabasstabeller måste uppfylla kraven för att normalisera relationer. Relationsnormalisering är en formell anordning med begränsningar för bildandet av tabeller, vilket eliminerar duplicering, säkerställer konsistensen hos de data som lagras i databasen och minskar ansträngningen som krävs för att underhålla databasen.

Låt studenttabellen skapas med följande fält: Gruppnummer, namn, betygsnummer, födelsedatum, specialtitel, fakultetsnamn. En sådan organisation av informationslagring kommer att ha flera nackdelar:

  •   dubblering av information (namnet på specialitet och fakultet upprepas för varje student), därför kommer databasvolymen att öka;
  •   proceduren för uppdatering av informationen i tabellen är svår på grund av behovet av att redigera var och entabellposter.

Tabellnormalisering är avsedd att hantera dessa brister. Finns tillgänglig tre normala förhållanden.

Den första normala formen.  En relationstabell reduceras till den första normala formen om och bara om ingen av dess rader innehåller mer än ett värde i något av dess fält och inget av dess nyckelfält är tomt. Så om studenten måste erhålla information med studentens namn från tabellen, ska fältet för fullständigt namn delas upp i delar Efternamn, Förnamn, Mellannamn.

Andra normala formen. En relationstabell specificeras i den andra normala formen om den uppfyller kraven för den första normala formen och alla dess fält som inte ingår i den primära nyckeln är anslutna med en full funktionell relation med den primära nyckeln. För att föra tabellen till den andra normala formen är det nödvändigt att fastställa fältets funktionella beroende. Fältets funktionella beroende är ett beroende, när ett visst värde i nyckelattributet i en kopia av ett informationsobjekt motsvarar endast ett värde i det beskrivande attributet.

Tredje normalform.  En tabell finns i den tredje normala formen, om den uppfyller kraven i den andra normala formen, beror inget av dess icke-nyckelfält funktionellt på något annat icke-nyckelfält. I studenttabellen (gruppnummer, namn, betygsboknummer, födelsedatum, Starost) är till exempel tre fält - betygsboknummer, gruppnummer, starost beroende av varandra. Gruppnumret beror på betygsboknumret och den äldre beror på gruppnumret. För att eliminera det transitiva beroendet är det nödvändigt att överföra några av fälten i Studenttabellen till en annan grupptabell. Tabellerna kommer att ha följande form: Student (gruppnummer, namn, betygsboknummer, födelsedatum), grupp (gruppnummer, Starosta).

Följande operationer är möjliga på relationstabeller:

  •   Fogar samman bord med samma struktur. Resultatet är en allmän tabell: först den första, sedan den andra (sammankopplingen).
  •   Korsning av tabeller med samma struktur. Resultat - dessa poster väljs som finns i båda tabellerna.
  •   Subtraktion av tabeller med samma struktur. Resultat - dessa poster väljs som inte är avdragsgilla.
  •   Prov (horisontell delmängd). Resultat - poster väljs som uppfyller vissa villkor.
  •   Projektion (vertikal delmängd). Resultatet är en relation som innehåller några av fälten från källtabellerna.
  •   Kartesisk produkt av två tabeller Poster för den resulterande tabellen erhålls genom att kombinera varje post i den första tabellen med varje post i den andra tabellen.

Relationstabeller kan relateras till varandra, därför kan data hämtas samtidigt från flera tabeller. Tabeller kopplas samman för att i slutändan minska databasvolymen. Anslutningen av varje par av tabeller tillhandahålls om de har samma kolumner.

Följande typer av informationslänkar är tillgängliga:

  •   ett-till-ett;
  •   en-till-många;
  •   många-till-många.

En-till-en-kommunikation antar att endast ett attribut i den andra tabellen motsvarar ett attribut för den första tabellen och vice versa.

En-till-många-relationantar att ett attribut i den första tabellen motsvarar flera attribut i den andra tabellen.

Många-till-många-förhållanden   antar att ett attribut i den första tabellen motsvarar flera attribut i den andra tabellen och vice versa.

Nivå 1:Nivån på externa modeller är den högsta nivån där varje modell har sin egen datainsyn. Denna nivå definierar synvinkeln för databasen för enskilda applikationer.

Konceptnivå:Den centrala kontrolllänken, där databasen presenteras i den mest allmänna formen, som kombinerar data som används av alla applikationer. I själva verket återspeglar den konceptuella nivån en generaliserad domänmodell.

Fysiskt lager (databas):Detta är själva uppgifterna som finns i filer eller i sidstrukturer på externa lagringsmedier.


Datamodeller

Följande datamodeller skiljer sig:

1. Infologiskt

2. Datumet är logiskt

3. Fysisk

Databasdesignprocessen börjar med utformningen av den infologiska modellen. En infologisk datamodell är en generaliserad informell beskrivning av en databas som skapas, gjord med naturligt språk, matematiska formler, tabeller, grafer och andra verktyg som är förståelig för alla som arbetar med databasdesign.

Domän Tuple

Den infologiska modellen återspeglar den verkliga världen i ett koncept som är förståeligt för människor, helt oberoende av datalagringsmiljön. Därför bör den infologiska modellen inte ändras förrän vissa förändringar i den verkliga världen kräver förändringar utanför definitionen så att denna modell fortsätter att visa ämnesområdet.

Det finns många sätt att konstruera denna modell: grafmodeller, semantiska nätverk, enhetskommunikation och andra.

Datalogic Model

Den infologiska modellen ska visas i en datalogisk modell som förstås av DBMS. En datalogisk modell är en formell beskrivning av en infologisk modell på DBMS-språket.

Hierarkisk modell

Denna modell är en samling relaterade element som bildar en hierarkisk struktur. De grundläggande begreppen för hierarki inkluderar nivå, nod och kommunikation.

kommunikationsnivå


En nod är en uppsättning dataattribut som beskriver ett objekt. Varje nod är associerad med en nod på en högre nivå och med valfritt antal noder på den lägre nivån. Ett undantag är noden för den högsta nivån. Antalet träd i databasen bestäms av antalet trädrötter. Varje databaspost har en enda sökväg från rotposten. Ett enkelt exempel är Internet-domännamnsystemet \\ adress. På den första nivån (trädets rot) ligger vår planetjord, på den andra är landet, på den tredje är regionen, på den fjärde är byn, gatan, huset, lägenheten. En typisk representant är databashanteringssystemet från IBM - IMS.

Alla förekomster av denna ättlingstyp med en vanlig förekomst av förfaderstypen kallas tvillingar. Databasen har en fullständig genomsökningsorder. Från topp till botten och från höger till vänster.

Fysisk modell

Baserat på den datalogiska modellen konstrueras en fysisk modell. Den fysiska organisationen av data har en stor inverkan på databasens prestanda. DBMS-utvecklare försöker skapa de mest produktiva fysiska datamodellerna genom att erbjuda användare ett eller annat verktyg för att anpassa modellen för en viss databas.

Exempel: I synnerhet för en relationsdatabas tar den redan hänsyn till:

1. Fysiska aspekter av att lagra tabeller i specifika filer.

2. Skapa index som optimerar operationens hastighet på data med applikationen.

3. Utföra olika åtgärder på data för vissa händelser som definierats av användare med triggers och lagrade procedurer.

   Infologiska modeller X

Fysiska modeller


För alla nivåer och för alla metoder för att representera ämnesområdet ligger kodningen av begrepp för förhållanden mellan begrepp. Ett viktigt steg i utvecklingen av alla informationssystem är genomförandet av systemanalys:

Formalisering av ämnesområdet och presentation av systemet som en uppsättning komponenter.

Komposition som bas för systemanalys kan vara funktionell (bygga en hierarki).

Men i de flesta system, när det gäller databaser, är datatyper ett mer statiskt element än hur de behandlas. Därför har sådana metoder för systemanalys som flödesschemaets flödesschema intensivt utvecklats. Utvecklingen av relationsdatabaser. Stimulerade utvecklingen av byggnadsutvecklingstekniker i särskilt ER ER-diagram. Den relationella datamodellen använder direkt begreppet en relation som en kartläggning. Det är närmast den konceptuella modellen för datapresentation. Och ligger ofta till grund för det.

Till skillnad från teoretiker om grafmodeller implementeras inte relationer mellan relationer på ett uttryckligt sätt, för vilka de använder relationstangenter. Exempelvis implementeras relationer av en hierarkisk typ med mekanismen för primära och främmande nycklar, när attributets faktum måste finnas i en underordnad relation.

Ett sådant attribut för relationer i huvudrelationerna kommer att kallas den primära nyckeln och i den underordnade sekundären.

Framsteg i utvecklingen av programmeringsspråk relaterade främst till datatypning och uppkomsten av objektorienterade språk tillät oss att närma oss analysen av komplexa system i termer av hierarkiska representationer, d.v.s. med hjälp av objektklasser med polymorfismegenskaper, arv, inkapsling.

ATTITUDE ÄR EN BORD.

   Redigerar tabeller, poster ...

Ta bort vad du skapade och

Redigera.


Relationsdatabasmodell

Relationsdatamodeller är för närvarande de mest populära för denna typ av datarepresentation.

En relationsmodell kan representeras som en speciell metod för att presentera data som innehåller sina egna data (i form av tabeller), och hur man arbetar och manipulerar dem (i form av relationer). Den relationella modellen har tre konceptuella element: struktur, integritet och databehandling. Dessa element har sina egna obligatoriska koncept som måste klargöras för vidare presentation.

En tabell betraktas som ett direkt datalager. Traditionellt kallas en tabell i relationella system attityd.Raden i tabellen heter tupeloch kolumnen attribut. I detta fall har attributen unika namn (inom relationen).

Antalet tupler i tabellen kallas kardinalnummer. Antal attribut grad.En unik identifierare skapas för relationen, det vill säga ett eller flera attribut vars värden samtidigt inte är desamma - identifieraren kallas primär nyckel Domändetta är uppsättningen giltiga homogena värden för ett visst attribut. Således kan en domän betraktas som en namngiven datauppsättning, och komponenterna i denna uppsättning är logiskt odelbara enheter (till exempel kan en lista med namn på anställda på en institution fungera som en domän, men inte alla namn kan finnas i tabellen).

   SUMM   Kireyev 25.50   Motylev 17.05 … …. …

inställning

attribut

Fält KOD, NAME, SUMM är tabellattributen i rubriken.

Par KOD 5216, NAMN Kireeva, SUMM 25,50 är element i förhållande.

I relationella databaser, till skillnad från andra modeller, anger användaren vilken information som behövs för honom och inte hur man gör det. Av detta skäl är processen att flytta och navigera i databasen i relationella system automatiskt, och denna uppgift utförs i DBMS optimizer.Hans jobb är att hämta data från databasen på begäran på det mest effektiva sättet. Således bör optimeringsprogrammet åtminstone kunna bestämma från vilka tabeller data väljs, hur mycket information som finns i dessa tabeller och vad som är den fysiska ordningen för postarna i tabellerna och hur de grupperas.

Dessutom utför en relationsdatabas också katalogfunktioner. Katalogen innehåller en beskrivning av alla objekt som utgör databasen: tabeller, index, triggers, etc. Uppenbarligen är en sådan komponent som en optimering avgörande för att systemet ska fungera korrekt. Optimeringsprogrammet använder den information som är lagrad i katalogen. Ett intressant faktum är att själva katalogen är en uppsättning tabeller, så DBMS kan manipulera den på traditionella sätt utan att ta till sig några speciella tekniker och metoder.

Domäner och relationer

Grundläggande definitioner: Domäner, typer av relationer, predikat.

Relations har ett antal grundläggande egenskaper:

1. I det mest allmänna fallet finns det inga allmänna tuplingar i ett förhållande - detta följer av själva definitionen av ett förhållande. För vissa DBMS är dock i vissa fall en avvikelse från den här egenskapen tillåten. Så långt som den primära nyckeln äger rum i förhållandet, utesluts identiska tuple.

2. Tuples beställs inte från topp till botten - i förhållande till det finns helt enkelt inget begrepp om ett positionsnummer. I förhållanden utan förlust av information kan du framgångsrikt ordna tuples i valfri ordning.

3. Attribut beställs inte från vänster till höger. Attributen i relationshuvudet kan ordnas i valfri ordning, medan dataintegriteten inte kränks. Därför finns inte heller begreppet ett positionsnummer i förhållande till ett attribut.

4. Värdet på attribut består av logiskt icke delbara enheter - detta följer av det faktum att värdena tas från domäner, annars kan man säga att relationer inte innehåller upprepningsgrupper. Det vill säga de är normaliserade.

Relationssystem stöder flera typer av relationer:

1. Namngivna variabler är relationer som definieras i DBMS av skapandeoperatörer och vanligtvis nödvändiga för en mer bekväm presentation av information till användaren.

2. Grundläggande relationer är direkt en viktig del av databasen, så när de utformas får de sitt eget namn.

3. En härledd relation är en som har bestämts genom andra, vanligtvis grundläggande, relationer med hjälp av DBMS-verktyg.

4. Denna representation är faktiskt en namngiven härledd relation, och representationen uttrycks uteslutande genom DBMS-operatörer som tillämpas på namngivna relationer, därför finns de inte fysiskt i databasen.

5. Ett frågeställning är ett namn som inte har fått namnet som innehåller data (resultatet av en specifik fråga). Resultatet lagras inte i databasen utan finns så länge användaren behöver det.

6. En lagrad relation är en som stöds fysiskt i minnets relationer; förhållandegrunden är oftast relaterad till den lagrade relationen. Baserat på ovanstående kan du definiera en relationsdatabas som en uppsättning relationer som är sammankopplade.


En relation i detta fall är en sammanslutning av två eller flera förhållanden.

  KOD   Adress
  1 1 Förhållandet mellan en och flera är att varje element (tupel A) motsvarar flera element i tuplen B vid varje tidpunkt.
   ∞ Binäranslutning
  studenter
  Prof
  Klass schema

  studenter

Ternära anslutningar


Dataintegritet

I relationella modeller har dataintegritet en speciell plats. Kom ihåg att en nyckel eller en potentiell nyckel är den minsta uppsättningen attribut med de värden som du kan hitta den önskade tupeln på ett unikt sätt; minimalitet innebär att uteslutande av attribut från uppsättningen inte tillåter att tupeln identifieras med de återstående attributen.

Varje förhållande har minst en möjlig nyckel. En av dem tas som en primär nyckel.

När du väljer en primär nyckel bör preferenser ges till icke-sammansatta tangenter eller nycklar som består av en minsta uppsättning attribut. Det är också oönskat att använda tangenter med långa textvärden (Det är att föredra att använda heltalattribut som nycklar). Så för att identifiera den anställda kan du använda antingen ett unikt personalnummer eller ett passnummer eller en uppsättning av efternamn med mellannamn och avdelningsnummer. Relationens primära nyckel är inte tillåten, det vill säga att något attribut som deltar i den primära nyckeln tar odefinierade värden. I detta fall uppstår en motsägelsefull situation ( kollision): En icke-unik primär nyckelpost visas. Därför bör detta övervakas noggrant när man utformar en databas.

Om utländska nycklar. Det bör noteras att relationen C kopplar förbindelserna B och A, då bör den inkludera främmande nycklar motsvarande de primära nycklarna för relationerna A och B.

Tabellens utländska nyckel bildas med flera primära nycklar i andra tabeller.

När man överväger problemet med att välja en relationrelationsmetod i databasen, uppstår således frågan om vilka utländska nycklar som ska vara. I det här fallet, för varje utländsk nyckel, är det nödvändigt att lösa problemet som är förknippat med möjligheten (eller omöjligheten) av utseendet på obestämda värden i främmande nycklar (NULL - värden - attributvärde för saknad information). Med andra ord, kan det finnas någon tupel i ett förhållande som en tupel inte är känd i förhållande till det?

Å andra sidan måste du fundera över frågan om vad som händer när du tar bort tuplorna från en relation med en utländsk nyckel. I detta fall finns följande troliga möjligheter:

· Drift kaskadkopplade  - det vill säga att borttagandet av tuples i ett förhållande leder till borttagandet av tuples som är associerade med relationen. Till exempel att ta bort information om namnet på namnet etc. den anställd på ett sätt leder till att hans lön tas bort på ett annat sätt;

· Drift   begränsad till -det vill säga bara de tupplar tas bort för vilka det inte finns någon annan relaterad information. Inte all information raderas (inte i alla avseenden) eftersom den kan användas i ett annat avseende, avlägsnande av information i vilket leder till brott mot dataintegriteten. Om sådan information finns tillgänglig kan raderingen inte utföras, till exempel radering av information om ett namn, efternamn etc. en anställd är bara möjlig om det inte finns någon information i ett relaterat hänseende om hans lön.

Det är nödvändigt att tillhandahålla tekniken för vad som kommer att hända när man försöker uppdatera den primära nyckeln i relationen som någon utländsk nyckel refererar till. Här har du samma alternativ som när du tar bort:

· Åtgärden är kaskad, det vill säga när den primära nyckeln uppdateras uppdateras den utländska nyckeln på ett relaterat sätt. Till exempel uppdaterar en primär nyckel med avseende på var anställdas information lagras leder till uppdatering av en utländsk nyckel med avseende på löninformation.

· Operationen är begränsad, det vill säga bara de primära nycklarna uppdateras för vilka det inte finns någon annan relaterad information. Om sådan information finns tillgänglig kan en uppdatering inte göras. Till exempel är det bara möjligt att uppdatera den primära nyckeln med avseende på var information om en anställd lagras om information om hans lön i ett relaterat avseende inte är tillgänglig.1


Relationsalgebra

Den formella grunden för basen i en relationsdatabasmodell är relationell algebra baserad på uppsättningsteori och med hänsyn till en speciell operatör för relationer, och relationskalkyl baserad på matematisk logik.

  produkt

  A A A B B C   Y D
  C D
   EN
  A B C   Y D   W F W

Det bör noteras att relationell algebra är mycket kraftfull - komplexa databasfrågor kan uttryckas med ett enda uttryck. Det är av denna anledning som dessa mekanismer ingår i den relationella datamodellen. Alla frågor som uttrycks med ett uttryck för relationalgebra eller en formel för relationskalkyl, kan uttryckas med en operatör på detta språk.

Relationsalgebra har en viktig egenskap - den är stängd med avseende på begreppet relation. Detta innebär att uttrycket av relationell algebra utförs på relationer mellan relationella databaser och resultaten av deras beräkning är också relationer.

Huvudtanken med relationalgebra är att medlen för att manipulera relationer, betraktade som en uppsättning, är baserade på traditionella flera operationer kompletterade med vissa specifika databasoperationer.

Vi beskriver en variant av algebra som föreslogs av CODOD. Verksamheten består av åtta huvudoperatörer:

· Exempelförhållande (unary operation)

· Projektion av en relation (unary operation)

· Relationer

· Korsning av relationer (binär drift)

· Subtraktionsförhållande

· Arbetsförhållande

· Koppla samman relationer

· Fördelning av relationer

Dessa operationer kan förklaras på följande sätt:

· Resultatet av provtagning av en relation under ett visst villkor är en relation som endast inkluderar de tupplar av den ursprungliga relationen som uppfyller detta villkor.

· När man projicerar en relation till en given uppsättning av dess attribut, kommer relationen att erhållas vars tuplor är hämtade från motsvarande tuplor i den första relationen.

· Under operationen för att kombinera två relationer, erhålls en relation som inkluderar alla tupler som ingår i minst en av de relationer som är involverade i operationen.

· När man utför operationen för att korsa två relationer, kommer man att få en relation som inkluderar alla tupler som ingår i båda initiala relationerna.

· När man utför operationen för att subtrahera två relationer, kommer en relation att erhållas som inkluderar alla tuplor som ingår i den första relationen, med undantag för de som också ingår i den andra relationen.

· När man utför en direktprodukt av två relationer, erhålls en relation vars tuplor är en kombination av tuplor från första och andra relationer.

· När två förhållanden är kopplade i enlighet med något tillstånd, bildas den resulterande relationen mellan tupplar som är en kombination av tuplor i den första och andra relationen som uppfyller detta tillstånd.

· Relationsdelningsoperationen har två operander - det vill säga binära (det vill säga bestående av två attribut) och unary (bestående av ett attribut) -förhållande. Resultatet av operationen är en relation som består av tuples inklusive förhållandet mellan det första attributet för tuplen i den första relationen, så att värdesuppsättningen för det andra attributet sammanfaller med uppsättningen av värden för den andra relationen.

Förutom ovanstående finns det ett antal specialoperationer som är specifika för att arbeta med databaser:

· Som ett resultat av döpningsoperationen är relationen en uppsättning tuplar som matchar kroppen i det ursprungliga förhållandet, men attributnamnen ändras.

Av detta följer att resultatet av en relationell operation är en viss relation, det är möjligt att bilda relationella uttryck där, i stället för det ursprungliga förhållandet (operand), ett kapselt relationellt uttryck kommer att användas. Detta beror på det faktum att funktionen av relationell algebra verkligen är stängd med avseende på begreppet en relation. Låt oss börja med operationen fackförbindelseremellertid gäller detta lika för korsnings- och kombinationsoperationer, det vill säga i relationell algebra är resultatet av fackföreningen en relation. Om möjligheten är tillåten i relationell algebra sammanslutningar  Eftersom det finns två godtyckliga relationer med olika uppsättningar attribut, kommer resultatet av en sådan operation att vara många, men många olika typer av tupler, det vill säga generellt sett inte en relation. Om vi \u200b\u200bgår vidare från kravet att den relationella algebra stängs med avseende på begreppet en relation, så en sådan operation sammanslutningarär meningslös. Detta leder till konceptet förhållanden kompatibilitet  på union: två relationer är endast kompatibla om de har samma rubriker, det vill säga de har samma uppsättning attributnamn och attribut med samma namn definieras i samma domän.

Under förutsättning att de två relationerna är kompatibla genom att i den vanliga utförandet av operationen för att kombinera skärningspunkten för subtraktion på dem kombinera är resultatet av operationen en relation med en korrekt definierad rubrik som matchar rubriken för var och en av relationsoperanterna. Om de två relationerna inte är helt kompatibla i kombination, det vill säga kompatibla i allt förutom attributnamn, kan dessa relationer, innan de utför en operation, som en sammanfogning, göras fullt kompatibla i kombination genom att tillämpa namnet.

Den direkta produkten av de två relationerna orsakar nya problem. I Set Theory kan en direkt produkt erhållas för alla uppsättningar. Element i den resulterande uppsättningen kommer att vara par som består av element från den första och andra uppsättningen. Eftersom relationer är uppsättningar är det möjligt att få en direkt produkt för alla två relationer. Resultatet kommer dock inte att bli en attityd. Resultatelementen kommer inte att vara tuples, utan par av tuples. Därför används i relationell algebra en speciell form av operationen för att ta den direkta produkten - den utvidgade direkta produkten av relationer. När man tar en utvidgad direktprodukt av två relationer är ett element i det resulterande förhållandet en tupel som bildas när en tupel av den första relationen slås samman med en tupel av den andra relationen. Omedelbart uppstår ett andra problem relaterat till att erhålla en korrekt bildad rubrik för det resulterande förhållandet, vilket leder till behovet av att införa begreppet kompatibilitet mellan relationer och ta en utvidgad direktprodukt.

Två relationer är kompatibla med att ta en direkt produkt endast om uppsättningen attributnamn för dessa relationer inte korsar varandra. Vilka två relationer som helst kan konverteras till en kompatibel form genom att ta en direkt produkt genom att använda namnet på en av dessa relationer.

Hämtningsoperationen kräver två relationer: den initiala relationen är operand och ett enkelt villkor för begränsning. Som ett resultat av utförandet av urvalsoperationen skapas en relation vars rubrik matchar titeln på operandrelationen, och de tupplar i operandrelationen som uppfyller värdena på begränsningstillståndet kommer in i kroppen.

Vi introducerar ett antal operatörer.

Låt förening mena föreningsoperationen, korsa korsningsoperationen minus subtraktionsoperationen. För att beteckna urvalsoperationen använder vi konstruktionen A där B, där A är operandrelationen, och B är ett enkelt jämförelsevillkor. Låt C1 och C2 vara två enkla provtagningsvillkor

A där C1 OCH C2 är identisk (A där C1) korsar varandra (A där C2)

A där C1 ELLER C2 identisk med (A där C1) förening (A där C2)

A där C1 inte C2 identisk med (A där C1) minus (A där C2)

Med hjälp av dessa definitioner kan man implementera samplingsoperationer där ett samplingsvillkor är ett godtyckligt logiskt uttryck sammansatt av enkla förhållanden med logiska förhållanden (och, eller, inte). Funktionen för att ta projektioner är relationen A op till listan över attribut a1, a2, ..., an är det förhållande vars rubrik är attributuppsättningen, a1, a2, ..., an. Resultatet består av tupplar för vilka det i förhållande till A finns en tupel, attribut a1 har värde b1, attribut a2 har värde b2< и так далее атрибут an – bn. По сути при выполнении операции проекции определяется «Вертикальная» вырезка отношения - операнда с удалением возникающих кортежей –дубликатов.

En anslutningsoperation, ibland kallad villkorlig anslutning, kräver två operander - relationerna ska förenas - och den tredje operanden är ett enkelt villkor. Låt relationen A och B. Liksom när det gäller samplingsoperationen har villkoret för att gå med C formen, (en komp –op b) eller (en comp –op const) där A och B är namnen på attributen för relationerna A och B, bokstavligen definierade konstant. Comp-op är en giltig jämförelseoperation i detta sammanhang. Sedan, per definition, är resultatet av sammanfogningsoperationen det förhållande som erhålls genom att utföra begränsningsoperationen, enligt villkor C för den direkta produkten av relationen A och B.

Det finns ett viktigt speciellt fall av konjunktion, naturlig konjunktion. En kopplingsoperation kallas en naturlig kopplingsoperation om kopplingsvillkoret har formen (a \u003d b) där a och in i attributen för olika kopplingsoperander. Detta fall är viktigt eftersom det är särskilt vanligt i praktiken och det finns effektiva implementeringsalgoritmer för det i DBMS. Den naturliga kopplingsoperationen tillämpas på ett par relationer A och B, som har ett gemensamt attribut P, \u200b\u200bdet vill säga ett attribut med samma namn och definieras på samma domän. Låt AB beteckna sammanslutningen av rubrikerna för relationerna A och B. Sedan är det naturliga sammanfogningen resultatet av att gå samman med A och B. Projektet till AB. Verksamheten med det naturliga sammanfogningen ingår inte direkt i uppsättningen operationer för relationell algebra, men det har mycket viktigt praktiskt värde.

Funktionen för att dela relationer behöver en mer detaljerad förklaring eftersom den är svår att förstå. Låt två relationer A ges (a1, a2, .., an, b1, b2, ..., bm)

B (b1, b2, ..., bn) Vi antar att attribut b1 för relation A och attribut b1 för relation B är definierade på samma domän. Vi kallar uppsättningen attribut (aj) det sammansatta attributet a, uppsättningen (bj) det sammansatta attributet b. Efter det kommer vi att prata om den relationella uppdelningen av den binära relationen A (a, b) av den unära relationen B (b).

Resultatet av att dela A med B är en unär relation C (a) bestående av tuplar v så att det finns tupler med avseende på A   som i uppsättningen av värden (w) inkluderar uppsättningen av värden för b med avseende på B.

Eftersom uppdelning är den svåraste operationen, låt oss illustrera det med ett exempel. Låt det finnas två relationer i studenternas databas: STUDENTS (fullt namn, NUMMER) och NAMES (fullständigt namn), och den unary relationen NAMES innehåller alla namn som institutets studenter har. Sedan, efter att ha utfört operationen med relationella uppdelning av STUDENTS-relationer i relationer mellan NAMER, kommer en unary relation att erhållas som innehåller studentkortnummer som tillhör studenter med alla möjliga namn vid detta institut.


Relationell notation

Anta att det finns en databas med strukturen för STUDENTER (antal, namn, stipendium, gruppkod) och förhållandet mellan GRUPPEN (gr_nom, gr_kol, gr old) Antag att du behöver ta reda på namnen och numren på eleverna. biljetter till studenter som är äldste i grupper med mer än 25 personer. I relationell algebra måste du vidta följande åtgärder för en sådan begäran:

1. Anslut relationerna mellan studenter och grupper, under villkoret "student_nummer \u003d gr_star";

2. Begränsa det resulterande förhållandet under villkoret gr_kol\u003e 25.

3. Projicera resultatet av den tidigare operationen på attributet stud_name, stud_number.

Här formuleras sekvensen för frågetillverkning i databasen steg för steg, var och en motsvarar en relationell operation. om vi formulerar samma fråga med relationskalkyl, skulle vi få en formel som kan läsas: Utgåva STUD_NAME och STUD_NUMBER för sådana studenter så att en sådan grupp GR_STAR och värde GR_COL\u003e 25 samexisterar. I den andra formuleringen angav vi bara egenskaperna hos det resulterande förhållandet men sa inte något om metoden för dess bildning. I det här fallet måste DBMS själv bestämma vilken typ av operationer och i vilken ordning det är nödvändigt att utföra relationerna mellan STUDENTER och GRUPPER. Båda metoderna som beskrivs i exemplet är faktiskt ekvivalenta och det finns inte särskilt komplexa omvandlingar från det ena till det andra.

De grundläggande begreppen för relationell notation är begreppen för en variabel med ett visst område av dess värde och begreppen för en korrekt konstruerad formel baserad på variabler och specialerbjudanden. Funktion. Vad som är definieringsdomänen för en variabel är beräkningen av tuple och kalkylen för domäner, det vill säga längs eller över. I beräkningen av tuples är definieringsområdena för variabler relationen mellan databaser, det vill säga att det tillåtna värdet för varje variabel är tupeln för någon relation. I domänberäkningen är domänerna för variabel definition de domäner på vilka attributen för databasrelationerna definieras, det vill säga det giltiga värdet för varje variabel är värdet på varje variabel.

  byte   Integer   String   Char
  M
  N
  K

Använd RANGE-kommandot för att bestämma tupplarna. För att till exempel definiera STUDENT-variabeln, vars definitionsdomän är STUDENTER, måste du använda RANGE STUDENT IS STUDENTS-konstruktionen. Från denna definition följer det att studentvariabelen när som helst representerar någon tupel av STUDENT-förhållandet. När du använder tupelvariabler i formler kan du hänvisa till attributvärdena för variabler. Till exempel, för att hänvisa till värdet på STUD_NAME-attributet för STUDENT-variabeln, måste du använda STUDENT.STUD_NAME-konstruktionen.

Korrekt konstruerade formler tjänar till att uttrycka villkoren för tupelvariabler. Sådana formler är baserade på enkla jämförelser, som är operationer för att jämföra värdena på attributvariabler och bokstavligen givna konstanter. Till exempel konstruktionen STUDENT.STUD_NOM \u003d 123456. Det är en enkel jämförelse. En mer komplex version av sammansatta formler använder de logiska förhållandena OCH, ELLER, INTE, OM ... DET. Slutligen är det tillåtet att konstruera korrekt konstruerade formler med hjälp av kvantifierare. Om F är en korrekt konstruerad formel där var är involverad, är EXIST (existenskvantifieraren) var (F) och FORALL (för alla tuples) var (F) konstruktioner korrekta.

Variabler som ingår i korrekt konstruerade formler kan vara fria eller bundna. Alla variabler som ingår i deras sammansättning under konstruktionen av vilka kvantifierare inte användes är gratis. Detta innebär att om värdet "sant" för någon uppsättning värden för fria tupelfariabler erhålls vid beräkningen av formlerna, kan dessa värden inkluderas i den resulterande relationen. Om emellertid en kvantifierare används i konstruktionen av formler, är variablerna relaterade. Vid beräkning av värdet på en sådan korrekt konstruerad formel används inte ett enda värde på den tillhörande variabeln utan hela dess definitionsdomän.

1) EXISTS STUD2 (STUD.1STUD_STIP\u003e STUD2.STUD_STIP)

2) FORALL STUD2 (STUD.1STUD_STIP\u003e STUD2.STUD_STIP)

Låt STUD1 och STUD2 vara två tupelvariabler definierade av studenter, då är formeln för den aktuella tupeln för STUD1-variabeln bara sant om studenterna i alla avseenden har en sådan tupel associerad med STUD2-variabeln att värdet för dess STUD_STIP-attribut uppfyller det interna jämförelsevillkoret. Korrekt konstruerad formel nr. 2 för den konstruerade STUD 1-tupeln tar värdet sant om, för alla tuple, förhållandet STUDENTER associerade med STUD 2-variabeln, värdet på attributet STUD.STIP uppfyller det interna tillståndet.

På detta sätt ger korrekt konstruerade formler ett sätt att uttrycka ett urvalsvillkor från en databasrelation. För att kunna använda relationskalkylen för verkligt arbete med databasen krävs ytterligare en komponent som bestämmer uppsättningen och kolumnnamnen för den resulterande relationen. Denna komponent kallas mållista.

Mållistahar formen:

· Var.attr - namn på en fri variabel, atr är namnet på attributet för den relation som var variabeln definieras på.

· Var som motsvarar relationen från listan, Var.attr1, Var.attr1 ... Var.attr nummer innehåller namnen på alla attribut för den definierande relationen.

Nytt namn \u003d var.attr; Det nya namnet på motsvarande attribut för det resulterande förhållandet.

Det senare alternativet krävs i fall av kod i formeln som använder flera gratisvariabler med samma omfattning. När det gäller domäner är domänen inte domän, utan domäner. I relation till DB-studenterna för gruppen kan vi prata om domänvariabler NAMN (Domänvärden är giltiga namn eller STUDNOM). (Domänvärden är giltiga studentnummer).

Den största skillnaden mellan domänberäkning och tupelberäkning är närvaron av en ytterligare uppsättning predikat som gör det möjligt att uttrycka de så kallade medlemsvillkoren. Om R är en n-ary-relation med attribut (a1, a2, ... an) så har medlemsvillkoret formen R (ai1: Vi1, ai2: Vi2, ... syfte: Vim) där (m<=n). Где в Vij это либо литерально заданная константа либо имя кортежной переменной. Условие членства принимает значение истина, только в том случае если в отношении R существует кортеж, содержащий следующие значения указанных атрибутов. Если от Vij константа то на атрибут aij накладывается жёсткое условие независящее от текущих доменных переменных. Если же Vij имя доменной переменной то условие членства может принимать различные значения при разных значениях этой переменной.

Ett predikat är en logisk funktion som returnerar sann eller falsk för vissa argument. En relation kan betraktas som ett predikat med argument som är attribut för relationen i fråga. Om en given specifik uppsättning tuples finns i en relation, kommer predikatet att producera ett riktigt resultat, annars ett falskt resultat.

I alla andra avseenden ser formler och uttryck domänberäkning ut som tupelformel och uttryck. Relationell numrering av domäner är grunden för de flesta språkfrågor baserade på användning av formulär.


Liknande information.


Relationsdatabas  - Detta är en databas baserad på en relationell datamodell (RMD).

I hjärtat av RMD ligger begreppet relation, eller relation (relation - relation, engelska, därav termen relationella databaser). För att arbeta med relationsdatabaser används relationella DBMS: er. Användningen av relationsdatabaser föreslogs av Dr. Codd från IBM 1970. Dessa modeller kännetecknas av enkelheten i datastrukturen, användarvänlig tabellpresentation och förmågan att använda den formella apparaten för relationalgebra och relationskalkyl för databehandling.

I RMBD är den huvudsakliga strukturella enheten tabell (relation).Den relationella modellen är fokuserad på organisering av data i form av tvådimensionell tabulering. Varje relationstabell är en tvådimensionell matris och har följande egenskaper:

Varje tabellelement är ett dataelement;

Alla kolumner i tabellen är homogena, dvs. alla element i kolumnen är av samma typ (siffror, tecken etc.) och längd;

Varje kolumn har ett unikt namn;

Det finns inga identiska rader i tabellen;

Ordningen på rader och kolumner kan vara godtycklig.

Relationer presenteras i form av tabeller vars rader motsvarar registeroch kolumnerna är attribut  relationer, domäner, fält. Varje rad lagrar data om ett objekt och varje fält karakteriserar en av parametrarna för objektet. Varje tabell måste ha ett unikt databasnamn.

Ett fält, vars värde unikt bestämmer motsvarande post, kallas en enkel nyckel (nyckelfält). Om poster bestäms unikt av värdena i flera fält, har en sådan databastabell en sammansatt nyckel. Om det inte finns något sådant fält, måste det matas in artificiellt. För att ansluta två relationstabeller måste du ange nyckeln till det första bordet i nyckeln till det andra bordet (tangenterna kan sammanfalla); annars måste du ange den främmande nyckeln i strukturen för den första tabellen - nyckeln till det andra bordet.

32 grundläggande databasmodeller

DB  - en strukturerad uppsättning information relaterad till ett ämnesområde eller flera relaterade områden. Alla befintliga databaser kan byggas på olika principer som kännetecknas av begreppet databasmodell.

DB-modell  bestämmer metoden för kommunikation mellan objekt i databasen, metoden för lagring av information på ett medium (i datorminne), metoden för extraktion och presentation av data. DB-modeller:  1) hierarkiskt, 2) nätverk, 3) relationellt.

1) Hierarkisk (prim. våning. 60-talet) var avsett att lagra databasen på papper och magnetband. Kommunikationsstruktur  mellan uppgifterna är baserad på teorin om Graf och visas i form av ett träd (inverterat). December objekt skapar trädnoder, d.v.s. är på nedbrytning. hierarkinivåer. kommunikationbeskrivs i kategorier far-son eller förfäder-ättling. Varje nod i i-th-nivån i hierarkin hänvisar till en nod på i-1-nivån (i\u003e 1), eftersom en son hänför sig till en far, eller en far till en son, nämligen en son kan vara en far, och en far - en eller flera söner, d.v.s. . ett objekt med denna i-th-nivå avser objekt i i + 1-nivå, som 1 till många (1: N, 1: ∞). brister: 1) användaren måste känna till trädets struktur, annars är datasökningen svår; 2) sökning krävs. data startar alltid från roten och sedan fortsätter navigeringen genom trädgrenarna.



2) Nätverk(andra hälften av 60-talet) för att minska påverkan av bristerna i den tidigare modellen. DOS. skillnaden  från hierarkisk.: Det kan finnas en koppling mellan objekt som finns både på samma hierarkinivå och på olika objekt. Detta har lett till en ökad datasökningshastighet. Men det finns brist: användaren måste känna strukturen för ett sådant träd.

primär brist på två modeller: mycket svag matematisk bas.

3) Relationelltbaserat på den utvecklade apparaten i två matematikavsnitt: teorin om relationer (uppsättningar) och teorin för predikat. Uppsättningsteori förknippas med formaliseringen av procedurer för analys av logiska förhållanden. I den finns en tvådimensionell uppsättning, som kallas relation (relation). I den här modellen huvudbyggnadsenhet är en tabell (relation). Varje tabell bör ha ett unikt namn för denna databas på ryska eller med lat. bokstäver.

En relationell datorbas, som alla andra baser, är en IC schematiskt representerad:

DBMS  (databashanteringssystem) - ett specialiserat mjukvaruverktyg (skal) eller plattform som användaren implementerar alla tillhandahållna funktioner (operationer) på data. Funktioner: inmatning (infoga), modifiering (ändring), extraktion (val), radering av data.

I ISDB finns en viktig komponent - databasadministratören, som är ansvarig för säkerheten och värdet av data, fastställer dec. användarrättigheter, etc.

Varje tabell består av fält och rader. Varje rad  lagrar data om ett objekt och varje fält  en av deras parametrar (attribut) för detta objekt är karakteristisk. I ett separat fält m. data av endast en typ. Ett av attributen eller fälten måste identifiera  varje objekt i tabellen. Detta innebär att det inte bör finnas duplicerade värden i det här fältet (varje värde är unikt). Om detta villkor är uppfylld, fältet kallas nyckel  (tabelldatatangent). Varje tabell måste ha ett nyckelfält. Den här nyckeln kallas den viktigaste. Om en nyckel består av mer än ett fält kallas den sammansatt. En enkel nyckel föredras. Om det inte är det, introduceras det artificiellt (till exempel ett nummer).

Relationsdatabas - grundläggande begrepp

Ofta, när de pratar om en databas, betyder de helt enkelt ett automatiserat datavarehus. Den här uppfattningen är inte helt korrekt. Varför detta är så kommer att visas nedan.

I den smala betydelsen av ordet är faktiskt en databas en viss uppsättning data som är nödvändiga för arbete (faktiska data). Men data är en abstraktion; ingen har någonsin sett "bara data"; de uppstår inte och existerar inte på egen hand. Data är en återspegling av verkliga objekt. Anta att du till exempel vill lagra information om de delar som mottas i lagret. Hur kommer ett objekt från den verkliga världen - en del - att visas i databasen? För att besvara den här frågan måste du veta vilka funktioner eller sidor av delen som är relevanta, nödvändiga för jobbet. Bland dem kan vara namnet på delen, dess vikt, dimensioner, färg, tillverkningsdatum, materialet från vilket det är tillverkat etc. I traditionell terminologi kallas föremål för den verkliga världen, information om som lagras i databasen, enheter - enheter (låt detta ord inte skrämma läsaren - detta är en allmänt accepterad term), och deras faktiska tecken kallas attribut.

Varje tecken på ett visst objekt är ett attributvärde. Så, delen "motor" har värdet på attributet "vikt" lika med "50", vilket återspeglar det faktum att denna motor väger 50 kg.

Det skulle vara ett misstag att anta att endast fysiska objekt återspeglas i databasen. Den kan införa information om abstraktioner, processer, fenomen - det vill säga om allt som en person möter i sin verksamhet. Så till exempel i databasen kan du lagra information om beställningar för leverans av delar till lagret (även om det inte är ett fysiskt objekt utan en process). Enhetens "beställnings" attribut är namnet på den levererade delen, antal delar, leverantörens namn, leveranstid etc.

Objekten i den verkliga världen är förbundna med varandra av många komplexa beroenden som måste beaktas i informationsaktiviteter. Till exempel levereras delar till lagret av sina tillverkare. Därför måste attributet "tillverkarens namn" inkluderas i antalet attribut för delen. Detta räcker emellertid inte, eftersom ytterligare information om tillverkaren av en viss del kan behövas - dess adress, telefonnummer etc. Detta innebär att databasen inte bara ska innehålla information om delar och inköpsorder, utan också information om deras tillverkare. Dessutom bör databasen återspegla förhållandet mellan delar och tillverkare (varje del produceras av en specifik tillverkare) och mellan beställningar och delar (varje beställning placeras på en specifik del). Observera att endast relevanta, meningsfulla relationer behöver lagras i databasen.

I den breda meningen av ordet är således en databas en samling beskrivningar av objekt i den verkliga världen och förhållandena mellan dem som är relevanta för en viss applikation. I framtiden kommer vi att gå från denna definition och klargöra den under presentationen.

Relationsdatamodell

Så vi fick en uppfattning om vad som lagras i databasen. Nu måste du förstå hur enheter, attribut och relationer kartläggs på datastrukturer. Detta bestäms av datamodellen.

Traditionellt klassificeras alla DBMS enligt den datamodell som ligger till grund för dem. Det är vanligt att skilja hierarkiska, nätverks- och relationella datamodeller. Ibland lägger de till en datamodell baserad på inverterade listor. Därför pratar de om hierarkiska, nätverks-, relationella DBMS: er eller DBMS baserade på inverterade listor.

När det gäller utbredning och popularitet är relationella DBMS idag utebliven av konkurrens. De har blivit de facto industristandarden, och därför kommer den inhemska användaren att möta i sin praxis just det relationella DBMS. Betrakta kort den relationella datamodellen utan att gå in på dess detaljer.

Det utvecklades av Codd 1969-70 på grundval av den matematiska teorin om relationer och bygger på ett system med begrepp, varav de viktigaste är en tabell, relation, rad, kolumn, primär nyckel, främmande nyckel.

En databas betraktas som relation där alla data presenteras för användaren i form av rektangulära tabeller med datavärden, och alla operationer i databasen reduceras till tabellmanipulationer. Tabellen består av rader och kolumner och har ett namn som är unikt i databasen. Tabellen återspeglar typen av den verkliga världsobjektet (enhet), och varje rad i det är ett specifikt objekt. Så, delstabellen innehåller information om alla delar lagrade i lagret, och dess rader är uppsättningar attributvärden för specifika delar. Varje kolumn i tabellen är en uppsättning värden för ett specifikt attribut för ett objekt. Så kolumnen Material är en uppsättning värden för stål, tenn, zink, nickel, etc. Kolumnen Antal innehåller icke-negativa heltal. Värdena i kolumnen Vikt är verkliga siffror lika med vikten för delen i kilogram.

Dessa värden visas inte från luften. De väljs från uppsättningen med alla möjliga värden för ett attribut för ett objekt, som kallas en domän. Så, värdena i materialkolumnen väljs från uppsättningen med namn på alla möjliga material - plast, trä, metaller, etc. Därför är det i materialkolumnen i grunden omöjligt att ett värde visas som inte finns i motsvarande domän, till exempel "vatten" eller "sand".

Varje kolumn har ett namn, som vanligtvis skrivs högst upp i tabellen ( Fig. 1). Det måste vara unikt i tabellen, men olika tabeller kan ha kolumner med samma namn. Varje tabell måste ha minst en kolumn; kolumnerna finns i tabellen i enlighet med deras namnordning när du skapar den. Till skillnad från kolumner har rader inga namn; deras ordning i tabellen är inte definierad och antalet är logiskt obegränsat.

Figur 1. Grundläggande begrepp i databasen.

Eftersom raderna i tabellen inte är ordnade är det omöjligt att välja en rad efter sin position - bland dem finns det ingen "första", "andra", "sista". Varje tabell har en eller flera kolumner, värdena som identifierar varje rad unikt. En sådan kolumn (eller kombination av kolumner) kallas en primär nyckel. I Part-tabellen är den primära nyckeln kolumnen Part Number. I vårt exempel har varje del i lagret ett unikt nummer med vilken nödvändig information extraheras från delstabellen. I den här tabellen är därför den primära nyckeln kolumnen Partnummer. Värden kan inte dupliceras i den här kolumnen - det bör inte finnas rader i delstabellen som har samma värde i kolumnen Delnummer. Om en tabell uppfyller detta krav kallas det en relation.

Tabellrelationer är ett väsentligt element i en relationell datamodell. Det stöds av utländska nycklar. Tänk på ett exempel där en databas lagrar information om vanliga anställda (medarbetartabell) och chefer (chefstabell) i någon organisation ( Fig. 2). Den primära nyckeln i Manager-tabellen är kolumnen Nummer (till exempel personalnummer). Kolumnen Efternamn kan inte fungera som en primär nyckel, eftersom två chefer med samma efternamn kan arbeta i en organisation. Varje anställd är underordnad en enda chef, vilket bör återspeglas i databasen. Medarbetartabellen innehåller kolumnen Huvudnummer, och värdena i denna kolumn väljs från kolumnen Huvudnummer i huvudtabellen (se Fig. 2). Kolumnen Handledningsnummer är den utländska nyckeln i medarbetartabellen.

Bild 2. Förhållande mellan databastabeller.

Tabeller kan inte lagras och bearbetas om det inte finns några "data om data" i databasen, till exempel beskrivningar för tabeller, kolumner etc. De kallas vanligtvis metadata. Metadata presenteras också i tabellform och lagras i en datorordbok.

Förutom tabeller kan andra objekt lagras i databasen, till exempel skärmformer, rapporter, vyer och till och med applikationer som fungerar med databasen.

För användare av informationssystemet räcker det inte att databasen helt enkelt återspeglar verkliga objekt. Det är viktigt att en sådan reflektion är entydig och konsekvent. I detta fall sägs det att databasen uppfyller integritetsvillkoret.

För att garantera datorns korrekthet och ömsesidiga konsekvenser införs vissa begränsningar för databasen, som kallas begränsningar för dataintegritet.

Det finns flera typer av integritetsbegränsningar. Det krävs exempelvis att värdena i en tabellkolumn endast väljs från motsvarande domän. I praktiken beaktas också mer komplexa integritetsbegränsningar, till exempel referensintegritet. Kärnan är att en utländsk nyckel inte kan vara en pekare till en obefintlig rad i en tabell. Integritetsbegränsningar implementeras med hjälp av specialverktyg som kommer att diskuteras i Sec.Databasserver .

SQL-språk

I sig själva är data i datorform inte av intresse för användaren om det inte finns några sätt att komma åt dem. Åtkomst till data görs i form av frågor till databasen, som är formulerade på standardspråket. Idag, för de flesta DBMS, är detta språk SQL.

Framväxten och utvecklingen av detta språk som ett sätt att beskriva tillgången till databasen är förknippat med skapandet av teorin om relationella databaser. Prototypen på SQL-språket uppstod 1970 som en del av forskningsprojektet System / R, som genomfördes i IBM Santa Teresa-labbet. Idag är SQL ett standardgränssnitt med relationella DBMS. Dess popularitet är så stor att utvecklare av icke-relationella DBMS: er (till exempel Adabas) förser sina system med ett SQL-gränssnitt.

SQL-språket har en officiell standard - ANSI / ISO. De flesta DBMS-utvecklare följer denna standard, men utökar ofta den för att implementera nya databehandlingsfunktioner. Nya datahanteringsmekanismer som ska beskrivas i Sec.Databasserver , kan endast användas genom speciella SQL-satser, som vanligtvis inte ingår i språkstandarden.

SQL är inte ett traditionellt programmeringsspråk. Inga program skrivs på det utan databasfrågor. Därför är SQL ett deklarativt språk. Det betyder att det med sin hjälp är möjligt att formulera vad som måste erhållas, men det är omöjligt att ange hur detta ska göras. I synnerhet, till skillnad från processuella programmeringsspråk (C, Pascal, Ada), på SQL-språket finns det inga operatörer som om-då-annars, för, medan osv.

Vi kommer inte att granska språkets syntax i detalj. Vi berör det bara i den utsträckning som krävs för att förstå enkla exempel. Med deras hjälp kommer de mest intressanta databehandlingsmekanismerna att illustreras.

En SQL-fråga består av en eller flera uttalanden, en efter den andra, åtskilda av en semikolon. Tabell 1 nedan visar de viktigaste uttalandena som ingår i ANSI / ISO SQL-standarden.

Tabell 1. Grundläggande SQL-satser.

SQL-frågor använder namn som identifierar databasobjekt på ett unikt sätt. Speciellt är det namnet på tabellen (detalj), namnet på kolumnen (Namn) samt namnen på andra objekt i databasen som är av ytterligare typer (till exempel namnen på procedurer och regler), som kommer att diskuteras i Sec.Databasserver . Tillsammans med enkla, komplexa namn används också - till exempel bestämmer det kvalificerade kolumnnamnet (kvalificerat kolumnnamn) kolumnens namn och namnet på tabellen som den tillhör (Detail.Weight). För enkelhetens skull kommer exemplen att skrivas på ryska, även om det i praktiken inte rekommenderas.

Varje kolumn i vilken tabell som helst lagrar data av vissa typer. Skill mellan grundläggande datatyper - teckensträngar med fast längd, heltal och verkliga siffror och ytterligare datatyper - teckensträngar med variabel längd, monetära enheter, datum och tid, logiska data (två värden - "SANT" och "FALSE"). På SQL-språket kan du använda numeriska, sträng, teckenkonstanter och konstanter som datum och tid.

Låt oss titta på några exempel.

Frågan "bestämma antalet delar i lager för alla typer av delar" implementeras enligt följande:

VÄLJ Namn, kvantitet

FRÅN Detalj;

Frågoresultatet kommer att vara en tabell med två kolumner - Namn och kvantitet, som tas från den ursprungliga delstabellen. I själva verket låter denna fråga dig få en vertikal projicering av det ursprungliga bordet (snarare en vertikal delmängd av de många raderna i bordet). Från alla raderna i delstabellen bildas rader som innehåller värden som tas från två kolumner - Namn och kvantitet.

Frågan "vilka delar av stål som lagras på lagret?", Formulerad i SQL, ser ut så här:

FRÅN Detaljer

VAR Material \u003d "stål";

Resultatet av den här frågan blir också en tabell som endast innehåller de raderna i det ursprungliga bordet som har värdet Stål i kolumnen Material. Den här frågan låter dig få en horisontell projicering av delstabellen (en asterisk i SELECT-satsen betyder att du väljer alla kolumner från tabellen).

Begäran "att bestämma namnet och antalet delar i lagret som är tillverkade av plast och väger mindre än fem kilo" kommer att skrivas enligt följande:

VÄLJ Namn, kvantitet

FRÅN Detaljer

VAR Material \u003d "Plast"

OCH vikt< 5;

Frågoresultatet är en tabell med två kolumner - Namn, Kvantitet, som innehåller namn och antal delar tillverkade av plast och som väger mindre än 5 kg. Faktum är att valoperationen är operationen för att först skapa en horisontell projektion (hitta alla rader i delstabellen för vilken Material \u003d "Plast" och vikt< 5), а затем вертикальной проекции (извлечь Название и Количество из выбранных ранее строк).

Ett av verktygen som ger snabb åtkomst till tabeller är index. Ett index är en databasstruktur som är en pekare till en specifik rad i en tabell. Databasindexet används på samma sätt som indexet i en bok. Det innehåller värden tagna från en eller flera kolumner i en viss rad i tabellen och en länk till den raden. Värdena i indexet ordnas, vilket gör att DBMS kan utföra en snabb sökning i tabellen.

Låt oss säga att en förfrågan till lagerdatabasen är formulerad:

VÄLJ Namn Kvantitet, material

FRÅN Detaljer

WHERE Number \u003d "T145-A8";

Om det inte finns några index för den här tabellen måste DBMS titta på hela detaljtabellen för att utföra den här frågan, i följd välja rader från den och kontrollera valvillkoren för var och en av dem. För stora bord kommer en sådan fråga att ta mycket lång tid.

Om indexet skapades tidigare i kolumnen Nummer på tabelldelen, kommer söktiden i tabellen att reduceras till ett minimum. Indexet kommer att innehålla värden från kolumnen Nummer och en länk till en rad med detta värde i tabellen Detalj. När du kör frågan hittar DBMS först värdet "T145-A8" i indexet (och gör det snabbt, eftersom indexet är beställt och dess rader är små), och bestämmer sedan den fysiska platsen för önskad rad genom referens i indexet.

Ett index skapas av SQL CREATE INDEX-uttalandet. I det här exemplet, operatören

SKAPA UNIK INDEX Delindex

PÅ detalj (nummer);

låter dig skapa ett index som heter "Delindex" i kolumnen Nummer på tabelldelen.

För en DBMS-användare är det inte de enskilda SQL-uttalandena som är av intresse, utan någon sekvens av dem, utformade som en helhet och meningsfullt ur hans synvinkel. Varje sådan sekvens av SQL-satser implementerar en specifik åtgärd i databasen. Det utförs i flera steg, varvid vissa operationer utförs i databastabellerna. Så i banksystemet utförs överföringen av ett visst belopp från ett kortfristigt konto till ett långtidskonto i flera operationer. Bland dem - ta ut beloppet från ett kortfristigt konto, kreditera till ett långtidskonto.

Om ett fel inträffar under genomförandet av denna åtgärd, till exempel när den första operationen är klar och den andra inte, kommer pengarna att gå förlorade. Därför måste alla åtgärder i databasen utföras i sin helhet eller inte alls utföras. Denna åtgärd kallas en transaktion.

Transaktionsbehandling förlitar sig på journalen, som används för att återföra transaktioner och återställa databasens tillstånd. Mer information om transaktioner kommer att diskuteras i Sec.Transaktionsbehandling .

När vi avslutar diskussionen om SQL-språket betonar vi återigen att detta är ett frågespråk. Du kan inte skriva på det något komplicerat applikationsprogram som fungerar med en databas. För detta ändamål använder moderna DBMS fjärde generationens språk (Forth Generation Language - 4GL), som har både huvudfunktionerna för tredje generationens procedurspråk (3GL), som C, Pascal, Ada och förmågan att bädda in SQL-uttalanden i programtexten, såväl som användargränssnittskontroller (menyer, formulär, användarinmatning etc.). Idag är 4GL en av de faktiska standarderna för databasutvecklingsverktyg.







      2020 gtavrl.ru.