加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 设计此数据库场景的最佳方法?

发布时间:2020-12-12 16:27:13 所属栏目:MsSql教程 来源:网络整理
导读:要求是存储不同实体类型的附件. 假设我们有3个实体类型Company,Department和Employee.每个都可以有多个附件(文档). 哪种方法最好? 解决方案1: 公司表 CompanyId 部门表 DeptId 员工表 EmployeeId AttchmentType表 TypeId 类型(公司,部门,员工) 附件表 Attac
要求是存储不同实体类型的附件.

假设我们有3个实体类型Company,Department和Employee.每个都可以有多个附件(文档).

哪种方法最好?

解决方案1:

公司表

> CompanyId

部门表

> DeptId

员工表

> EmployeeId

AttchmentType表

> TypeId
>类型(公司,部门,员工)

附件表

> AttachmentId
> TypeId(映射到附件类型)
> entityId(映射到CompanyId / DeptId / EmployeeId)

优点:我将来可以轻松添加新的实体类型

缺点:在这种情况下,我不能在实体和附件之间保持外键关系.

解决方案2:

公司表

> CompanyId

部门表

> DeptId

员工表

> EmployeeId

公司附件表

> AttachmentId
> CompanyId(FK)

DeptAttachments表

> AttachmentId
> DeptId(FK)

EmployeeAttachments表

> AttachmentId
> EmployeeId(FK)

优点:外键完整性

缺点:为了添加新实体,我需要单独添加新的附件表.

那么假设我将来可能需要添加新实体,这是最好的方法吗?

编辑1:

谢谢你们的回复.

如果我想使用解决方案2,我会看到在附件表中创建新列更容易,而不是为每个实体创建新的附件表来映射它们?
就像是,

公司表

> CompanyId

部门表

> DeptId

员工表

> EmployeeId

附件

> AttachmentId
> CompanyId(FK)
> EmployeeId(FK)
> DepartmentId(FK)

我在这里错过了什么吗?

解决方法

我肯定会选择解决方案#2.你解决方案#1的专业人士不是真正的专业人士.如果添加新实体,则必须已经为该实体添加新表,并且您已经在添加或更改现有代码来处理它.您应该能够创建一些处理模式的通用对象,以便重复的代码不是问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读