Vous êtes sur la page 1sur 19

Getting started with SQL DataModeler

Inhoud
1 2 3 History ............................................................................................................................................. 3 Inleiding ........................................................................................................................................... 4 Objecten en Relaties........................................................................................................................ 4 3.1 Tabellen en Views.................................................................................................................... 4 Tabel / View toevoegen................................................................................................... 6 DDL Preview .................................................................................................................... 8

3.1.1 3.1.2 3.2

Relaties .................................................................................................................................. 10 Algemeen....................................................................................................................... 10 Relaties maken .............................................................................................................. 10

3.2.1 3.2.2 3.3

Synoniemen en sequences .................................................................................................... 11 Fysieke Model................................................................................................................ 11

3.3.1 4

Domeinen ...................................................................................................................................... 12 4.1 4.2 4.3 4.4 Algemeen............................................................................................................................... 12 Lijst van domeinen ................................................................................................................ 13 Domeinen beschikbaar maken in het datamodel ................................................................. 13 Domeinen gebruiken ............................................................................................................. 15

Scripts ............................................................................................................................................ 16 5.1 5.2 5.3 5.4 5.5 Scripts importeren en exporteren / aanmaken..................................................................... 16 Audit-kolommen.................................................................................................................... 16 Synoniemen ........................................................................................................................... 16 Sequences.............................................................................................................................. 16 Datamodel changes ............................................................................................................... 16

6 7

Templates ...................................................................................................................................... 18 Extra documentatie ....................................................................................................................... 18

1 History
Date 03/09/2012 Author Nick Celis Version Comments 1.0 Initial draft version

2 Inleiding
Elke applicatie binnen iAdvise is gebaseerd op een datamodel. Een datamodel is een grafische voorstellen van hoe de tabellen zich verhouden tot elkaar, met hun bijhorende relaties. We kunnen 2 types datamodellen onderscheiden: Het logische datamodel beschrijft de structuur van en de relaties tussen de tabellen. Het fysieke datamodel beschrijft de manier waarop gegevens in een individuele database zijn opgeslagen. De verbinding tussen het logische en het fysieke datamodel wordt gelegd door het omzetten van de logische gegevensobjecten in database-definitie instructies conform een bepaalde Data Definition Language (DDL). Beide modellen gaan wij maken via SQL Datamodeler. In deze brochure gaan we uitleg geven over enkele basiszaken die wij gebruiken om tot een datamodel te komen.

3 Objecten en Relaties
3.1 Tabellen en Views
Een datamodel bestaat uit objecten (=de tabellen) die met elkaar verbonden zijn via relaties. Andere objecten die wij bijhouden in onze datamodellen zijn synoniemen, sequences en views. Aan de hand van onderstaand voorbeeld verklaren we enkele zaken.

Tabellen(=een object) worden voorgesteld als rechthoeken terwijl views (=een object) voorgesteld worden als een rechthoek met ronde hoeken. De opvulkleur kan zelf gekozen worden door op een tabel rechts te klikken en dan voor Format te kiezen.

Je kan er optioneel voor kiezen welke informatie wel en niet getoond wordt. In dit geval worden enkel de tabelnamen getoond, maar je kan bvb ook de kolommen, datatypes en keys laten tonen. (rechtermuisknop in het datamodel -> View Details -> keuze maken)

3.1.1 Tabel / View toevoegen Bovenaan in SQL Datamodeler staat een werkbalk die kan gebruikt worden om nieuwe objecten toe te voegen.

Het eerste icoontje wordt gebruikt om een nieuwe tabel te definiren, het tweede voor een view. Als je een tabel wil toevoegen, klik je op het eerste icoontje en daarna teken je de tabel in je datamodel. Eens je de vorm getekend hebt, verschijnt dit scherm:

Hierin kunnen we de naam, afkorting, kolommen, primary keys, unique keys, etc... gaan definiren. Voor een nieuwe view geldt hetzelfde principe. Je klikt op het tweede icoontje, tekent het object en vervolgens verschijnt een venster:

Hierin kunnen we de naam van de view opgeven en de query definiren. De query definiren gebeurt door op de knop Query te klikken. Het makkelijkste om de query te schrijven is om onderaan de select te schrijven. SQL Datamodeler gaat automatisch de complete DDL genereren. (CREATE OR REPLACE VIEW xxx AS gevolgd door de zelf gedefinieerde query.)

Belangrijk!
De naam van een tabel of een view is ALTIJD in het meervoud. Eventueel kan er bij een view voor gekozen worden om de naam vooraf te laten gaan door V_. Kolomnamen worden altijd in het enkelvoud gezet. Hiervoor refereren we naar het document iAdvise_standaarden_vx.doc Verder is het belangrijk om altijd een abbreviation mee te geven aan een tabel. Deze worden nl. gebruikt door de templats (zie verder in dit document). Een abbreviation van een tabel bestaat uit 4 letters, meestel de eerste 4 van de tabelnaam. (zie document iAdvise_standaarden_vx.doc )

3.1.2 DDL Preview Als je wil zien welke code er zal gegenereerd worden, kan je per object altijd een DDL-preview bekijken. Dit kan door op het object rechts te klikken en te kiezen voor DDL Preview. De foreign keys, unique keys, indexen, etc... worden ook allemaal gegenereerd in deze preview.

3.2 Relaties
3.2.1 Algemeen Een datamodel bestaat uit objecten en relaties tussen die verschillende objecten. Zo een relatie wordt een Foreign Key Relation genoemd, waarbij er een link tussen 2 objecten gemaakt wordt op basis van een kolom uit de ene tabel en een kolom uit de andere. Een relatie kan 1 op N (=meerdere) zijn, ofwel 1 op 1. Beide gevallen worden schematisch verschillend voorgesteld.

Belangrijk!
De naam van een relatie bestaat uit volgende template: FK_{child abbr}_{parent abbr} In een datamodel wordt een relatie voorgesteld door een pijl. Echter, de manier van lezen is omgekeerd een die van de richting van de pijl. Onderstaand voorbeeld maakt dit duidelijk:

De pijl gaat van beroepen naar personen, maar we lezen dit als 1 persoon heeft meerdere beroepen. Dit is dus een voorstelling van een 1 op N relatie. Een 1 op 1 relatie wordt in SQL Datamodeler als volgt voorgesteld:

Dit bekomen we door in de child-table (in dit geval beroepen) een Unique Key te maken op de FKkolom (=PERSOON_ID) . 3.2.2 Relaties maken

Om een relatie te maken tussen 2 objecten, klik je op in de werkbalk. Daarna klik je op de child tabel en daarna op de parent tabel. Daarna krijg je dit scherm:

10

De naam van de relatie wordt automatisch ingevuld, gebasseerd op de template die gedefinieerd is. (zie verder). Verder kan je ervoor kiezen of het om een verplichte relatie gaat, of om een optionele. Een verplichte FK-relatie is een FK-relatie waarbij de child-kolom verplicht is, terwijl een optionele FKrelatie een relatie is waarbij de child-kolom niet verplicht is. Beiden worden ook schematisch anders voorgesteld. Optioneel

Verplicht

Eens je op Apply klikt en dan OK, wordt er in de child-tabel automatisch een kolom bijgemaakt die verwijst naar de parent-tabel. In dit geval is die kolom PERSOON_ID in de tabel BEROEPEN.

3.3 Synoniemen en sequences


In het document iAdvise_standaarden_vx.doc wordt er gesproken over synoniemen en sequences. Deze twee objecten worden ook in het datamodel bijgehouden. Hiervoor moet er eerst een Fysiek Model (=Physical Model) bestaan. 3.3.1 Fysieke Model In het fysieke model worden alle objecten bijhouden die in de DDL files gegenereerd worden. Aangezien we een synoniem of sequence niet kunnen tekenen, wordt dit dus gestockeerd in het fysieke model. Om een Physical Model te maken, klik je met de rechtermuisknop op Physical Models en selecteer je New. Daarna selecteer je de database (Oracle Database 11g) en klik je op OK.

11

Er verschijnt een plus-teken naast het icoon van een Physical Model. Daar daarop te klikken opent het model zich met al zijn componenten. Zo kunnen we onder andere Sequences en Synonyms herkennen. Triggers, packages, functions, procedures kunnen hier ook bijgehouden worden, maar binnen iAdvise steken we dit niet in het datamodel.

Over het aanmaken van sequences en synoniemen volgt later meer uitleg. (4. Scripts)

4 Domeinen
4.1 Algemeen
Domeinen zijn binnen SQL Datamodeler te definiren als custom voorgedefinierde datatypes. Dit houdt niet in dat we zelf nieuwe datatypes kunnen aanmaken, maar wel dat we vaakvoorkomende en wederkerende kolommen hun datatype, kolomlengte, unit, commentaar,... kunnen opslaan en 12

makkelijk kunnen toepassen. Een goed voorbeeld hiervan zijn de audit-kolommen. Dit zijn kolommen die de creatiedatum, creatieuser, laatste wijzigingsdatum en laatst gewijzigd door bijhouden. Aangezien dit altijd dezelfde kolomspecificaties zijn, kunnen we deze makkelijk in domeinen steken, in plaats van elke keer te definiren dat het om een VARCHAR2 gaat van '30 lang, uitgedrukt in CHAR. Bijkomend voordeel is dat we in een domein ook veldcommentaar kunnen voordefiniren.

4.2 Lijst van domeinen


Binnen iAdvise hebben we reeds een aantal domeinen gedefinieerd. Deze zijn gedefinieerd in het Nederlands en in het Engels. Deze domeinen zitten in een XML-bestand die terug te vinden is onder SubVersion -> Panoramix -> DataModeler -> Scripts.

Domein (Engels/Nederlands)
ACTIVE_IND / ACTIEF_IND DISPLAY_SEQ / TOON_NR CODE / CODE ID / ID DESCRIPTION / OMSCHRIJVING NAME / NAAM CREATE_USER / CREATIE_US CREATE_DATE /CREATIE_DATE LMOD_USER / LWIJZ_USER LMOD_DATE / LWIJZ_DATE

4.3 Domeinen beschikbaar maken in het datamodel


Belangrijk om weten is dat de domeinen van toepassingen zijn per datamodel. Als er een nieuw project van start gaat, is het aan te raden om eerst een leeg (=nieuw) datamodel aan te maken en het op te slaan in een directory. Automatisch zal er een .dmd file aangemaakt worden en een directory met de naam datamodel. Om de domeinen actief te maken voor het datamodel, moet er in de folder datamodel manueel een folder domains aangemaakt worden waarin n van de twee XML-bestanden kopiren.

13

Eens het bestand op de juiste plaats staat en het aangemaakte datamodel opnieuw geopend wordt, kan je onder Tools -> DataModeler -> Domains Administration de beschikbare domeinen zien en eventueel nieuwe aanmaken.

14

Belangrijk!
Als er nieuwe domeinen worden aangemaakt, kan je de Domains File meegeven. Het is belangrijk dat hier voor standarddomains of standarddomains (NL) gekozen wordt. Indien dit niet gedaan wordt, wordt het domain lokaal opgeslaan en zit het niet in SubVersion, waardoor het niet beschikbaar is voor iemand die op een later tijdstip aanpassingen moet doen.

4.4 Domeinen gebruiken


Bij het aanmaken van nieuwe kolommen kan een domein gebruikt worden om het datatype, kolomlengte,... aan te duiden. Dit kan door op de tabel te dubbelklikken, een kolom te selecteren, de optie Domain aan te duiden en vervolgens het type uit de lijst te kiezen.

15

5 Scripts
Er is in dit document al een aantal keer verwezen naar dit hoofdstuk. Scripts zijn in DataModeler bedoelt om het leven van een ontwikkelaar wat aangenamer te maken. Bij het maken van een datamodel zit er vaak heel wat routinewerk in: aanmaken van audit-velden, synoniemen, sequences, het verwijderen van sequences,... Binnen iAdvise hebben we een aantal scripts gemaakt die deze zaken allemaal automatiseren. Heel handig en vooral tijdsbesparend! De scripts zijn te vinden onder SubVersion -> Pan-ora-mix -> DataModeler -> Scripts.

5.1 Scripts importeren en exporteren / aanmaken


Als je een script wil beschikbaar stellen, kan dit op verschillende manieren. Je kan ze allemaal importeren door naar Tools -> Data Modeler ->Design Rules ->Transformations te navigeren. Vervolgens kan je op de knop Import klikken en dan het bestand datamodeler_import_scripts.xml te selecteren ( SubVersion -> Panoramix -> Getting Started @ iAdvise -> Documentatie -> Imports -> datamodeler_import_scripts.xml). Een andere mogelijkheid is om ze manueel toe te voegen. Dit kan door naar Tools -> Data Modeler >Design Rules ->Transformations te gaan, daar op het +-teken te klikken, en de inhoud van het script in de witte ruimte onderaan te plakken en op Save te drukken. De knop Apply dient om het script effectief uit te voeren. In de volgende alienas worden de meest gebruikte scripts kort uitgeled. Alle scripts zijn te vinden onder SubVersion -> Pan-ora-mix -> DataModeler -> Scripts

5.2 Audit-kolommen
Het is niet nodig om voor elke tabel de 4 audit-kolommen zelf te voorzien. Dit kan makkelijk door het script cr_audit_velden_en of cr_audit_velden_nl te laten lopen. De aparte scripts (onder SubVersion -> Panoramix ->DataModeler -> Scripts) noemen tc_add_pk_audit_columns.txt en tc_add_pk_audit_columns_nl.txt

5.3 Synoniemen
Ook synoniemen kunnen op dezelfde manier aangemaakt worden. Hiervoor kan het script tc_add_synonyms.txt gebruikt worden (of cr_synonyms uit de importfile). Nadat er op Apply gedrukt is, wordt een popup getoond waarin de prefix opgegeven kan worden (zonder _ !).

5.4 Sequences
Ook synoniemen kunnen op dezelfde manier aangemaakt worden. Hiervoor kan het script tc_add_sequences.txt gebruikt worden (of cr_sequences uit de importfile).

5.5 Datamodel changes


Omdat het vaak moeilijk is om een aantal maanden na een aanpassing nog te weten wat er juist aangepast was, is er een script gemaakt die de aanpassingen naar een HTML document gaat 16

genereren. Dit scripts werkt enkel als er consequent enkele afspraken nageleefd worden. Het script is nl. gebaseerd op input van de ontwikkelaar. Elke keer als er iets aangepast wordt aan een bestaand datamodel, zou de wijziging op tabelniveau, onder de sectie Notes moeten bijgehouden worden. De wijzigingen moeten volgens onderstaand XML formaat opgegeven worden: <ModificationList> <Modification Id="1"> <ReleaseNr>1.0.0</ReleaseNr> <Date>20-08-2012</Date> <Author>Jan Huyzentruyt</Author> <Description>New column: PARAMETER_YN</Description> <Motivation>To make a better distinction between an input parameter and a real bind variable</Motivation> </Modification> <Modification Id="2"> <ReleaseNr>1.0.0</ReleaseNr> <Date>20-08-2012</Date> <Author>Jan Huyzentruyt</Author> <Description>New column: DESCRIPTION</Description> <Motivation>in analogy with other tables</Motivation> </Modification> </ModificationList>

In het datamodel zou dit er als volgt uitzien:

17

Om het HTML-rapport te genereren, moet het script gen_datamodel_changes.txt toegevoegd en gerund worden. Dit script is eveneens te vinden onder SubVersion -> Pan-ora-mix -> DataModeler -> Scripts

6 Templates
Zoals eerder in dit document aangehaald, is het belangrijk om voor elke tabel een afkorting te voorzien. Deze afkorting wordt nl. gebruikt door een aantal templates die bvb de naamgeving van een Foreign Key gaan automatiseren. Op die manier wordt er consequent dezelfde manier van naamgeving gehanteerd en is het makkelijk om later een naam te analyseren. Om een template aan te maken moet je navigeren naar Tools -> Preferences -> Data Modeler -> NamingStandard -> Templates.

7 Extra documentatie
1. Korte handleiding over werken met Data Modeler in SQLDeveloper
http://www.oracle.com/technetwork/developertools/datamodeler/sqldeveloperdatamodeleroverview-167687.html

2. Oracle SQL Developer Data Modeler : Naming Standardization


http://www.oracle.com/technetwork/developer-tools/datamodeler/datamodelernamingstandards167685.pdf

18

3. Uitgebreide omschrijving DataModeler in SQLDeveloper


http://download.oracle.com/docs/cd/E15276_01/doc.20/e13677/toc.htm#

Voor andere vragen of meer uitleg over SQL Datamodeler, kan je steeds terecht bij Jan Huyzentruyt.

19

Vous aimerez peut-être aussi