Overerving in PostgreSQL

PostgreSQL is een databasesysteem dat enkele object georiënteerde zaken in zich heeft, een van deze technieken is overerving. Het is mogelijk om tabellen aan te maken die eigenschappen (dus kolommen) overerven van een andere tabel. In het voorbeeld is dit ideaal toe te passen, we hebben gezien dat er 2 type klanten zijn, namelijk particulier en zakelijk. Hier komt dus een stukje specialisatie / generalisatie om de hoek kijken: Klant is de superklasse, Klantzakelijk is een specialisatie op de superklasse Klant.

In PostgreSQL dienen we dus een hoofdtabel ‘klant’ aan te maken welke alle gedeelde velden bevat, deze velden zijn voor ieder type klant aanwezig:

- ID
- Voornaam
- Tussenvoegsels
- Achternaam
- Adres
- Postcode
- Woonplaats
- Telefoonnummer
- Emailadres

Voor een zakelijke klant zouden er nog extra velden kunnen zijn welke voor een particuliere klant helemaal niet van toepassing zijn, zoals:

- KvK-nummer
- KvK-regio
- BTW-nummer

In SQL-code ziet dit er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE klant
(
  klant_id serial NOT NULL,
  voornaam varchar(100) NOT NULL,
  tussenvoegsels varchar(50),
  achternaam varchar(100) NOT NULL,
  adres varchar(100) NOT NULL,
  postcode varchar(7) NOT NULL,
  woonplaats varchar(100) NOT NULL,
  telefoonnummer varchar(15),
  emailadres varchar(100),
  CONSTRAINT klant_pkey PRIMARY KEY (klant_id)
)
WITH OIDS;

CREATE TABLE klantzakelijk
(
  kvk_nummer varchar(50),
  kvk_regio varchar(50),
  btw_nummer varchar(50)
) INHERITS (klant)
WITH OIDS;


Door gebruik te maken van het statement INHERITS (klant) zal de tabel “klantzakelijk” alle beschikbare velden van de tabel “klant” overerven.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Voorbeeld-case
  3. Overerving in PostgreSQL
  4. Aanmaken van tabellen en het leggen van relaties
  5. Views
  6. PL/pgSQL functies en procedures
  7. Triggers
  8. Check constraints en domains
  9. Conclusie

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.