【发布时间】:2008-10-14 08:39:06
【问题描述】:
我正在尝试设计一个应用程序来保存学术参考信息。问题是每种不同类型的参考资料(例如期刊文章、书籍、报纸文章等)都需要不同的信息。例如,期刊参考文献需要期刊标题和文章标题以及页码,而书籍需要出版商和出版日期,而期刊文章不需要。
因此,我应该将所有参考文献存储在数据库的一个表中,并且在它们不适用时将字段留空,还是应该有各种表,例如 BookReferences、JournalReferences、NewspaperReferences,并在每个表中放置适当的参考文献一。那么问题将是它会使搜索所有参考文献变得更加困难,而且编辑可能不得不更加独立地进行。
(顺便说一下,我计划在这个项目中使用 Ruby on Rails,但我怀疑这对这个设计问题有什么影响)
更新:
对此还有更多看法吗?我希望得到一个简单的答案,说一种特定的方法绝对被认为是“最好的”——但像往常一样,事情并不像这样简单。 Single-Table Inheritance 选项看起来很有趣,但我可以很容易地找到关于它的信息不多 - 我可能会在此站点上发布另一个关于此的问题。
我分为Olvak's answer 和Corey's answer。 Corey 的回答很好地说明了为什么 Olvak 不是最好的,但 Olvak 的回答很好地说明了为什么 Corey 不是最好的!我从来没有意识到这会如此困难......
非常感谢任何进一步的建议!
【问题讨论】:
-
我真的很喜欢这个问题,谢谢。我一直在考虑与电子商务环境中的 Product 表有关的类似问题,这里的答案很容易适用于此。干杯。
-
只是想知道:您希望拥有多少条记录?显然只是一个大概的数字。我认为这也应该是最终决定的一个因素。
-
如果您在 Olvak 和 Corey 的答案之间挣扎,请查看投票。与 DBs 合作了 15 年,我更喜欢 Olvak 的解决方案。投票似乎也表明这也是正确的方法。
-
@Tom H:好点子。我绝对倾向于他的解决方案
-
@nickf:很好的问题——问题是我真的不知道。那里肯定会有数百个不同的参考资料(只是为了支持我自己的个人使用),但我计划将它作为一个公共 web 应用程序,以便它可以以一种疯狂的方式起飞(我们总是希望!)跨度>