none
Sind indirekte Referenzen valide? RRS feed

  • 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

    Mittwoch, 7. November 2012 15:57

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 Relationen

    Nicht 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

    Mittwoch, 7. November 2012 17:36

Alle Antworten