Küsimus

Erki Eessaar

Vastus (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.


Keskmine hinne: 5.0