【发布时间】:2011-12-16 18:15:55
【问题描述】:
示例:包含不同金属的名称和特性(密度、颜色、熔点等)的数据库,我可能已经从一个来源(网站、书籍、...)和熔化中找到了密度值从另一个指向,我想让它可以从任何给定值的来源检索。
简单的解决方案是为所有属性创建一个“密度”列和一个“密度源”列等等,但这似乎是解决这个问题的一种非常冗长的方法。是的,“密度源”可以是一个简单的整数,另一个表格说明了源。
从某种意义上说,我希望在字段中添加脚注之类的内容。
【问题讨论】:
-
用 [MaterialID, Property, Value, Source] 创建一个表格并像 [mercury, 'meltingPoint', -39, "website here" 那样填充不是更容易吗?
-
数据库设计没有“正确的方法”。您应该考虑您的用例、数据特征等。您希望哪些查询应该快速运行?有多少数据?
-
@jclozano - 虽然要小心,但这是一种 EAV(实体-属性-值)设计,它有一些有趣(通常令人沮丧)的缺点。不过,这可能是使用它的合适时间。虽然,如果通常有一组通用属性(密度、原子序数等)的通用数据源,那么至少应该将它们拉到自己的表中。
-
@X-Zero 完全同意,有它的缺点,但是当需要灵活性时它可以完成工作:)
-
@jclozano - 当我读到你的评论时,我刚刚有我的“Duh”时刻,当然这看起来是正确的做事方式。从某种意义上说,当我说我想链接两个字段时,答案是创建两个表并将它们链接起来。当我应该从输入端思考时,我仍然从输出端思考。