Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zirkulare DataSet Beziehungen (https://www.delphipraxis.net/172034-zirkulare-dataset-beziehungen.html)

Morphie 10. Dez 2012 08:24

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC

Zirkulare DataSet Beziehungen
 
Hi,

ich habe zwei Tabellen in meiner Datenbank:
Personen und Anschriften

Personen hat u.a. folgende Felder:
ID (PK)
HauptanschriftID (FK)

Anschriften hat u.a. folgende Felder:
ID (PK)
PersonID (FK)


Ich kann somit einem Partner beliebig viele Anschriften zuordnen.
Bei bedarf kann ich einem Partner aber auch eine Hauptanschrift zuordnen. Andernfalls ist HauptanschriftID = null.

Kann ich dieses Konstrukt jetzt irgendwie über drei Queries von IBDAC (Master / Detailfields) abbilden?
1. Query für die Person
2. Query für die Anschriften (soweit funktioniert alles)
3. Query für die Hauptanschrift - hier weiß ich nicht, wie ich die Query einstellen muss,
bzw. mit DetailFields = ID;PERSONID
und MasterFields = HAUPTANSCHRIFTID;ID
werden vorhandene Datensätze richtig und ohne Fehlermeldung dargestellt, aber beim Insert einer neuen Person gibt es die Fehlermeldung
Code:
Variante des Typs (Null) konnte nicht in Typ (Int64) konvertiert werden.
Die Generator in der Query sind eigentlich auch richtig eingestellt


Oder habe ich einen Designfehler in der Datenbank?

jaenicke 10. Dez 2012 09:04

AW: Zirkulare DataSet Beziehungen
 
Diese Kreuzbeziehung macht wenig Sinn. Ein Feld, das in der Adressenliste angibt, dass es sich um die Hauptanschrift handelt, (oder auch eine Rangfolge in der Adressliste als kundenbezogener Integerwert) macht denke ich viel mehr Sinn.

DeddyH 10. Dez 2012 09:12

AW: Zirkulare DataSet Beziehungen
 
Man könnte sogar über eine eigene Tabelle für die Hauptanschriften (bestehend aus FK auf Person und FK auf Anschrift) nachdenken. Wenn man sicherstellen will, dass eine Person maximal eine Hauptanschrift haben darf, ist das damit schnell erledigt, indem man einen UNIQUE KEY auf die Personen-ID anlegt.

jobo 10. Dez 2012 10:03

AW: Zirkulare DataSet Beziehungen
 
Zitat:

Zitat von DeddyH (Beitrag 1194906)
Man könnte sogar über eine eigene Tabelle für die Hauptanschriften (bestehend aus FK auf Person und FK auf Anschrift) nachdenken. Wenn man sicherstellen will, dass eine Person maximal eine Hauptanschrift haben darf, ist das damit schnell erledigt, indem man einen UNIQUE KEY auf die Personen-ID anlegt.

Wenn man "soweit" geht, würde ich hier direkt noch einen Typschlüssel spendieren und diese n:m Tabelle für die beliebige Klassifizierung der Anschriften nutzen.
Eine Anschrift kann auf diesem Weg Hauptanschrift sein und/oder beliebiges anderes Zeug (Lieferadresse Produktion, Rechnungsanschrift, privat..).


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz