AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu 1:1 Beziehung

Ein Thema von Frickler · begonnen am 25. Jan 2019 · letzter Beitrag vom 28. Jan 2019
Antwort Antwort
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
591 Beiträge
 
Delphi XE6 Enterprise
 
#1

Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 11:43
Datenbank: Firebird • Version: 3 • Zugriff über: egal
Ich habe eine Tabelle, zu der es eine weitere Tabelle in einer Art 1:1 Beziehung gibt. Nicht zu jedem Datensatz der Haupttabelle gibt es einen Eintrag in der Nebentabelle, aber zu einigen. Und es ist immer genau einer. Dass das mal mehr werden, kann ich aus der Struktur der Daten absolut ausschließen.

Bei so einer Verbindung brauchts in der Nebentabelle keine Trennung zwischen PK und FK, sondern der PK ist gleichzeiting auch der FK.

Jetzt meine Frage: ist es sinnvoll, die FK-Beziehung quasi umzudrehen? Also statt einen FK in der Nebentabelle den FK in der Haupttabelle unterzubringen? Ist der ungleich NULL, zeigt er auf den Eintrag in der Nebentabelle (die dann natürlich einen eigenen PK hat). Der Vorteil, den ich da sehe, wäre halt, dass ich auf einen Blick (ohne separate Abfragen oder Joins) sehen kann, ob es einen Eintrag in der Nebentabelle gibt; ist der FK NULL, gibts keinen, ist er NOT NULL, gibts einen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 11:47
Das hätte aber den Nachteil, dass man nicht mehr über eine einfache Löschregel (ON DELETE CASCADE) die Detaildatensätze automatisch löschen kann, wenn man den Masterdatensatz löscht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 11:53
Ich bin kein Freund von Löschregeln. Ich würde aber trotzdem die Master/Detail-Beziehung nicht umkehren. Abzufragen ob ein 0 dürfte von der Performance her auch nicht schneller sein als ein Join.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 11:58
Es wäre ein "ungewöhnlicher" Ansatz. Läuft einem vielleicht mal in die Hacken (oder Kollegen)
Was das "direkt sehen, dass .." angeht:
Sprichst Du hier wirklich von Sehen oder von Prüfcode in Delphi?
Falls Du der DB etwas Arbeit sparen willst, es ist quasi eine ganz normale Aufgabe auf einem (sowieso indizierten) PK nach Existenz zu schauen oder zu joinen.

P.S.: Löschregeln finde ich auch problematisch wie mkinzler.
Gruß, Jo
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 12:01
Hallo,
die Frage ist, wie oft braucht man diese Information und wie oft andere.
Danach richte ich immer meine Datenstruktur aus in der Hoffnung, dass sich nicht groß was ändert.

Ich würde das nicht machen, eben weil mal ein Kollege nicht erwartet, dass bei genau diesen Tabellen alles anders rum gesetzt ist.
Heiko
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 12:15
Nachtrag:
Mglw. hast Du ja im jetzigen Hauptdatensatz bereits Infos, die eigentlich bereits abbilden, dass es Detaildaten geben muss. Die könntest Du zum "Sehen" dann nutzen. Ggf. kannst du das auch explizit modellieren und wie bei den Persitenzsystemen eine Spalte für diese Info spendieren. Dazu kann man dann auch wieder einen Constraint anlegen, der das überwacht.
Alternativ noch eine Bastelvariante: eine "zentrale"(oft gebrauchte) Spalte aus der neuen Detailmenge in die Originalmenge aufnehmen. Die liefert dann durch Existenz (not null) den Indikator. (verbraucht immer noch weniger Platz (oder gleichviel, je nachdem) als eine Reverse FK)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Frage zu 1:1 Beziehung

  Alt 25. Jan 2019, 12:25
Ich sehe keine Notwendigkeit, das Schema so zu verbiegen.

Man kann für die Haupttabelle immer noch eine View erzeugen, welche die Information liefert.
Will man keine View, dann kann man in der Haupttabelle auch ein berechnetes Feld (select first 1 id from Detail) anlegen.

Egal, ob man von Löschregeln etwas hält oder nicht.
Man muss sich ja nicht die Möglichkeiten verbauen, wenn man es dann doch mal braucht.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
591 Beiträge
 
Delphi XE6 Enterprise
 
#8

AW: Frage zu 1:1 Beziehung

  Alt 28. Jan 2019, 16:01
Danke für Eure Hilfe.

Obwohl ich inzwischen alle Programme umgestellt habe, kommt zuweilen noch die BDE-Denke durch, JOINs möglichst zu vermeiden wegen Bremseffekt...
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Frage zu 1:1 Beziehung

  Alt 28. Jan 2019, 17:24
Hal,
ne, das lag nicht an der BDE direkt, sondern am local SQL.
Ich hatte damals die BDE und Interbase, da war der Join schön schnell.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz