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

前端之家收集整理的这篇文章主要介绍了sql-server – 设计此数据库场景的最佳方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
要求是存储不同实体类型的附件.

假设我们有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的专业人士不是真正的专业人士.如果添加新实体,则必须已经为该实体添加新表,并且您已经在添加或更改现有代码来处理它.您应该能够创建一些处理模式的通用对象,以便重复的代码不是问题.

猜你在找的MsSQL相关文章