如何设计具有类型和子类型的数据库模式

时间:2014-07-29 18:50:22

标签: sql database database-design database-schema

我已经阅读了很多超类型/子类型线程,我很确定我不会问同一个。

我的数据库中有以下表格。请注意:
1.某些安全类型只需要Type但不需要SubType,例如股票和债券 2. Securties.TypeId是指向Type.ID的外键。
3. Securties.SubTypeId与BondType或DerivativeType表没有外键关系。目前,数据完整性由C#代码维护。

由于缺少外键关系是不好的,我想重构这个DB来拥有它。鉴于此DB已经投入生产,在限制软件风险的同时改进它的最佳方法是什么?也就是说,一种方法是将所有XXXType表组合成一个表并重新排列所有SubTypeId,但显然需要更新Securites表中的大量记录。所以它被认为是一种风险更大的方法,而不是另一种不需要改变价值的方法。

[Securites]
ID     Name         TypeId     SubTypeId
 1     Stock1       2          NULL
 2     Fund1        3          NULL
 3     Bond1        1          3
 4     Deriv1       4          3


[Type]
ID     Name
 1     Bond
 2     Stock
 3     ETF
 4     Derivative

[BondType]
ID     Name
 ...
 2     GovermentBond
 3     CorporateBond
 4     MunicipalBond
 ...

[DerivativeType]
ID     Name
 ...
 2     Future
 3     Option
 4     Swap
 ...       

0 个答案:

没有答案