我正在尝试设计一个应用程序来保存学术参考信息.问题是每种不同类型的参考(例如期刊文章,书籍,报纸文章等)都需要不同的信息.例如,期刊参考既需要期刊标题,也需要文章标题,还需要页码,而书籍需要出版商和期刊文章不需要的出版日期.
因此,我是否应该将所有引用存储在我的数据库中的一个表中,并且当它们不适用时将字段留空,或者我应该有各种表,例如BookReferences,JournalReferences,NewspaperReferences,并在每个表中放入适当的引用.那么问题是它会使搜索所有参考文件变得更加困难,并且编辑也可能需要更加单独地进行.
(顺便说一句,我打算在这个项目中使用Ruby on Rails,但我怀疑这对这个设计问题有什么不同)
更新:
还有更多观点吗?我希望得到一个简单的答案,说一个特定的方法肯定被认为是"最好的" - 但通常事情并不像这样简单.单表继承选项看起来很有趣,但是我没有太多关于它的信息我可以很容易地找到 - 我可以在这个网站上发布另一个问题.
我在奥尔瓦克的回答和科里的答案之间分开了.科里的回答给出了奥尔瓦克不是最好的理由,但奥尔瓦克的答案给出了科里为什么不是最好的理由!我从没意识到这可能会如此困难......
进一步的建议非常感谢!
与简单地将所有数据存储在一个表中相比,使用一对一表关系有什么好处?我一直理解并使用一对多,多对一和多对多,但实现一对一的关系似乎是一项单调乏味且不必要的任务,特别是如果你使用命名将(php)对象与数据库表相关联的约定.
我在网上或网站上找不到任何可以提供一对一关系的真实世界范例的例子.起初我认为将"用户"分成两个表可能是合乎逻辑的,一个表包含公开信息,如关于我的个人资料页面和一个包含私人信息(如登录/密码等)等.但为什么要去通过使用不必要的JOINS的麻烦,你可以选择从该表中选择哪些字段?如果我正在显示用户的个人资料页面,显然我只会选择id,用户名,电子邮件,aboutme等,而不是包含其私人信息的字段.
有人想用一对一关系的一些真实世界的例子来启发我吗?