Schema’s
In PostgreSQL (en de meeste andere databasesystemen) wordt gewerkt met zgn. schema’s. Een schema is onderdeel van je database, onder het schema definieer je de tabellen, datatypes, views, procedures etc. Je kunt in 1 database meerdere schema’s definiëren, per schema kun je verschillende rechten uitdelen.
Zo zou je dus bijvoorbeeld kunnen denken aan de volgende structuur voor deze applicatie:
- Een schema waarin alle data wordt opgeslagen, het useraccount van je applicatie krijgt hier per definitie géén toegang (Het base schema )
- Een schema waarin je de API bouwt, de API leest en schrijft naar het schema met de data. Het useraccount van je applicatie geef je alleen rechten op het API-schema.
Met bovenstaande structuur bouw je dus een enorm stuk veiligheid in. Vanuit de applicatie kan men theoretisch gezien nooit verder komen als het API-schema, de data blijft gewaarborgd en is slechts te benaderen/manipuleren via SP’s welke je in de API hebt gedefinieerd.
Je kunt via SQL bepalen welk schema je wilt benaderen, hieronder een voorbeeld waarmee gegevens uit het "base"-schema worden gelezen, waarin de daadwerkelijke tabellen staan opgeslagen:
Je kunt PostgreSQL ook forceren gebruik te maken van (een volgorde van bepaalde) schema‘s. Met behulp van de variabele search_path bepaal je de volgorde waarin entiteiten worden gezocht:
2
3
4
5
6
7
// tbl_order_head zal nu eerst worden gezocht in het base-schema en vervolgens in api-schema
SELECT id, orderdate FROM tbl_order_head;
SET search_path api;
// tbl_order_head wordt nu niet gevonden
SELECT id, orderdate FROM tbl_order_head;
Deze tutorial maakt gebruik van 2 schema’s: base en api. Zorg ervoor dat deze schema’s bestaan en dat je hier voldoende rechten op hebt.
Meer informatie over schema’s vind je op http://www.postgresql.org/docs/current/static/ddl-schemas.html
Inhoudsopgave
- Inleiding
- Voorbeeldcase
- Schema’s
- SQL Code en relaties
- Stored Procedures en het gebruik hiervan in je app
- Toevoegen van een order
- Voorbeeld van het gebruik in PHP
- Afsluiting