2011-06-16 123 views
0

目前我有具有以下格式的表模型:确保列之间的参照完整性在表

标准(criteria_id,CRITERIA_NAME)

criteria_data(criteria_id,值)

我打算将与日期相关的信息存储到表格中,这是因为一个标准(日期标准)可能只包含criteria_data表中的单个日期,而其他criteria_data可能是dat的股票价格在一个单独的行中。 (另一个复杂因素是:股票的名称也是一个标准)

我的问题:

怎么可能对我来说,以确保只有1价格(单列标准)可以输入到表对于特定的日期和股票名称(2个其他单独的标准和行)。

我真的不想在应用层强制执行此操作,因此我主要查找数据库层解决方案(如果可用)。

如果建议更合适的数据模型,我也会被告知要取消整个表模型。

感谢

编辑 被告知我的愚蠢的后(见dPortas后下),我接受,这是不是要走聪明的办法。我想到了一个新的模式:

criteria_data(stockName,价格,高,低,价格的变化)

虽然这是个什么样子,我想到的是实际的列名是一个标识符包含criteria_id。例如,stockname字段可以是col_1,而high可以是col_3,但这可以确保我可以在各个列上实施完整性。

这是什么人的想法?

回答

1

您的餐桌设计看起来像EAV的情况。反模式的缺点在于,您无法准确地存储正确的数据类型或对其应用约束。我建议你重新考虑设计。

建议重新设计:标准(criteria_id,CRITERIA_NAME,日期,stock_name,价格)键:(stock_name,日期)

+0

那个傻EAV的事情正是我想达到但设计**可能不**正是因为我在寻找一种有效的方法来引用不同的领域,例如使用独立领域的高价格,低价格和当前价格。我编辑了我的帖子,以反映您对EAV/OTLT链接的精彩观察 – 2011-06-16 16:49:46

+0

+1 – 2011-06-16 17:48:48