RS7*_*RS7 0 mysql database database-design join one-to-one
什么时候应该使用一对一的关系?什么时候应该添加新字段?什么时候应该将它们分成新表?
在我看来,只要你对字段进行分组和/或该组往往是可选的,你就会使用它.是?
我正在尝试为一个对象创建表,但是分组/分离一切都需要我大约20个连接,有些甚至是4个级别.
难道我做错了什么?我该如何改进?
首先,我强烈建议您阅读普通表格
规范化的关系数据库非常有用,正确地执行此操作是Hibernate等工具存在的原因 - 帮助管理对象表示为关系映射和对象作为progrommatic-entities之间的差异.
任何具有一对一映射的东西都应该在同一个表中.一个人只有一个名字,一个姓氏.这些应该在逻辑上位于同一个表中.不需要引用名称表 - 特别是因为可以存储关于名称的额外数据.显然,这并不总是正确的(词源数据库可能想要做到这一点),但对于大多数用途,你并不关心名称的来源 - 实际上你想要的只是名字.
因此,请考虑所表示的对象.一个人有一些奇异的数据点,以及一些一对多的关系(例如他们居住过的地址).一对多和多对多几乎总是需要一个单独的表(或两个,有多对多).遵循这两个准则,您可以非常快速地获得规范化数据库.
请注意,如果可能的话,应该避免使用可选字段.通常,这是一个具有单独的表的情况,该表将字段与引用一起返回到原始表.尽量让你的桌子保持精益.如果一个字段不太可能有某些东西,它可能应该是它自己的表中的一行.许多这样的属性建议一个'Property'表,它可以保存特定类型的任意可选属性(即,应用于'Person').
归档时间: |
|
查看次数: |
389 次 |
最近记录: |