Frage

Bericht können mehrere Diagramme haben. Die Übersicht Tabelle sieht wie folgt aus:

  • Übersicht - Id ChartID ReportID , ...

Die ChartID oben können zur Karte der ChartID entweder ein der folgenden Diagrammtypen:

  • Line : ChartID Stärke yaxis XAxis Farbe , ...
  • Pie : ChartID Radius Farbe , ...
  • Bar : ChartID Breite Farbe Border , .. .

Ich bin mit SQL Server und unglücklicherweise alternative Lösungen wie mit CouchDB etc. sind nicht tragfähige Optionen. Ich beabsichtige auch diese Tabellen Einheiten mit Entity Framework abzubilden.

Dieser Entwurf ist mein erster Stich, und ich sehe mehrere Probleme mit diesem Entwurf:

  1. Übersicht . ReportID kann kein Fremdschlüssel auf mehreren Tabellen sein, so ein FK Durchsetzung ist ein Problem.
  2. Wenn Sie eine SQL (Oder Linq) Abfrage ausgeführt wird, werde ich tun müssen, um entweder zu laufen zwei Abfragen den Diagrammtyp zu bekommen und dann die Tabelle abzufragen. Oder ich werde eine laufen müssen beitreten gegen alle Tabellen, die die Kartendaten zu erhalten.
  3. Wenn dabei eine Verknüpfung gegen die Chart-Typen, die ChartID über diese Tabellen eindeutig sein müssen, so Diagramm . ChartID Karten nur eine von Line . ChartID oder Bar . ChartID oder Pie . ChartID .
  4. Mapping dies mit EF wird schwierig sein.

Ich könnte mir vorstellen, dies ein gemeinsames Problem genug ist, dass es Lösungen sind vorgeschrieben und etablierten Möglichkeiten, es zu behandeln.

Bin ich auf dem richtigen Weg mit dem Design? Und wenn ja, wie die oben genannten Probleme zu überwinden (FK, verbindet sie, eindeutige ID auf mehreren Tabellen und Abbildung).

Lösung

Die beantworten ist recht umfassend über die Strategien. Und SQL-Team Artikel über Implementierung Tabelle Vererbung in SQL Server hat mich, wo ich wollte.

War es hilfreich?

Lösung

Haben Sie darüber nachgedacht, die Charts in der gleichen Tabelle setzen und mit einer Tabelle pro Hierarchie Vererbung Muster? Der Link dorthin zeigt, wie dies in Entity Framework implementieren. Unabhängig davon, ob es ist lebensfähig, hängt, wie unterschiedlich all diese Diagrammtypen sein wird und wie viele Felder die jeweils benötigen.

Es gibt auch Tabelle pro Typ Erbe, das mehr ähnlich ist zu dem, was Sie bereits zu beschreiben.

Andere Tipps

würde ich angehen dies mit einem Tabellenvererbungsschema:

Chart (ChartId, ChartTypeId)
   PK (ChartId, ChartTypeId)
   CHECK ChartTypeId IN ('Line', 'Bar', 'Pie')

LineChart (ChartId, ChartTypeId)
   PK (ChartId, ChartTypeId)
   FK (ChartId, ChartTypeId) -> Chart
   CHECK ChartTypeId IN ('Line')

Sie ein Diagramm hinzuzufügen, fügen Sie zuerst auf den „Basis“ Kartentisch, und dann auf den entsprechenden „Subtyp“ Kartentisch. Die Check-Einschränkungen halten alles im Einklang.

Liniendiagramme. Kreisdiagramme und Balkendiagramme sind spezielle Formen der Charts.

Lookup „Generalisierung Spezialisierung relationale Modellierung“ für gute Artikel zu diesem Muster.

  

Oder ich werde eine Verknüpfung laufen haben gegen   alle Tabellen, um die Kartendaten zu erhalten.

Ja, und das ist in Ordnung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top