sql >> Database >  >> RDS >> Database

Het relationele model

Het relationele model is het meest populaire logische datamodel en ligt aan de basis van SQL-databases.

Het Relationele Model is gebaseerd op twee eenvoudige concepten:

  • tafels
  • relaties

Het relationele model dateert uit 1969 en het werk van Edgar F. Codd, een Engelse computerwetenschapper. Hoewel we als computerprogrammeurs gewend zijn om met nieuwsgierigheid naar nieuwe glimmende dingen te kijken, is een technologie die 50 jaar lang centraal kan staan ​​in alles wat met computers te maken heeft, zeker het bestuderen waard.

Het feit dat het model op tabellen is gebaseerd, maakt het zeer intuïtief in het gebruik, omdat we gewend zijn tabellen te gebruiken om dingen te ordenen. Denk bijvoorbeeld aan een Excel-spreadsheet.

Met op SQL gebaseerde databases, zoals PostgreSQL, Oracle, MySQL, SQLite en MS SQL Server, en vele andere, kunnen de gegevens die worden geanalyseerd met behulp van het ER-model worden gemodelleerd met behulp van het relationele model en vrijwel onmiddellijk worden omgezet in een SQL-databaseformaat, dat kan worden beschouwd als een real-world implementatie van het relationele model, maar we zullen hier in andere berichten over praten.

In deze post wil ik het hebben over de theorie en de concepten waarop het relationele model is gebaseerd, niet uitgedrukt in wiskundige termen, maar wat het in de praktijk betekent.

Als je een student bent, zou je kunnen ontdekken dat wat ik hier schrijf niet is wat in je leerboek staat, maar misschien kun je het gemakkelijker lezen om de meer formele concepten die in je leermateriaal worden uitgedrukt, te begrijpen.

Tafels

In een relationeel model, een tabel is een verzameling items.

Het is georganiseerd in rijen en kolommen:

Naam Leeftijd
Flavio 36
Roger 7
Syd 6

Tuples

Elk item in de tabel wordt een tupel . genoemd . U kunt ook de termen record . gebruiken of rij .

Een tuple vertegenwoordigt een rij van de tabel, zoals deze:

Flavio 36

Kenmerken

Een attribuut is één enkel item in de tupel.

In dit voorbeeld:

Flavio 36

"Flavio" is een attribuut. 36 is een ander kenmerk.

Tuples zijn uniek

Elke tupel in de tabel is uniek.

In het relationele model kunnen we geen dubbele gegevens hebben, wat betekent dat elke rij in de tabel in ten minste één kenmerk anders moet zijn.

De relatiesleutel

Het ding dat ervoor zorgt dat een tuple uniek is, is de relatiesleutel .

De sleutel is een attribuut dat uniek moet identificeren een tupel.

Als de relatiesleutel een set attributen is, moet deze niet-redundant zijn . Dit betekent dat als we een van de attributen van de sleutel verwijderen, de sleutel zijn uniciteit niet kan garanderen.

Als er meer dan één sleutel kan worden bepaald, wordt een van die sleutels geïdentificeerd als de primaire sleutel .

Sleutelintegriteitsbeperking

De sleutelattributen van een tuple in de tabel mogen nooit null zijn , en mag nooit herhalen .

Gegeven een sleutel, moeten we in staat zijn om zonder dubbelzinnigheid naar een specifieke tupel/rij te verwijzen.

De domeinbeperkingen

Elk kenmerk heeft regels over welke waarde het kan hebben .

Als we besluiten om nummers op te slaan, kunnen we bijvoorbeeld geen strings opslaan. En we kunnen besluiten om geen strings op te slaan die langer zijn dan 10 karakters voor namen.

We kunnen dit ook type noemen .

De referentiële integriteitsbeperking

Als een tabel een verwijzing naar een secundaire tabel of andere tuples in dezelfde tabel bevat, moeten we ons houden aan regels die voorkomen dat de verwijzing breekt.

We moeten in het bijzonder voorkomen dat we de verwijzing breken door:

  • vermijd het verwijderen of bewerken van de primaire sleutel van het record waarnaar we verwijzen in de andere tabel.
  • vermijd het invoegen van een nieuw record met een niet-bestaande sleutel om naar te verwijzen in de andere tabel.
  • vermijd het wijzigen van de sleutel van het record waarnaar we verwijzen, zonder ervoor te zorgen dat de nieuwe sleutel in de andere tabel bestaat.

Een DBMS (Data Base Management System) zal maatregelen nemen om ons te helpen referentiële integriteit te implementeren.


  1. Begrijp de rol van data-architecten in datagovernance

  2. Een zeer beschikbare canvas LMS implementeren met een PostgreSQL-databasecluster

  3. Hoe krijg ik een lijst van alle tabellen in een database met TSQL?

  4. Kan SqlServerSpatial.dll niet laden