SCHEMA in postgreSQL
Even een vraagje voor de postgreSQL kenners hier: is het juist te stellen dat een SCHEMA in postgreSQL fungeert zoals een namespace in veel programmeertalen?
Zelf vergelijk ik het altijd meer met objecten: Een object users met daarin alle tabellen, views, functies, etc. die bij dit object horen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Tnx Frank. Is er een voorbeeld te geven waarin het voordeel van schema's duidelijk naar voren komt? Ik zie het nu nog alleen maar als een extra laag tussen de database en de tabellen in. Is het puur organisatorisch of zijn er ook praktijkvoorbeelden die zonder schema's niet uitvoerbaar zouden zijn?
Vooral in complexe databases is het handig om met schema's de verschillende objecten aan te maken (denk bv. aan gebruikers en topics in een forum) met daarin de verschillende onderdelen. Wanneer je dan alle interactie via functies en views laat lopen, dan hoef je nooit meer vanuit PHP het datamodel te kennen om de juiste data op te vragen. De functies en views in de database zorgen er voor dat dit wel goed komt. Je kunt het datamodel gewoon veranderen, zolang de interface niet verandert, hoef je in je scripts niks aan te passen.
Je kunt nog een stapje verder gaan en een aparte API ontwikkelen met daarin uitsluitend functies en views die dan de onderliggende schema's aanspreekt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
API
----
functies die de functies in de onderliggende schema's aanspreken
===
gebruikers + topics
------------ ------------
tabellen tabellen
functies functies
views views
etc. etc.
----
functies die de functies in de onderliggende schema's aanspreken
===
gebruikers + topics
------------ ------------
tabellen tabellen
functies functies
views views
etc. etc.
De schema's gebruikers en topics sluit je af voor de buitenwereld, niemand (behalve de DBA) mag daar inkomen en niemand kan dus tabellen e.d. rechtstreeks benaderen. Alles loopt via het schema API. Zeer veilig en zeer goed te onderhouden.
Het is geen extra laag tussen database en tabellen, maar zorgt voor overzicht, veiligheid en flexibiliteit.
Bedankt Frank, ik ga me er verder in verdiepen. Ik heb postgreSQL 8.3 met pgAdmin 3 lokaal aan de praat en de gewone dingen als connecten en query's uitvoeren lukken wel. Nu nog de postgre-specifieke dingen leren ;-)
Het doodgewone INSERT en SELECT gebeuren bespreek ik niet, dat is basiskennis.
Edit: Aftrappen met PostgreSQL
Gewijzigd op 01/01/1970 01:00:00 door Frank -