Benutzer mit den meisten Antworten
Sind indirekte Referenzen valide?

Frage
-
Hey,
ich habe mal eine Designfrage. Ich habe eine Tabelle mit dem Namen Errors. In dieser sollen alle Errors abgelegt werden die in verschiedenen Entitäten aufgetreten sind. Zum Beispiel habe ich eine Tabelle Computation. Wenn bei einer Berechnung etwas schief gegangen ist, dann möchte ich die Fehler die bei der Berechnung aufgetreten sind in der Errortabelle speichern. Es können mehrere Errors pro Computation auftreten. Es kann aber auch andere Entitäten, wie zum Beispiel eine Tabelle SingleResult, geben die auch Errors haben kann. Ein SingleResult kann dann ebenfalls mehrere Errors haben.
Ich habe nun zwei Möglichkeiten. Die erste Möglichkeit ist, dass ich eine ComputationToError- und SingleResultToError -Tabelle mache und dadurch jeweils eine Many-To-Many Beziehung herstelle was ja durchaus richtig wäre. Allerdings müsste ich dann für jede Entität die Errors haben könnte eine neue Zwischentabelle anlegen.
Die zweite Möglichkeit die ich sehe ist, dass ich der jeweiligen Entität die einen Error haben könnte, also zum Beispiel die Computation und SingleResult Tabelle, einfach eine GUID Spalte hinzufüge.
In der Errortabelle füge ich auch eine Spalte RefGUID hinzu. Wenn es zu einer Entität einen Error gibt, dann generiere ich einfach eine neue GUID und schreibe diese einfach in die GUID Spalte der Entität und in die RefGUID Spalte der Errortabelle.
Der Vorteil ist das ich nicht für jede Entität eine eigene Tabelle anlegen muss, der Nachteil ist das ich keine direkte Referenz mehr habe.Meine Frage ist nun... was ist besser und ist der zweite Ansatz überhaupt legitim?
Danke für eure Anregungen,
Roman
Antworten
-
Hallo Roman,
ich würde ausschließlich eine Relation für die Fehler erstellen [dbo].[tbl_error].
Wie genau die Fehler generiert werden, hast Du nicht beschrieben aber grundsätzlich würde ich in der genannten Relation den Namen der Fehlerrelation sowie den Primärschlüssel des Datensatzes speichern.Dieses Szenario hat Vor- und Nachteile:
Vorteil: zentrale Verwaltung Deiner Fehlermeldungen
Nachteil:
keine DRI möglich
ev. großer Primärschlüssel (Name der Tabelle + PK der RelationenNicht möglich, wenn die PK der Quellrelationen unterschiedliche Datentypen und Attribute besitzen!
Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 14. November 2012 17:50
Alle Antworten
-
Hallo Roman,
ich würde ausschließlich eine Relation für die Fehler erstellen [dbo].[tbl_error].
Wie genau die Fehler generiert werden, hast Du nicht beschrieben aber grundsätzlich würde ich in der genannten Relation den Namen der Fehlerrelation sowie den Primärschlüssel des Datensatzes speichern.Dieses Szenario hat Vor- und Nachteile:
Vorteil: zentrale Verwaltung Deiner Fehlermeldungen
Nachteil:
keine DRI möglich
ev. großer Primärschlüssel (Name der Tabelle + PK der RelationenNicht möglich, wenn die PK der Quellrelationen unterschiedliche Datentypen und Attribute besitzen!
Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 14. November 2012 17:50
-
Hallo gokTyBalD,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.