PDA

View Full Version : Feldreferenzdatei in SQL



Etherion
31-01-06, 10:52
Hallo zusammen,



dies ist mein erster Beitrag, mit dem ich meinen Einstand in diesem Forum geben möchte. Mein neuer Chef hat mich angewiesen, mich mit dem Thema Anwendungsmodernisierung auseinander zu setzten. Hierbei bin ich auf die Roadmap von IBM gestoßen, die mit dem Umstieg auf WDSc beginnt und Enterprise Java Beans endet. Ein Meilenstein ist die Umstellung von DDS-Basierten Dateien auf SQL. Nun frage ich mich, ob und wie ich meine lieb gewonnene Feldreferenzdatei unter DDL nutzen kann. Hat jemand Erfahrungen mit diesem Thema?



Gruß



Etherion

Fuerchau
31-01-06, 11:18
Das geht nur mit UDT's !
Du musst halt für jeden Typ einen "Userdefined Typ" generieren und kannst dann beim Feldtyp an Stelle von CHAR/DEC usw. deinen UDT angeben.

B.Hauser
31-01-06, 11:20
Leider unterstützt SQL keine Feldreferenzen wie wir sie vom DDS her kennen. Also ändern Feld in der Referenz-Datei und dann mit CHGPF die Dateien neu erstellen ist nicht!

Die einzige Möglichkeit, die es gibt ist folgende:


CREATE TABLE MySchema/MyFile
(NewFld1, NewFld2, NewFld3 ....)
as (Select RefFld1, RefFld2, RefFld3 ...
from MySchema/MyRefFile)
With No Data


Allerdings werden die Referenz-Informationen nicht in den System Tables gespeichert, sondern nur die absolute Definition. Ändert sich ein Referenz-Feld, musst Du in jeder einzelnen Tabelle, in der dieses Feld verwendet wird die Änderung über ALTER TABLE nachvollziehen.

Die Antwort, die ich zu diesem Thema aus Rochester erhalten habe, war:
Feldreferenz-Dateien sind kein SQL-Standard und
in einer normalisierten Datenbank werden sie sowieso nicht benötigt.

Birgitta

B.Hauser
31-01-06, 11:26
Das geht nur mit UDT's !
Du musst halt für jeden Typ einen "Userdefined Typ" generieren und kannst dann beim Feldtyp an Stelle von CHAR/DEC usw. deinen UDT angeben.

Das Problem mit den Distinct Types ist nur folgendes, dass sie nur dann verändert werden können, wenn sie in keiner Tabelle mehr verwendet werden.
Das heißt, wenn Du einen Distinct Typ ändern willst, musst Du zunächst alle Tabellen löschen, den Distinct Typ ändern und anschließend die Tabellen wieder neu generieren. Und was machst Du dann mit Deinen Daten?

Weiterhin müssen Distinct Types immer konvertiert werden, was die Performance beträchtlich beeinflußt.
Im Klartext heißt das, wenn z.B. die Bestell-Nr. mit Distinct-Typ BNR 15A definiert wurde, kann sie mit keinem 15-stelligen alphanumerischen Feld (oder einem anderen Distinct-Typen mit der gleichen Definition) verglichen werden, sondern muss zunächt in einen vergleichbaren Typen konvertiert werden.

Deshalb sollte man einen großen Bogen um Distinct Typen machen.

Birgitta