Я по крайней мере постараюсь сохранить эту краткость.
Предположим, мы отслеживаем остатки на счетах с течением времени.Таким образом, в нашей таблице фактов будут столбцы, такие как ...
Таблица фактов баланса счета
- (FK) AccountID
- (FK)DateID
- ...
- Баланс
- ...
Очевидно, у вас есть Таблица измерений счета и Таблица размеров даты .Так что теперь мы можем легко фильтровать учетные записи или даты (или диапазоны дат и т. Д.).
Но вот к чему больше всего ... Учетные записи могут принадлежать группам - любое количество групп на определенную дату.Группы - это просто логические абстракции, и они не имеют осмысленного значения, кроме целей отчетности.Аккаунт из 0, 1 или 17 групп никак не влияет на его баланс.Например, AccountID 1 может быть в группах 38, 76, 104 и 159. Учетная запись 2 может быть в группе 1 (которая имеет описание группы «Негруппированный». Учетная запись 3 может быть в семнадцати группах (реальный пример).
В качестве дополнительного бонуса, наши пользователи не являются техническими специалистами. Они не знают SQL, не имеют опыта работы с реляционными базами данных и исторически выполнили всю свою работу в замысловатом решении Excel. Прямо сейчас мы 'создавая многомерную модель, которую они могут нарезать и фильтровать с помощью PowerPivot, хотя эти группы учетных записей угрожают превратить безжалостно простую звездную схему во что-то настолько сложное, что пользователи могут отказаться и вернуться к своему текущему решению для спагетти.
Итак, давайте посмотрим на наши варианты ...
Булев метод Булев метод неосуществим. У нас около 570 000 различных учетных записей, но, что более важно, 26 000 различных групп. Это также было быдьявол для конечных пользователей, чтобы фильтровать, так как они нетехнические и полагаются наg на очень простых инструментах, чтобы сделать это.
Метод нескольких столбцов Теоретически это может сработать, однако у нас есть некоторые учетные записи, которые принадлежат 17 группам.Опять же, группы на самом деле просто логические группы - они не имеют смысла, но они необходимы бизнесу для целей отчетности.Если конечные пользователи отфильтровывают группы из 17 различных столбцов, это не приведет к успеху в принятии пользователей и, скорее всего, приведет к тому, что пользователи откажутся от использования решения (и я их не виню).
Таблица бриджа Этот подсчет работает, но у нас есть 26 000 различных групп.Я не нахожу это удобным для пользователя.
Поскольку мне не нравятся мои варианты, я могу только предположить, что есть лучший способ, кроме снежинки ... если только снежинки не являются единственным способом.Если бы кто-то мог протянуть руку и объяснить свое обоснование, это было бы оценено.
ОБНОВЛЕНИЕ: Для пояснения, пример, который я думаю, что каждый здесь может относиться, - представьте, что вы можете перечислитьнавыки ключевых слов в резюме.Все они относятся к одному и тому же человеку, но вы можете иметь любое количество навыков.Навыки не влияют ни на одну из отдельных мер на резюме - то есть «C ++» не более ценен, чем «C #» - вы не можете поместить все комбинации резюме / навыка в таблицу фактов, иначе вы бы закончилидо двойного счета (или более чем в два раза;)).
Я думаю, что лучшее, что я смогу здесь сделать, - это создать таблицу аутригеров для групп.Я не фанат этого, но я думаю, что это единственный реальный вариант, который у меня есть.
Так что теперь у нас есть ...
Таблица фактов баланса счета
- (FK) AccountID
- (FK) DateID
- ...
- Баланс
- ...
Размер учетной записи
- (PK) AccountID
- Имя учетной записи
- ...
- (FK) Ключ группы счетов
Аутригер группы счетов
- (PK) AccountGroupID
- (PK) AccountID)
- Название группы счетов