Kodulehed
[385] - Andmebaasid II (ITI0207) (sügis 2023)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / CASE vahendid

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (29.10.2023 14:59):
Kuidas teha nii, et Enterprise Architect vahendis ei genereeritaks PostgreSQL andmebaasi disaini mudeli põhjal koodi, mida peab käsitsi parandama?
Vastus (02.11.2023 20:25):

Tuleb muuta malle (template), mille põhjal koodi genereeritakse. Malle tuleb muuta eraldi iga faili puhul, milles olevast mudelist soovitakse koodi genereerida.
Järgnevad probleemid esinevad EA12-ga vaikimisi kaasa tulevates mallides. EA16 korral on genereeritud koodis tabelite, kitsenduste ja indeksite nimed jutumärkides, kuid veergude nimed ei ole. SERIALiga seotud probleemi EA16 genereeritud koodis ei esine. TIME ja TIMESTAMP tüüpide puhul täpsuse 0 mitte arvestamine esineb nii EA12 kui EA16 korral.

Mallide vaatamiseks ja muutmiseks valige Package=>Database Engineering=>Edit DDL Templates

Seejärel valige liitboksist Language andmebaasisüsteem - antud juhul PostgreSQL.

Malli muutmise järel tuleb salvestamiseks selle juures vajutada Save nupule või vajutada Ctrl+S.

1. Kuidas teha nii, et genereeritud koodis poleks andmebaasiobjektide identifikaatorid e nimed jutumärkides?

Näiteks lause CREATE TABLE "Riik" (... asemel tahaksin lauset CREATE TABLE Riik (....

Valige mall DDL Left Surround ja kustutage sealt jutumärk ("). Ärge ridu kustutage.
Valige mall DDL Right Surround ja kustutage sealt jutumärk ("). Ärge ridu kustutage.

2. Kuidas teha nii, et genereeritud koodis poleks SERIAL veeru korral eraldi arvujada generaatori loomist, veeruga sidumist ja siis ka arvujada generaatori kustutamist? SERIAL notatsiooni e tähistuse kasutamise korral toimub see kõik ju automaatselt.

Näiteks koodi

DROP SEQUENCE IF EXISTS isik_isik_id_seq
;
CREATE TABLE Isik
(
    isik_id serial NOT NULL DEFAULT nextval(('isik_isik_id_seq'::text)::regclass),
...
)
;

CREATE SEQUENCE isik_isik_id_seq INCREMENT 1 START 1
;

asemel soovin koodi

CREATE TABLE Isik
(
    isik_id serial NOT NULL,
...
)
;


Selleks laadige alla selle vastusega seotud fail ning muutke oma mudelifailis järgmised mallid selliseks nagu need on selles failis. Jälgige, et iga malli lõpus oleks tühi rida. Need uued malli versioonid on võetud EA 16 vahendist. Kui klõpsate EA-s mallide nimekirjas veerul Name, siis saate need tähestiku järgi sorteerida.

  • DDL Column Definition
  • DDL Column Extras
  • DDL Create Sequence
  • DDL Drop Column Extras
  • DDL Drop Sequence
  • DDL Script File

3. Kuidas teha nii, et genereeritud koodis oleks TIME ja TIMESTAMP tüüpide korral arvestatud mudelis määratud täpsusega 0, mis tähendab, et sekundi murdosasid ei registreerita?

Näiteks koodi

CREATE TABLE Isik
(
    reg_aeg timestamp without time zone NOT NULL DEFAULT LOCALTIMESTAMP(0),
...
)
;


asemel soovin koodi

CREATE TABLE Isik
(
    reg_aeg timestamp(0) NOT NULL DEFAULT LOCALTIMESTAMP(0),
...
)
;


Selleks laadige alla selle vastusega seotud fail ning muutke oma mudelifailis mall DDL Data Type selliseks nagu see on selles failis. Jälgige, et malli lõpus oleks tühi rida. Kui klõpsate EA-s mallide nimekirjas veerul Name, siis saate need tähestiku järgi sorteerida.

vaata ka faile:
EA (12) CASE vahendi parandatud PostgreSQL SQL koodi genereerimise mallid[4 KB]

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!