php 关联一对多 条数,php – 适当的数据结构,以保持一对多的关系

我想在数据库中表示文档.有几种不同类型的文件.所有文件都有一些共同点,但并非所有文件都相同.

例如,假设我有一个基本的文档表…

TABLE docs (

ID

title

content

)

现在让我们说我有一个可以属于用户的文档子集,并且可以有与之关联的其他信息.我可以做以下……

TABLE docs (

ID

userID -> users(ID)

title

content

additionalInfo

)

…但是这会导致表中有很多空值,因为只有一些文档属于用户,而不是全部.所以相反,我创建了第二个表“ownedDocs”来扩展“docs”:

TABLE ownedDocs (

docID -> docs(ID)

userID -> users(ID)

additionalInfo

)

我想知道:这是正确的方法吗? (我很担心,因为虽然一切都在一个表中,但我在文档和用户之间有一对多的关系.但是,通过创建一个新的表ownedDocs,数据结构看起来像我在docs之间有多对多的关系和用户 – 永远不会发生.)

在此先感谢您的帮助

解决方法:

“by creating a new table ownedDocs,

the datastructure looks like I have a

many-to-many relationship between docs

and users – which will never occur.)”

如果将OwnedDocs.DocId设为主键,则很明显1:N关系是不可能的.

零或一对一关系的建模是棘手的.如果我们只有一个子类型,那么具有NULL列的单个表是一种合理的方法.但是,最好确保仅在适当时填充子类型属性.在给定的示例中,这意味着检查约束以强制执行此规则:

check (userID is not null or AdditionalInfo is null)

或者甚至可能是这条规则:

check ( (userID is not null and AdditionalInfo is not null)

or (userID is null and AdditionalInfo is null) )

属性之间的关系不会显示在ERD中(除非您使用命名约定).当然,在第二种情况下,所拥有文件的AdditionalInfo的强制性质不会很明显.

一旦我们有几个这样的子类型,单独表格的情况变得引人注目,特别是如果子类型构成弧形,例如文档可以是FinancialDocument,也可以是MedicalDocument或PersonnelDocument,但不能超过一个类别.我曾经使用一个包含大量空列,视图和检查约束的表来实现这样的模型.那太差了.子类型表肯定是要走的路.

标签:php,mysql,sql,database-design,schema

来源: https://codeday.me/bug/20190606/1189938.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值