Kuidas saaks vaadata olemasoleva PostgreSQL andmebaasi tabelite kirjeldust diagrammina?

Postitas Erki Eessaar, 01.06.2022 00:00 (muudeti 09.10.2025 09:58)
1. Leidub eraldi andmebaaside haldusvahendeid, mis sellist funktsionaalsust pakuvad. Tõstan esile:
Igaühe kohta on vastusele lisatud vähemalt üks ekraanipilt.

Kõigi puhul on probleemiks, et visualiseerimise tulemuses ei näidata UNIQUE kitsendusi, CHECK kitsendusi, indekseid, kitsenduste ja indeksite nimesid.

DBVisualizeris ei näe lisaks ka NOT NULL kitsendusi. Samuti ei saa seal teha eraldi diagramme andmebaaside erinevate alamosade kohta.

DBeaveris on eraldi diagrammide loomine võimalik (Project => ER Diagrams). Looge kõigepealt tühi diagramm ja lohistage (drag and drop) seejärel sinna valik tabelitest. Täpselt nagu kontseptuaalse andmemudeli puhul võiks iga registri kohta luua eraldi diagrammid.

DBeaveris on võimalik peita diagrammil osade, kuid mitte kõikide tabelite veerud. Selleks tuleb valida tabelit esitav kast ja parempoolse hiireklahvi alt avanevast menüüst valida Show Attributes => Selected Entity => None. Nii saate registri kohta käival diagrammil peita registrisse mittekuuluvate tabelite seosed, näidates samas registrisse kuuluvate tabelite seoseid teiste registrite tabelitega.

Vaadake SIIT videot DBeaveris selliste diagrammide loomise kohta.

pgAdmin (vähemalt 4.5.6) vahendisse on lisatud Generate ERD funktsionaalsus. Paraku on kõik tabelid ühel diagrammil. Samuti ei näe NOT NULL kitsendusi.

2. Võimalik on luua need diagrammid PlantUML formaadis. See on tekstiline formaat diagrammide e skeemide kirjeldamiseks kus kirjeldus on justkui programm ja selle programmi täitmisel kuvatakse joonis. See on mõnes mõttes sarnane dokumentide ettevalmistamise süsteemiga LaTex, kus dokumenti kirjutatakse mõnes mõttes kui programmi, mille käivitamisel näeb dokumenti soovitud viisil vormistatuna.
  1. Tee andmebaasist varukoopia, mis sisaldab ainult andmebaasi skeemi (andmebaasiobjekte), mitte andmeid. Sellist varukoopiat saab teha vahendites nagu phpPgAdmin, PgAdmin, aga ka serveris käsurealt pg_dump utiliiti käivitades.
    • Teen sellise varukoopia andmebaasist vastuvotuajad ja panen oma kodukataloogis olevasse sql faili:  
      • pg_dump -s -d vastuvotuajad  > vastuvotuajad_skeem_2025_10_09.sql
  2. Laadin varukoopia oma arvutisse (nt WinScp) programmiga.
  3. Annan keelemudelile ette viiba koos selle failiga.
    • Kasutasin Google Geminit läbi Google AI stuudio.
    • Enne faili üleslaadimist muutsin selle laiendiks .txt 
    • Iga registri kohta tuleb anda ette eraldi viip ja seal viibas täpsustada, millised tabelid tuleb joonisel esitada ning milliste tabelite detailid ära petita.
    • Eksisteerib võimalus, et genereeritud kood ei käivitu. Siis tasub järgmises viibas tuua välja vead ja proovida paluda seda uuesti genereerida.
    • Koodi käivitamiseks saab kasutada PlantUML serverit või redaktorit.
    • Teatele on lisatud genereeritud joonis ning samuti joonise lähtekood ja vastuvõtuaegade andmebaasi skeemi koopia.

# Roll
Andmebaasi arendaja.
 
# Juhised
Loe PostgreSQL andmebaasist pg_dump programmi abil loodud loogilist 
varukoopiat ja genereeri selle alusel tabelite visualisatsioon
PlantUML formaadis.
 
Esita joonisel tabelid:
* Vastuvõtt
* Vastuvõtuaeg
* Vatuvõtule_tulek
* Töötaja (ilma detaile näitamata)
* Üliõpilane (ilma detaile näitamata)
* Ruum (ilma detaile näitamata)
 
Esita joonisel registrisse kuuluvate tabelite kohta:
* tabelid,
* veerud (nimi ja andmetüüp),
* NOT NULL kitsendused,
* primaarvõtme kitsendused,
* UNIQUE kitsendused,
* välisvõtme kitsendused,
* CHECK kitsendused,
* vaikimisi väärtused.
 
## Märkused
* Kasuta veergudega seotud märkuste (nt domeeni kitsendused, vaikeväärtused) kuvamiseks PlantUML-i süntaksit, mis muudab kommentaarid diagrammil nähtavaks (näiteks ..kommentari tekst..).
* Kui veerg põhineb domeenil, siis näita tüübi nimena domeeni nime. Lisa domeeniga seotud kitsendused kommentaari, mis kuvatakse joonisel.
* Tähista kohustuslikud veerud tärniga: *
* Tähista unikaalsuse kitsendusega veerud: UNIQUE
* Diagrammil ei tohi olla M:N seoseid, sest see on faktiliselt ebakorrektne.
 
Kontrolli hoolega, et diagrammis ei oleks süntaksivigu.


