gpt4 book ai didi

sql-server - 设计这个数据库场景的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 15:26:48 26 4
gpt4 key购买 nike

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

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

处理这个问题的最佳方法是什么?

解决方案 1:

公司表

  • 公司 ID

部门表

  • 部门ID

员工表

  • 员工 ID

附件类型表

  • 类型 ID
  • 类型(公司、部门、员工)

附件表

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

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

缺点:在这种情况下,我无法在实体和附件之间维护外键关系。

解决方案 2:

公司表

  • 公司 ID

部门表

  • 部门ID

员工表

  • 员工 ID

公司附件表

  • 附件 ID
  • 公司 ID (FK)

部门附件表

  • 附件 ID
  • 部门 ID(外籍)

员工附件表

  • 附件 ID
  • 员工 ID(外籍)

优点:外键完整性

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

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

<小时/>

编辑 1:

谢谢各位的回复。

如果我想采用解决方案 2,我发现在附件表中创建新列比为每个实体创建新的附件表只是为了映射它们更容易?类似的东西,

公司表

  • 公司 ID

部门表

  • 部门ID

员工表

  • 员工 ID

附件

  • 附件 ID
  • 公司 ID (FK)
  • 员工 ID(外籍)
  • 部门 ID (FK)

我在这里遗漏了什么吗?

最佳答案

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

关于sql-server - 设计这个数据库场景的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com