Я бы, вероятно, смоделировал эти уровни отдельно, поскольку они рассматриваются как отдельные, то есть:
- dim.Street
- dim.County
- dim. State
Что касается связи с клиентами, я бы пошел для таблиц моста, например:
CREATE TABLE ClientStreet
(
ClientID
, StreetID
)
И т.д.
И если вы не можете предоставитьУлица без предоставления округа и штата, или предоставление округа без предоставления штата, я бы имел в пределах dim.Street, CountyID и в пределах dim.County, StateID, то есть иерархической структуры.
РЕДАКТИРОВАТЬ
Что касается измерений вашего клиента с 3 идентификаторами, это также может быть хорошей моделью.
Что касается моей иерархической структуры и моделирования данных в целом, я чувствую, какВы моделируете, что это действительно нужно:
- Отражать реальность (например, запись улицы клиента, поскольку "[Штат] Калифорния" кажется мне неточной).
- Отражать реальность того, чтовозможно с точки зрения входящих данных, т.е. ваши клиенты вводят своиодеться один раз, или они могут изменить его (вы хотите отслеживать изменения?)?
Мне интересно одно: нужно ли вашим клиентам выбирать один или только один из этих уровней для записи? их адрес в. В этом случае у меня будет либо модель, которую я предложил выше, либо клиентское измерение с 3 идентификаторами и CHECK CONSTRAINT
, чтобы обеспечить заполнение только одного из них. Тогда это будет поддерживаться тем фактом, что у улицы будет идентификатор CountyID и т. Д. Таким образом, вы можете определить этот тип «канала», по которому идентификатор заполняется в измерении клиента.