0

(Это мой первый вопрос когда-нибудь задавали так, пожалуйста, медведь со мной здесь, ребята)SQL мульти значение размера

Я создал хранилище данных на SQL Server 2014 Enterprise и я борюсь отображение факта для нескольких значений в одном измерение.

Представьте себе дата-центр с серверами, зарезервированными для конкретных услуг и клиентов. Эти серверы имеют определенные компоненты, такие как сетевые адаптеры, процессоры или операционные системы.

Несколько строк из моей таблицы фактов будут выглядеть следующим образом:

ServerID CustomerID OSID ServiceID NetworkGroupID CPUID 
1   1   1  1   1    1 
2   1   2  1   2    1 
3   2   1  2   2    2 

Сервер 1 и 2 принадлежит Заказчику 1. Сервер 1 под управлением ОСАМИ 1, другой ОС 2. Как обеспечить обслуживание 1. Сервер 1 имеет набор сетевых адаптеров, обозначенных как «1», другой 2. Эти наборы содержат несколько сетевых адаптеров (некоторые виртуальные, некоторые физические).

My Network Dimension имеет атрибуты ID и NetworkAdapterName и я должен был бы идентификатор появляться несколько раз вот так:

ID NetworkAdapterName 
1  IntelAdapter#1 
1  IntelAdapter#2 
1  VirtualAdapter#1 
2  IntelAdapter#1 
2  DellAdapter#1 
3  VirtualAdapter#1 
3  VirtualAdapter#2 

Я полагал, что нужен какой-то к югу от размерности выступает в качестве моста, как так:

NetworkGroupID NetworkID 
    1    1 
    1    2 
    1    3 
    2    1 
    2    5 
    3    3 
    3    4 

NetworkID NetworkAdapterName 
1   IntelAdapter#1 
2   IntelAdapter#2 
3   VirtualAdapter#1 
4   VirtualAdapter#2 
5   DellAdapter#1 

Но как бы я быть в состоянии определить первичный ключ или отношение в целом из таблицы фактов к измерению моста, так как существует несколько выступлений одного и того же значения, как NetworkGroupID?

(То же самое происходит с процессором и операционной системой, но как только я получаю это работает для сетевых адаптеров, я смог бы сделать это для других компонентов, а также.)

Edit: В конце концов, я хочу построить куб в SSAS, который может показать мне несколько компонентов, которые есть у одного сервера.

ответ

0

Вы можете создать таблицу (или измерение), определяющий NetworkGroup:

CREATE TABLE NetworkGroup (
    NetworkGroupID int   not null PRIMARY KEY, 
    Name   nvarchar(50) null 
); 

Затем с помощью "моста" таблицу (ака Junction Table), чтобы присоединиться к нему с Network таблицей:

CREATE TABLE NetworkGroupNetwork (
    NetworkGroupID int not null, 
    NetworkID  int not null, 

    CONSTRAINT PK_NetworkGroupNetwork 
     PRIMARY KEY (NetworkGroupID, NetworkID), 

    CONSTRAINT FK_NetworkGroupNetwork_NetworkGroup 
     FOREIGN KEY (NetworkGroupID) 
     REFERENCES NetworkGroup (NetworkGroupID), 

    CONSTRAINT FK_NetworkGroupNetwork_Network 
     FOREIGN KEY (NetworkID) 
     REFERENCES Network (NetworkID) 
); 
+0

[Design Совет № 124 Альтернативы для многозначных измерений] (http://www.kimballgroup.com/2010/06/design-tip-124-alternatives-for-multi-valued-dimensions/) тоже стоит прочитать. –

+0

Это то, о чем я думал, но как я смогу создать ограничение с PK NetworkGroup на составной PK в NetworkGroupNetwork? – Starbuckz

+0

Это наоборот; Ограничение связано с одним из столбцов в «NetworkGroupNetwork» с PK «NetworkGroup». Аналогично тому, что у вас есть между вашей таблицей фактов (столбец CustomerID) и таблицей Customer. –

 Смежные вопросы

  • Нет связанных вопросов^_^