使用外键更改表与新表

时间:2009-11-25 18:38:28

标签: sql normalization

我有一个需要进行一些更改的现有数据库。我需要决定是否更改表以记录额外数据,或者使用已经记录该数据的现有表进行单独测试,并使用新表将其链接到另一个表。

现有:

tSubTest(ixSubTest (pk), ixTest (fk))
tPressureVolume( ixPressureVolume (pk), ixSubTest (fk), ...data fields 1...)
tMotorData( ixMotorData (pk), ixSubTest (fk), ...data fields2...)

选项1:

tSubTest(ixSubTest (pk), ixTest (fk))
tPressureVolume( ixPressureVolume (pk), ixSubTest (fk), ...data fields 1...)
tMotorData( ixMotorData (pk), ixSubTest (fk), ...data fields2..., ...data fields 1...)

选项2:

tSubTest(ixSubTest (pk), ixTest (fk))
tPressureVolume( ixPressureVolume (pk), ixSubTest (fk), ...data fields 1...)
tMotorData( ixMotorData (pk), ixSubTest (fk), ...data fields2...)
tMDPVLink( ixMDPVLink (pk), ixMotorData (fk), ixPressureVolume (fk))

基本上它的工作方式是在测试序列开始时进行一次检查压力容量的测试。现在他们想用其他电气数据每隔五分钟记录一次。他们仍将进行初始压力测试。

2 个答案:

答案 0 :(得分:2)

  

我有一个需要的现有数据库   做了一些改变。我需要决定   是否改变一个表来记录   额外数据或使用现有表   已经记录了该数据   单独测试并将其链接到另一个   新桌子。

我不会根据项目后期添加的事实将某些内容添加到单独的表中。

尝试将这些信息保存在一起 - >我宁愿用额外的一两列更新现有的表,而不是创建一个人为的,新的“链接”表。

此规则的唯一例外可能是,如果您有大量的列(例如:10个或更多)构成一个逻辑实体,并且只会在您的业务案例中出现不到10%的列案件。

E.g。如果你有一个特定类型的客户,需要很多额外的领域,但这只是少数客户(如你的“黄金”客户),那么把这些“集群”的数据放到一个单独的表中可能会更好将它链接起来 - 因为否则绝大多数数据库实体的所有字段都将为空(NULL)。

希望有所帮助 - 只是我自己的2美分; - )

答案 1 :(得分:1)

如果同时对所有数据(电机+泵)进行采样,请将所有数据放在一个表中,如下所示:

pump_model_02

如果独立于电机数据采样压力/体积,请使用:

pump_model_03