我有以下格式的数据。
RoadAccidents (pk_accidentIdentifier)
关系为1..*
至Vehicles(fk_accidentIdentifier, ordinalNumber)
->
天然PK(复合)和代理,仅为rowID
)。
ordinalumber
只是一个可以迭代参与事故的车辆的数字。
--Sample Row
Accident001, 1, [list of attributes of a vehicle] -- 1st car involved in an inc
Accident001, 2, [list of attributes of a vehicle] -- 2nd car involved in an inc
Vehicles
与1..*
的关系Casualties
,其关联方式与车辆RoadAccidents
相同}含义:
Casualties (Compound PK: (fk_vehicleID, casualtyOrdinalNumber)
--Sample Row:
Vehicle001, 1, [list of attributes of a casualty] -- 1st casualty involved in inc
Vehicle001, 2, [list of attributes of a casualty] -- 2st casualty involved in inc
所以关系如下。
RoadAccidents 1..* Vehicles 1..* Casualties
此外,表格RoadAccidents
已经汇总了numberOfVehiclesInvolved
和numberOfCasualties
的衡量标准。
fact tables
RoadAccident -> Vehicles -> Casualties
上的两个加入 - >删除具有汇总数字的列 - >将属性提取到各自的维度。松散的汇总数据 - >没有有意义的措施 - >在SQL Server数据工具中创建度量。
有3个事实表。 FactRoadAccident
,FactVehiclesCollision
,FactCasaultiesInvInCollision
我面临的问题:事实表不应该直接用外键链接。因此,我可以提取尺寸,例如。
DimRoadAccident *..1 DimRoadAccidentLocation
DimRoadAccident` *..1 DimWeatherConditions
事实表如下:
FactAccident
(fk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties
)。
采用这种方法。 Vehicles
和Casualties
的事实表只是代理FK,其ID为Vehicle
或Casualty
。唯一的衡量标准是行数,即 - Vehicles
的数量或Casualties
的数量。
FactAccident
(fk_DimRoadAccidentPK, measure_numberOfVehicles, measure_numberOfCasualties
)。
维度已链接DimRoadAccident 1..* DimVehicle 1..* DimCasualty
并在数据工具中创建了层次结构,并可能在维度上创建一些新的半加性度量。
你会建议什么样的appraoch?
答案 0 :(得分:-1)
使用Bridge表。当您具有多对多关系时,将使用桥表。见http://www.kimballgroup.com/2012/02/design-tip-142-building-bridges/