Vastus (18.08.2023 15:50): PostgreSQL on objekt-relatsiooniline andmebaasisüsteem. Kirjutan objekt-relatsioonilisusest
SIIN. Muuhulgas on seal ka pikemalt koos koodinäidetega juttu PostgreSQLi objekt-relatsioonilisuse võimalustest.
Objekt-relatsioonilisusest (OR) tulenevate võimaluste kasutamist ei ole ma päriselu andmebaasides väga palju kohanud. Mulle endale tundub pakutavatest võimalustest kõige kasulikum massiivitüüpide kasutamine veergude ja parameetrite tüüpidena, uute vahemiku tüüpide loomine ning kasutamine ja operaatorite loomine. Kui lugeda OR võimaluste hulka ka andmebaasis suurte objektide (nt failide) salvestamine, siis on ka see kasulik.
Uute baastüüpide loomine - võimalik, kuid PostgreSQLi juba olemasolevate andmetüüpide suur hulk tähendab, et see on vajalik pigem erandjuhtudel.
Loendustüüpide kasutamine veeru tüüpidena - selle asemel oleks parem luua klassifikaatorite tabelid, millele välisvõtmete kaudu viidatakse. Loendustüüpide veeru tüübina kasutamise probleemide kohta on kirja pandud SQL disaini antimuster (Kirjelda veeru võimalikud väärtused osana veeru definitsioonist), mida kirjeldatakse SQL-andmebaaside disaini antimustrite raamatu 11. peatükis:
https://learning.oreilly.com/library/view/sql-antipatterns/9781680500073/f_0068.htmlTabelite loomine pärimise kaudu - tõsiseks piiranguks on, et alamtüüpi olem ei kuulu välisvõtme kitsenduse kontrolli mõttes ülatüüpi. Lisaks eelviidatud dokumendile kirjutatakse pärimise kaudu tabelite loomise võimalustest ja probleemidest
SIIN alates slaidist "Baastabelite loomine pärimist kasutades" (slaidid 16-22).
Mõned lõputööd, kus neid teemasid on käsitletud: