16. Oktober 2008

SQL Developer Data Modeling

Die Beta-Version ist draussen! Und hier sind schon die ersten Screenshots, die ich auf meinem Notebook generieren konnte.

Dies wird also der Nachfolger vom guten alten Oracle Designer werden. Der Name ist: Oracle SQL Developer Data Modeling (OSDM) und wird im SQL Developer enthalten sein.


Als Erstes habe ich den Datenmodell-Capture getestet. Ein paar Klicks im Menü und schon hatte ich die ersten Tabellen im OSDM drin. Gespeichert wurden die Tabellen im relationalen Bereich


Über ein "Engineer to Logical Model" kann man das Datenmodell ins ER-Modell überführen. Das funktionierte genauso einfach und ohne Probleme


Der Link zum OTN-Download-Bereich des OSDM: Oracle SQL Developer Data Modeling

In den nächsten Tagen werde ich weitere Tests machen und ich hoffe, dass der gute erste Eindruck weiter so bleibt!
Gerd

15. Oktober 2008

Views, die auf Jahr, Monat und Tag basieren

Bei der Applikations-Entwicklung braucht man häufig Wertelisten, die einem Jahre, Monate oder Tage zurückgeben.

Man könnte dort natürlich jedes Mal ein Select-Statement fest in einer LOV verdrahten und diese Daten dann anzeigen.

Eleganter geht's aber mit einer View, die man zur Datenselektion benutzt. Hier sind 3 Beispiele für solche Views :

CREATE OR REPLACE FORCE VIEW JAHRE_V
(DATUM) AS
SELECT add_months (trunc (sysdate, 'YYYY'), 12 * (50 - Level))
FROM Dual
CONNECT BY Level <= 100;

CREATE OR REPLACE FORCE VIEW MONATE_V
(DATUM) AS
SELECT add_months (trunc (sysdate, 'MM'), 500 - Level)
FROM Dual
CONNECT BY Level <= 1000;

CREATE OR REPLACE FORCE VIEW TAGE_V
(DATUM) AS
SELECT trunc (sysdate) + 15000 - Level
FROM Dual
CONNECT BY Level <= 30000;


Diese Views ermöglichen nun den einfachen Select auf

- Aktuelles Jahr +/- 50 Jahre
- Aktueller Monat +/- 500 Monate
- Aktueller Tag +/- 15000 Tage

In einer Record-Group verwendet man diese Views dann so:

Werteliste der nächsten 10 Jahre

SELECT Datum
FROM Jahre_V
WHERE Datum BETWEEN trunc (sysdate, 'YYYY')
AND add_months (trunc (sysdate, 'YYYY'), 10*12);


Werteliste der letzten 30 Tage und der nächsten 10 Tage

SELECT Datum
FROM Tage_V
WHERE Datum BETWEEN trunc (sysdate-30) AND trunc (sysdate+10);


Einfacher geht es kaum noch
Gerd