Verschillen T-SQL en de relationele theorie header image

Verschillen T-SQL en de relationele theorie

zaterdag 23 februari 2019 ·Leestijd: 2 minuten
contacteer auteur:

In de vorige blog is besproken wat de relationele theorie is en zijn enkele implicaties van het model uitgelegd. Waarom is T-SQL dan een benadering van het relationele model? Hieronder volgt een opsomming van enkele punten waarop T-SQL afwijkt van het relationele model.

Dubbele waarden


Een van de indicaties uit de relationele theorie is dat de set unieke objecten bevat, dus dat er geen dubbele waarden in een set bestaan. T-SQL dwingt dit zelf niet af, er kunnen dubbele waarden in een tabel staan en worden teruggegeven in een query. Stel dat je een datatabel hebt met daarin gebruikers van je applicatie. De gebruikers moeten hun woonplaats aangeven. Dan kan het makkelijk voorkomen dat er meerdere mensen in Amsterdam wonen. Als je in T-SQL alle steden uitvraagt van de gebruikerstabel, dan komt Amsterdam meerdere malen voor in de resultaten. Dit gaat tegen het relationele model in. Hier heeft T-SQL wel een oplossing voor, namelijk het gebruik van DISTINCT. DISTINCT geeft de unieke, verschillende steden terug en dus geen dubbele waarden.

 

Geen heading


Daarnaast is het ook mogelijk om binnen T-SQL data op te vragen zonder een kolomnaam op te geven:

SELECT voornaam + ‘ ‘ + achternaam
FROM dbo.gebruikers

Hier krijg je in de resultaten een kolom te zien zonder unieke heading met daarin de voornaam en achternaam van alle gebruikers gescheiden door een spatie. Dit gaat in tegen het relationele model, waar het niet toegestaan is om een attribuut zonder unieke naam binnen de set op te nemen. Tegen dit issue loop je ook aan als je bijvoorbeeld in een simpele JOIN twee tabellen aanroept die beiden eenzelfde kolomnaam bevatten. Natuurlijk heeft T-SQL hier ook weer een oplossing voor, het AS keyword. Met dit keyword kun je kolommen maar ook tabellen een alias geven, waardoor de namen weer uniek zijn: 

SELECT voornaam + ‘ ‘ + achternaam AS volledige naam 
FROM dbo.gebruikers
 

Volgorde niet van belang


In het relationele model wordt impliciet aangegeven dat de volgorde van de set niet van belang is. Binnen T-SQL is het wel mogelijk om een set op een bepaalde volgorde op te vragen. De volgende query sorteert de resultaten op alfabetische volgorde:

SELECT voornaam, acternaam
FROM dbo.gebruikers
ORDER BY voornaam

De data die wordt weergegeven als resultaat van de query is geen relatie, aangezien de volgorde hier wordt gegarandeerd. Hier gaat T-SQL in tegen het relationele model. Een oplossing hiervoor is om geen gebruik te maken van ORDER BY.

Dit zijn enkele punten waarop T-SQL afwijkt van het relationele model. Alle hierboven genoemde afwijkingen zijn te voorkomen door het gebruik van bepaalde constructen (zoals het AS keyword) of door bepaalde constructen juist niet te gebruiken (zoals bij ORDER BY).


Andere blogartikelen

B2B E-commerce… Wakker worden!
Geschreven door
op dinsdag 28 juni 2022
Veel B2B-bedrijven in blijven hangen in; nauwelijks vindbare, verouderde B2B e-commerce websites met minimale conversiemogelijkheden en een betreurenswaardige gebruikerservaring. Zonde!
B2B Leadgeneratie: Alles wat je altijd al wilde weten!
Geschreven door
op maandag 27 juni 2022
B2B online leadgeneratie is het proces van het identificeren van de ideale klanten voor uw product of dienst, en hen vervolgens overhalen tot aankoop. Het is een essentiële activiteit voor B2B sales- en marketingteams.
Wat maakt een B2B webshop succesvol?
Geschreven door
op zondag 26 juni 2022
De opmars van de B2B webshop neemt toe. Regelmatig krijgen wij de vraag of er een groot verschil is tussen een consumentgerichte webshop en een puur B2B gedreven webshop. In deze blog leggen wij u uit hoe een B2B webshop succesvol kan zijn en worden.
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book â€º