#database #database-design #dimensional-modeling
#База данных #база данных-дизайн #dimensional-моделирование
Вопрос:
Для этого примера мы можем рассмотреть таблицу фактов «Сверхавария». Если есть факт аварии, будет один водитель и несколько водителей (в контексте совместного использования поездок). Поскольку традиционное хранилище данных OLAP не поддерживает такие структуры, как Карты, как создать такую таблицу фактов?
Большая часть примеров в книге Ральфа-Кимбалла предназначена для статических групп, таких как владельцы нескольких учетных записей или множественный диагноз в факте. Однако все они являются статической «группой мостов измерений»
Есть ли лучший способ, чем dimension-bridge-group, для решения этой проблемы в DW (например, Vertica. Teradata ) где нет структуры карты?
DIM_DRIVER
DRIVER_SK
ИМЯ_ДРАЙВЕРА
DIM_RIDER
RIDER_SK
ИМЯ_ПУТЕШЕСТВЕННИКА
FACT_ACCIDENT
ACCIDENT_ID_DD
DRIVER_SK
КАК добавить несколько участников???
Комментарии:
1. Это отношение «многие ко многим», и вам понадобится ассоциативная таблица для привязки водителей к авариям.
2. Привет — можете ли вы уточнить, какие у вас проблемы с группой-мостом измерений, что означает, что вы ищете лучшее решение, т.Е. каково ваше определение «лучше»?
3. @NickW Если есть миллион аварий, то может быть 5 миллионов гонщиков… таким образом, название Dimension-bridge является неправильным, тогда это становится фактом .. поскольку соединение факта с фактом нехорошо.. Я должен создать fact_accident_details, а затем сделать его похожим… accident_dd, driver_id .. поэтому при необходимости я могу выполнить детализацию… Однако мне не нужна дополнительная таблица ФАКТОВ… если DW находится на озере, то я могу использовать MAP struct и хранить в Parquet в ORC.. В Redshift или Vertica у меня нет структуры КАРТЫ.. итак, моя дилемма заключается в выборе между FACT_ACCIDENT_DETAIL и Bridge-Dimension …
4. Я не уверен, откуда, по вашему мнению, берется вторая таблица фактов / зачем это нужно? У вас есть измерение Riders со всеми вашими Riders и таблица Riders-Group с ключами для RiderGroup и Rider. Когда вы добавляете запись к факту аварии, вы генерируете новый ключ RiderGroup, заполняете им таблицу фактов и добавляете записи в таблицу Riders-Group, по 1 на каждого гонщика, с помощью RiderGroup SK и Rider SK
5. @NickW С точки зрения количества записей таблица измерений Riders-Group-Bridge содержит больше записей, чем таблица фактов об авариях … так следует ли ее называть Fact-Riders-Group?? Измерения должны быть меньше фактов …