2017-06-07 7 views
0

Ich habe eine Maßtabelle und mehrere Abstützungen.Mehrere Auslegertische zu einem kombinieren?

create table dimFoo (
    FooKey int primary key, 
    ...... 
) 

create table triggerA (
    FooKey int references dimFoo (FooKey), 
    Value varchar(255), 
    primary key nonclustered (FooKey, Value) 
) 

create table triggerB (
    FooKey int references dimFoo (FooKey), 
    Value varchar(255) 
    primary key nonclustered (FooKey, Value) 
) 

create table triggerC (
    FooKey int references dimFoo (FooKey), 
    Value varchar(255) 
    primary key nonclustered (FooKey, Value) 
) 

Sollten diese Outrigger-Tabellen in einer Tabelle zusammengeführt werden?

create table Triggers (
    FooKey int references dimFoo (FooKey), 
    TriggerType varchar(20), // triggerA, triggerB, triggerC, etc.... 
    Value varchar(255), 
    primary key nonclustered (FooKey, TriggerType, Value) 
)   
+0

Ich würde gerne verstehen, warum sie Ausleger sind. Sie sehen aus wie Textfelder, die Eins-zu-eins mit der Dimensionstabelle selbst sind (auf FooKey getastet), so dass es wahrscheinlich ist, dass sie sich innerhalb der Dimensionstabelle als Spalten befinden. – Rich

+0

Es gibt viele Textelemente für jeden foo. Es ist eine Beziehung von Mensch zu Mensch. – ca9163d9

+0

Wenn also ein PK auf diesen Tischen wäre, wäre es auf fookey + der Wert? – Rich

Antwort

0

Um diese Art von Szenario zu erfüllen, wie zum Beispiel mit dimCustomer mit Kunden möglicherweise mit mehreren Hobbys, der typische Kimball Ansatz ist es, eine Brücke Tabelle zwischen den Dimensionen (dimCustomer und dimHobby) zu verwenden.

This link bietet eine Zusammenfassung, wie Brückentabellen dieses Problem lösen könnten und auch Alternativen, die möglicherweise besser für Sie arbeiten.

Ohne mehr über Ihr spezifisches Szenario zu wissen, einschließlich der Geschäftsanforderungen, wie viele dieser Werttypen Sie haben, wie einheitlich die verschiedenen Werttypen und Werte sind und welche BI-Technologie Sie verwenden Wenn Sie auf die Daten zugreifen, ist es schwierig, eine endgültige Antwort darauf zu geben, ob Sie die Brücken zu einer einzigen Brücke zusammenfassen sollten, die für die verschiedenen Many-to-Manys geeignet ist. All das beeinflusst die Antwort in gewissem Maße.

In der Regel ist der Ansatz "generische Tabellen" für die Verwaltung nützlicher als für die Präsentation für Analysen. Mein Standardansatz wäre es, bestimmte Brückentabellen zu haben, bis dies aus ETL-Sicht nicht mehr handhabbar ist oder aus Sicht der Benutzerabfrage viel komplexer erscheint. Ich würde nicht von Anfang an versuchen, zu einem kombinierten Tisch zu "optimieren".

Wenn Ihre Situation außerhalb der üblichen Normen liegt (haben Sie drei nach Ihrem Beispiel oder zehn?), Könnte die Kombination eine gute Idee sein. Dies würde es eher wie eine Tatsache machen, mit Dimensionen von dimCustomer, dimValueType und dimValue, und wäre eine vollkommen vernünftige Lösung.

+0

In meinem Fall ist das Hobby nur eine Zeichenfolge und ich möchte keine Dimension dimHobby dafür erstellen. Etl wird verwendet, um sicherzustellen, dass die Werte des Hobbys gültig sind. – ca9163d9

+0

Ob Sie sie "kombinieren" sollten, ist sicher, wenn es Ihnen hilft, es besser zu verwalten oder es leichter zu verstehen. Wenn nicht, nicht :-) – Rich

Verwandte Themen