Anmelden

View Full Version : create view oder constraint oder trigger oder ... ?



antvik
31-07-06, 23:53
Hallo zusammen,

ich habe folgendes Problem:

für eine Datei sollte (staendig) gewaehrleistet werden:

A = Satz Anzahl + 1

wobei
A =
select count(*) from (
select feld1 from file1
group by feld1
union
select feld2 from file1
group by feld2 )

(Bemerkung: dieses Statement so funktioniert bei mir nicht)

Diese Datei beinhaltet eine Hierarchie von Agenten.
feld1 = "Kind"
feld2 = "Vater"

Könnte mir jemand helfen ?
Für die Hilfe danke im voraus !

JP
01-08-06, 20:07
Hallo,

eine Möglichkeit wäre das Schlüsselwort UNIQUE im DDS.
Beim Versuch einen Satz in die Tabelle zu schreiben, kommt dann eine Fehlermeldung. Diese müsste man abfangen bzw. verhindern.
Voraussetzung ist, das KIND+VATER=PRIMARY KEY ist. Ein "Kind" kann und darf dann natürlich nicht mehrere "Väter" haben.

Ich habe, zumindestens meines Wissens nach, nur einen Vater :D .
Hoffe ich konnte weiterhelfen.

Gruß JP

JP
01-08-06, 20:15
hätt ich fast vergessen

Somit wäre dann eigentlich deine Bedingung
A = Anzahl Sätze + 1
erfüllt, da die Daten "sauber" sind.

Es sei denn, es gibt "Kinder", die keinen "Vater" haben :eek: .
Oder "Väter" die keine "Kinder" haben.

antvik
02-08-06, 11:39
Vielen Dank für die Hilfe !
Das scheint bisher eine einfache Lösung zu sein.
Aber ich kenne mich mit Primary keys nicht aus, bisher habe ich sowas noch nie benutzt (noch mit SQL weder mit OS/400 constraint). Ich bin Anfänger im Thema "constraint". Könntest Du mir noch eventuell das Thema "Primary key" verdeutlichen ?

JP
02-08-06, 18:04
ich erläutere es kurz anhand folgender zwei Tabellen
der Klassiker :Bestellkopf & -positionen

Bestellung Lieferant Lieferdatum
1 123 10.08.06
2 475 15.08.06
3 845 11.08.06

Bestellung Position Artikel Menge Info
1 1 A10 9
1 2 A11 2
2 1 A20 10
3 1 A11 5
3 2 A11 10 mit rosa Schleife

um einen Satz einer Tabelle eindeutig identifizieren zu können, benötigt man einen Schlüssel (Primary Key)
das kann ein einfacher oder ein zusammengesetzter Schlüssel sein

im Beispiel Bestellkopf wäre das die "Bestellung"
im Beispiel Bestellpositionen sind das "Bestellung" + "Position" + "Artikel"

nun kurz zum "constraint"
ein constraint definiert eine Beziehung zwischen zwei Tabellen
Beispiele:
- es kann keine Bestellposition ohne zugehörgien Bestellkopf geben
- es kann keine Bestellung ohne zugehörigen Lieferanten im Lieferantenstamm usw.

hier ist es etwas ausführlicher beschrieben
http://rowa.giso.de/oracle/latex/Constraints.html