Kolomnamen wijzigen
We moeten ook omgaan met de kolomnamen. Anders herhalen we de namen naam en id, maar ze bevatten verschillende gegevens. Aan de andere kant is er de eerste id-kolom en de employee_id-kolom, die dezelfde gegevens bevatten.
Laten we een query schrijven, waar alleen de benodigde kolommen zijn, en ook de kolommen hernoemen met dezelfde namen:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM employee, task
WHERE emploee.id = task.emploee_id
En het resultaat van deze vraag:
taak_id | taak_desc | deadline | medewerker_id | werk_naam | emp_bezetting |
---|---|---|---|---|---|
1 | Los een bug op de frontend op | 01-06-2022 | 1 | Ivanov Ivan | Programmeur |
2 | Los een bug op de backend op | 2022-06-15 | 2 | Petrov Petr | Programmeur |
7 | Geniet van het leven | (NUL) | 4 | Rabinovich Moisha | Regisseur |
3 | Koop koffie | 01-07-2022 | 5 | Kirienko Anastasia | Officemanager |
4 | Koop koffie | 01-08-2022 | 5 | Kirienko Anastasia | Officemanager |
5 | Koop koffie | 01-09-2022 | 5 | Kirienko Anastasia | Officemanager |
8 | Geniet van het leven | (NUL) | 6 | Vaska | kat |
Geweldig, het probleem met onbegrijpelijke kolomnamen is succesvol opgelost. De query is een beetje lang geworden, maar alles is duidelijk in de resulterende tabel. En geen extra kolommen.
Tabel aliassen
Soms zijn tabelnamen te lang en nemen ze veel ruimte in beslag in de query. Daarom boden de makers van SQL, om de leesbaarheid te verbeteren, zoals in het geval van kolommen, de mogelijkheid om tabelaliassen op te geven.
De algemene vorm van aliassen (tabelaliassen) is als volgt:
FROM table1 alias1, table2 alias2
Laten we onze vorige query herschrijven met korte aliassen:
SELECT
t.id AS task_id,
t.name AS task_desc,
t.deadline AS deadline,
e.id AS emploee_id,
e.name AS emp_name,
e.occupation AS emp_occupation
FROM employee e, task t
WHERE e.id = t.emploee_id
De leesbaarheid is iets afgenomen, maar dit komt doordat de namen van de tabellen aanvankelijk eenvoudig en duidelijk waren. Het zou net zo goed zo kunnen zijn:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM
Microsoft_it_department_employee employee,
Year2022_priority_task task
WHERE emploee.id = task.emploee_id
En in dit geval zijn aliassen al handig, toch? ;)
hoofdsleutel
En nog een belangrijke informatie over tabellen. Weet je nog dat we een kolom employee_id in de taaktabel hadden? Hiermee verwezen we naar de werknemer-ID uit de werknemerstabel.
Als we van de ene tabel naar de rijen van een andere tabel willen verwijzen, moet de tabel waarnaar wordt verwezen een kolom met een ID hebben, ook wel de primaire sleutel genoemd - PRIMARY KEY .
Meestal is dit een speciaal toegevoegde kolom waarvan het waardetype int is . Bij het toevoegen van records aan een tabel stelt SQL automatisch de waarde van deze kolom in.
Dan zijn er veel dingen gekoppeld aan deze sleutels:
- verschillende tabellen aan elkaar koppelen;
- snel zoeken en filteren op id;
- gegevensintegriteit in de database (geen verwijzingen naar niet-bestaande id);
- gegevens verwijderen waar niemand naar verwijst;
- en vele vele anderen.
Overigens zijn er situaties waarin een tabel een zogenaamde natuurlijke sleutel heeft . Dit is wanneer er een kolom is waarvan de inhoud uniciteit impliceert. We hebben bijvoorbeeld besloten om aan de werknemerstabel toe te voegen:
- De volgorde van aankomst in het bedrijf;
- Btw nummer;
- Nummer en serie van het paspoort.
Soms gebruiken databaseontwerpers een natuurlijke sleutel als primaire sleutel, maar meestal worden ze apart gebruikt. Records kunnen immers worden verwijderd, gewijzigd en dergelijke.
Ik neem aan dat je verhalen op internet leest als gerechtsdeurwaarders schulden van zijn volledige naamgenoot aan een persoon ophangen? Dit heeft alleen te maken met het concept van een unieke sleutel. Voor banken en gerechtsdeurwaarders is het erg handig om een persoon op volledige naam en geboortejaar te zoeken. En in 99% van de gevallen is dit voldoende om een persoon te identificeren.
Maar de overige <1% zijn volledige naamgenoten, met hetzelfde geboortejaar. In het leven van ieder van ons zijn er waarschijnlijk niet zulke mensen, maar op nationale schaal wel. Over het algemeen geldt dat als je software schrijft of een database ontwerpt, het handig is om te weten dat dit ook het geval kan zijn.
GO TO FULL VERSION