3. Kui Teil on andmete modelleerimise CASE vahend, siis see võib toetada pöördprojekteerimist (reverse engineering) olemasolevast andmebaasist.

Selline võimekus on Enterprise Architect tarkvaras.

Veel üks võimalus on kasutada pgModeler tarkvara, millel on pöördprojekteerimise võimekus. See vahend on mõeldud PostgreSQL andmebaasi disaini mudelite loomiseks.

Järgnevalt on näide Oracle SQL Developer Data Modeler tarkvarast, mida saab Oracle kodulehelt tasuta alla laadida. Tarkvara on tasuta, kuid allalaadimiseks on vajalik ennast eelnevalt kodulehel registreerida.  See vahend on eeskätt mõeldud Oracle andmebaasi disaini mudelite loomiseks. Esitan järgnevalt PostgreSQLiga koos kasutamise juhendi.
  1. Laadida alla Oracle SQL Developer Data Modeler.
  2. Installeerimiseks tuleb allalaetud fail lahti pakkida.
  3. Laadida SIIT alla JDBC draiver (jar fail). Tuleb valida kõige uuem versioon Java 8 jaoks.
  4. Kui ei kasuta ülikooli Wifit, siis luua FortiClient VPN ühendus, sest muidu ei saa ülikooli serveris oleva PostgreSQLiga ühendust luua.
  5. Käivitada Data Modeler.
  6. Valida Tools => Preferences => Data Modeler => Third Party JDBC Drivers
  7. Vajutada rohelise pluss märgiga nupule ja lisada viide eelnevalt allalaetud jar failile.
  8. Valida File => Import => Data Dictionary
  9. Lisada uus ühendus:
    • Name: Ise valida (lubatud märgid: tähed, numbrid, @, _, -)
    • Database Type: JDBC
    • Username: serveri kasutajanimi (t+matrikli number)
    • Password: serveri parool (saatsite konto küsimisel meiliga)
    • JDBC URL: jdbc:postgresql://apex2.taltech.ee/siia_andmebaasi_nimi
    • Driver Class: org.postgresql.Driver
  10. Vajutada nupule Test ja kui akna vasakusse alaserva ilmub teade Success, siis vajutada nupule Connect.
  11. Valida viisardis Next ja järgmisel sammul valida skeem(id), milles olevate tabelite kirjeldus soovitakse importida.
    • Kui Te ise andmebaasis skeeme ei loonud, siis vaikimisi pandi skeemiobjektid skeemi public.
  12. Valida viisardis Next ja valida imporditavad tabelid.
    • Lisaks baastabelitele saab valida ka vaateid. Diagrammil on vaated teistsuguse välimusega, näha on veergude nimed ja nende järjekord.
  13. Vaikimisi kuvatakse kõiki tabeleid ühel diagrammil ja tulemus ei ole hästi jälgitav (vt lisatud faili Data_modeler_suur_diagramm). Iga registri kohta eraldi diagrammi loomiseks saab luua alamvaateid (subview).
    • Iga registri kohta luua vähemalt üks eraldi alamvaade ja lohistada igale alamvaatele ainult selle konteksits huvipakkuvad tabelid (vt lisatud faili Data_modeler_vaike_diagramm).
    • Probleemiks on, et kui tabeli kirjeldus peaks olema erinevatel diagrammidel, siis selle tabeli kirjeldust dubleeritakse erinevates alamvaadetes.
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Oracle Data modeler abil (liiga) suure diagrammina
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Oracle Data modeler abil (liiga) suure diagrammina
Täies mahus vaatamiseks klõpsake pildil.
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Oracle Data modeler abil registripõhise (kindla fookusega) diagrammina
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Oracle Data modeler abil registripõhise (kindla fookusega) diagrammina
Täies mahus vaatamiseks klõpsake pildil.
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Dbeaveri abil (liiga) suure diagrammina
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Dbeaveri abil (liiga) suure diagrammina
Täies mahus vaatamiseks klõpsake pildil.
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Dbeaver registripõhise (kindla fookusega) diagrammina
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine Dbeaver registripõhise (kindla fookusega) diagrammina
Täies mahus vaatamiseks klõpsake pildil.
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine DBVisualizeri abil (liiga) suure diagrammina
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine DBVisualizeri abil (liiga) suure diagrammina
Täies mahus vaatamiseks klõpsake pildil.
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine PgAdmini abil (liiga) suure diagrammina
PostgreSQLi andmebaasis olemasolevate tabelite visualiseerimine PgAdmini abil (liiga) suure diagrammina
Täies mahus vaatamiseks klõpsake pildil.
PlantUML abil loodud vastuvõtuaegade registri diagramm
PlantUML abil loodud vastuvõtuaegade registri diagramm
Täies mahus vaatamiseks klõpsake pildil.

PlantUML diagrammi lähtekood + skeemi koopia, mille alusel see loodi [11 KB]


Kas postitus oli kasulik? Hinda seda!

Keskmine hinne: 5.0


← Eelmine postitus Kas PostgreSQLi loendustüüpi võiks kasutada väga harva muutuvate klassifikaatorite (näiteks seisundite liigid) realiseerimiseks? Järgmine postitus → Lõin PostgreSQL andmebaasis <b>protseduuri</b> (CREATE PROCEDURE lause). Seda MS Accessi rakendusest välja kutsudes saan veateateid nagu: <ul> <li>Error while preparing parameters. <li>ERROR: ... is a procedure; Error while preparing parameters. </ul> <p>Milles on viga ja mida selle parandamiseks ette võtta?