Database schema

Wil je in een databank vlot opzoekingen doen, dan heb je best een goed inzicht in de manier waarop de tabellen van de databank naar elkaar verwijzen. Hiervoor is het databankschema opgesteld. Aan jou om dit grondig te bekijken en de betekenis van de pijlen te achterhalen. Voor de duidelijkheid staat naast elke kolom ook het type ervan.

Database overzicht (gemaakt met PyCharm)

In de oefeningen kan je het database schema weergeven door op het database icoon te klikken die rechts bij elke oefening staat:

Database schema

In de eerste tabel (RUIMTEVAARDERS) is de NATIONALITEIT-kolom nu van het type INTEGER. Dit verwijst naar het ID in de tweede tabel (zie verder). Hieronder een uittreksel van de vernieuwde eerste tabel (RUIMTEVAARDERS).

ID VOORNAAM ACHTERNAAM Nationaliteit
1 Joseph Acaba 1
2 Viktor Glover 1
22 Yurchikhin Nikolayevich 7

Er staat bij de eerste twee ruimtevaarders het getal 1, omdat het twee amerikaanse ruimtevaarders zijn. De laatste ruimtevaarder heeft de Russische nationaliteit en dus het getal 7 (zie tweede tabel). Het getal in de laatste kolom verwijst naar de tweede tabel.

Er is een tweede tabel toegevoegd genaamd NATIONALITEITEN en heeft de kolommen: ID, ISO, UN en NATIONALITEIT. Het nieuwe database schema is zichtbaar door op het database icoon te klikken.

ID ISO UN Nationaliteit
1 US USA United States
7 RU RUS Russia
31 NL NLD Netherlands
32 BE BEL Belgium
39 IT ITA Italy

Als we geen twee aparte tabellen zouden gebruiken, zou de informatie over de nationaliteit meerder keren voorkomen in de tabel met ruimtevaarders. Als er ooit iets moet aagepast worden is dat vervelend om dat overal te moeten aanpassen. Daarom is het beter om te werken met meerdere tabellen met een link ertussen.

Onderstaande tabel is dus niet efficiënt omdat de informatie over de nationaliteit meerdere keren voorkomt.

ID VOORNAAM ACHTERNAAM Nationaliteit ISO UN Nationaliteit
1 Joseph Acaba 1 US USA United States
2 Viktor Glover 1 US USA United States
22 Yurchikhin Nikolayevich 7 RU RUS Russia

We kiezen er dus voor om te werken met twee aparte tabellen: RUIMTEVAARDERS en NATIONALITEITEN.

Hieronder zijn telkens de eerste vijf rijen van elke tabel weergegeven.

NATIONALITEITEN

ID ISO UN NATIONALITEIT
1 US USA United States
7 RU RUS Russia
31 NL NLD Netherlands
32 BE BEL Belgium
39 IT ITA Italy

RUIMTEVAARDERS

ID VOORNAAM ACHTERNAAM NATIONALITEIT
1 Joseph Acaba 1
2 Viktor Glover 1
3 Richard Arnold 1
4 Michael Hopkins 1
5 Vladimir Aksyonov 7

Tip om query’s op te stellen

Bepaal eerst welke kolommen uit welke tabellen je moet raadplegen (om uit te schrijven, of om een functie op los te laten, of om een voorwaarde te controleren). Stel dat je uit meerdere tabellen info nodig hebt. Dan kleur je (in gedachten) de pijlen die het verband tussen deze tabellen leggen (eventueel via bijkomende, tussenliggende tabellen). Voor elke pijl komt er een WHERE-gedeelte van de vorm WHERE TABEL_A.KOLOM_A = TABEL_B.KOLOM_B.