Tabellenaufbau mit mehreren, aber gleichen Referenzen

06/09/2008 - 12:31 von Harald Bacik | Report spam
Hallo NG

Ich suche eine Lösung für mein Problem. & zwar Möchte ich eine Tabelle für
alle meine Auftràge erstellen.
Ich habe 2 grundlegend verschiedene Auftragstypen. - Dafür habe ich alle
benötigten Felder in der Tabelle erstellt. Da komme ich aber schon zu dem
Punkt, wo ich nicht mehr weiter weiß
& zwar: Beide Auftràge müssen Artikel verwalten (logisch...). Das Problem
(für mich) ist jetzt folgendes:
Auftrag A muss 2 Artikel verwalten. - Für die rechte Seite & für die linke
Seite. Pro Auftrag können demzufolge max 2. Artikel eingetragen werden -
Auftrag B verwaltet hingegen beliebig viele Artikel pro Auftrag.

Wie baue ich da die Tabelle richtig auf?
Danke für jeden Tipp im Voraus
 

Lesen sie die antworten

#1 Robert Klemme
06/09/2008 - 14:58 | Warnen spam
On 06.09.2008 12:31, Harald Bacik wrote:
Ich suche eine Lösung für mein Problem. & zwar Möchte ich eine Tabelle für
alle meine Auftràge erstellen.
Ich habe 2 grundlegend verschiedene Auftragstypen. - Dafür habe ich alle
benötigten Felder in der Tabelle erstellt. Da komme ich aber schon zu dem
Punkt, wo ich nicht mehr weiter weiß
& zwar: Beide Auftràge müssen Artikel verwalten (logisch...). Das Problem
(für mich) ist jetzt folgendes:
Auftrag A muss 2 Artikel verwalten. - Für die rechte Seite & für die linke
Seite. Pro Auftrag können demzufolge max 2. Artikel eingetragen werden -
Auftrag B verwaltet hingegen beliebig viele Artikel pro Auftrag.

Wie baue ich da die Tabelle richtig auf?
Danke für jeden Tipp im Voraus



Ich würde die Artikel in eine zweite Tabelle packen und dort den
Fremdkey auf Auftrag unterbringen. Das brauchst du für die
1:n-Beziehung (Typ B) sowieso und du erhàltst dir die Flexibilitàt,
spàter noch weitere Auftragstypen hinzuzufügen oder die Anzahl bei Typ A
zu àndern.

Jetzt willst du natürlich noch die Konsistent von Typ A sicherstellen,
d.h., dort sollen immer genau (oder höchstens) zwei Artikel referenziert
sein. Ich arbeite im Moment nicht mit SQL Server, deshalb sind meine
Kenntnisse da etwas rostig. In Oracle würde ich in die Auftragstabelle
ein numerisches Feld einfügen, das die Anzahl der Artikel zàhlt (ggf.
auch nur für Typ A Auftràge). Dieses Feld würde aktualisiert über einen
Trigger und hàtte ein CHECK Constraint, das genau oder maximal zwei
zulàsst. NULL muss natürlich ausgeschlossen werden.

Ich denke, dass etwas àhnliches mit SQL Server auch geht. Man muss
allerdings aufpassen, was für einen Trigger man verwendet. Man sollte
auch im Hinterkopf behalten, dass (àndernde) Zugriffe auf einen Auftrag
serialisiert werden (das muss so sein, weil der Zàhler sonst nicht
korrekt geführt werden kann). Falls parallele Änderungen nötig sind,
wird es heikel. In dem Fall muss man wahrscheinlich extreme Klimmzüge
machen, um das ganze voreinander zu bekommen (wahrscheinlich über
optimistisches Sperren).

Ciao

robert

Ähnliche fragen