小编puz*_*led的帖子

设计此数据库方案的最佳方法?

要求是存储不同实体类型的附件.

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

哪种方法最好?

解决方案1:

公司表

  • CompanyId

部门表

  • DEPTID

员工表

  • 员工ID

AttchmentType表

  • TYPEID
  • 类型(公司,部门,员工)

附件表

  • 附件ID
  • TypeId(映射到附件类型)
  • entityId(映射到CompanyId/DeptId/EmployeeId)

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

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

解决方案2:

公司表

  • CompanyId

部门表

  • DEPTID

员工表

  • 员工ID

公司附件表

  • 附件ID
  • CompanyId(FK)

DeptAttachments表

  • 附件ID
  • DeptId(FK)

EmployeeAttachments表

  • 附件ID
  • EmployeeId(FK)

优点:外键完整性

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

那么假设我将来可能需要添加新实体的最佳方式是哪种?


编辑1:

谢谢你们的回复.

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

公司表

  • CompanyId

部门表

  • DEPTID

员工表

  • 员工ID

附件

  • 附件ID
  • CompanyId(FK)
  • EmployeeId(FK)
  • DepartmentId(FK)

我在这里错过了什么吗?

sql-server database-design

7
推荐指数
2
解决办法
2262
查看次数

标签 统计

database-design ×1

sql-server ×1