AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Unique bei 4 verschiedenen Feldern
Thema durchsuchen
Ansicht
Themen-Optionen

Unique bei 4 verschiedenen Feldern

Ein Thema von ATS3788 · begonnen am 15. Jan 2014 · letzter Beitrag vom 29. Jan 2014
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

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

AW: Unique bei 4 verschiedenen Feldern

  Alt 24. Jan 2014, 15:04
Sehe ich das richtig, dass alle 4 Spalten einzeln und in Kombination eindeutig sein sollen? Und dann noch zusätzlich über alle 4 Spalten?
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
jobo

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

AW: Unique bei 4 verschiedenen Feldern

  Alt 25. Jan 2014, 13:10
Sehe ich das richtig, dass alle 4 Spalten einzeln und in Kombination eindeutig sein sollen? Und dann noch zusätzlich über alle 4 Spalten?
So sieht es aus- zumindest anhand der zuletzt gezeigten Constraints und Trigger. Leider hat der TE kaum eine Frage in dieser Richtung wirklich beantwortet.

zum Code:
Ist es unter Firebird notwendig die Werte erst in Variablen zu schreiben?
Sonst kann man direkt new/old Werte in die Statements setzen.

Das Update find ich etwas übertrieben.
Entweder es gibt einen Wert, dann Insert oder es wird einer entfernt, dann delete.

Nun nochmal meine Eingangsbemerkung:
Das Konstrukt ist ziemlich daneben. Der Clou aber ist nun: Die von Dir entworfene Hilfskonstruktion ist ziemlich nahe an dem, wie es normalerweise umgesetzt würde (mit dem Vorteil, das man ohne Modelländerung beliebig viele Werte verwalten kann statt maximal 4)

Diese denormalisierten Felder laufen natürlich auch an jeder anderen Stelle, wo sie verwendet werden, gegen die relationalen Prinzipien und verursachen Extra (Code) Aufwand.

Falls Du das grad erfunden hast, wirf es wieder weg. Falls es sich um ein bestehendes System handelt, versuch lieber, es abzuschaffen.

Das eigenartige bei solchen Lösungen ist ja meist, dass irgendwer meint, auf diese Weise etwas Aufwand zu sparen. "Nein, dafür machen wir nicht extra ne neue Tabelle!"
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#3

AW: Unique bei 4 verschiedenen Feldern

  Alt 27. Jan 2014, 13:21
jobo ich bin Hobby Programmierer. Das funktioniert gut ist es.
Wenn Du eine bessere Lösung weißt nur zu.
Ich habe ein CASE bei
http://stackoverflow.com/questions/2...-unique-fields
aufgemacht und da hat mir jemand dazu geraten. Das Problem ist das
Firebird nur die Uniques in der gleichen Spalte oder Zeile anmeckert.
Ich habe etwas mehr über Datenbanken gelern
und das freut mich sehr. Danke für eure Hilfen.
Martin MIchael
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Unique bei 4 verschiedenen Feldern

  Alt 27. Jan 2014, 13:49
Das Problem ist das
Firebird nur die Uniques in der gleichen Spalte oder Zeile anmeckert.
Ich spekuliere mal, dass das (fast) alle DBMS so machen werden.

Viele der Kommentare bei SO sind aber die selben wie der von Jobo und anderen hier: Du hast zwar eine Lösung für dein Problem gefunden, aber du hättest erst gar nicht das Problem, wenn du deine Tabellenstruktur evtl. anders designed hättest. Darauf wollten die vielen dezenten Hinweise glaub ich hinaus. Da aber nie gesagt wurde, wofür das eigentlich gedacht ist, konnte man nicht konkreter sagen, was man hätte anders/besser machen können, daher immer nur Sätze ala: "Überdenk mal deine Datenstruktur", die nicht böse gemeint waren (so wie ich die lese) sondern als guter Rat gedacht.

Beispiel zu einer Lösung, die deiner ähnelt, einer Normalisierung aber näher kommt könnte sein, deine Dummy-Tabelle so zu gestellten, dass sie drei Spalten hat. Spalte 1 eine ID mit der du sie mit der Haupttabelle verknüpfst. Spalte 2 für die Werte 1-4 die deinen vier Feldern aus der Haupttabelle entsprechen und Spalte drei in der diese "einmaligen" Zahlen kommen sollen.
Schlüssel ist dann Spalte 1. Unique muss die Kombination aus 1 und 2 sein, und Unique muss der Wert in Spalte 3 sein.
Sieht vllt. zunächst nach mehr Arbeit aus, als deine Version, aber man muss weniger programmieren, kann mehr der DB überlassen, und kann's leicht erweitern auf 5 oder 6 Felder in denen die Zahlen eindeutig sein müssen.
Und man sieht in der Dummy-Tabelle, wozu dortige Einträge gehören.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Unique bei 4 verschiedenen Feldern

  Alt 27. Jan 2014, 14:00
Wahrscheinlich habe ich da etwas falsch verstanden, aber wenn die (Schlüssel) in allen 4 Spalten unique sin sollen, warum werden sie nicht von einem Generator erzeugt und gut ist?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Unique bei 4 verschiedenen Feldern

  Alt 27. Jan 2014, 14:10
Es könnte sich aber auch (versteckt) um eine 1:n-Relation handeln. Dann müsste man "nur" die 4 Spalten aus der Haupttabelle löschen und eine weitere Tabelle mit mindestens 3 Spalten anlegen: ID, Fremdschlüsselfeld auf Haupttabelle und Wert. Die letzteren beiden erhalten in Kombination einen eindeutigen Index, und man sollte das erhalten, was anfangs gewünscht war: je Hauptsatz darf jeder Wert nur einmal vorkommen.
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
jobo

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

AW: Unique bei 4 verschiedenen Feldern

  Alt 27. Jan 2014, 15:09
@ATS3788

Ich versteh ehrlich gesagt nicht, warum Du die Gelegenheit nicht nutzt und allen Rätselratenden hier erklärst, wofür die Konstruktion eigentlich gedacht ist.
Dein (akutes) Problem hast Du ja sogar behoben!
Was Du erreichen willst, erklären eigentlich nur Deine- zuletzt selbst gelieferten- Constraints und Trigger auf Basis eines vermutlich unpraktischen Lösungsansatzes.
Es hindert Dich doch niemand zu schreiben, was Du mit diesen 4 Spalten erreichen willst.

Meine und auch die Einwände der anderen sind sicher nicht als Vorwurf zu verstehen, so wie Jumpy es auch bereits geschrieben hat.
Und noch mal zu der "verrückten" Sache an dem Problem: Dein Hilfskonstrukt mit der Dummy Table ist eigentlich für sich allein genommen schon der richtige Weg es umzusetzen! (sofern ich das problem richtig verstanden habe)
Gruß, Jo
  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 04:01 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