【发布时间】:2021-08-07 10:58:44
【问题描述】:
假设我有两个实体:Company 和 Order。
公司:
Id
Name
Phone
订单:
Id
CompanyId
Name
TotalAmount
我简化了这些实体,在实际项目中它们要大得多。
在我的应用程序中,我有一个公司视图,我可以在其中执行基本的 CRUD 操作。订单也是如此。
当我创建订单时,我必须从我的数据库中选择公司。问题是我必须允许用户为每个订单修改公司数据,因此只能为特定订单修改。
我有两个解决方案:
第一个解决方案: 创建一个单独的表 OrderCompany,我可以在其中存储每个订单的公司数据副本。在这种情况下,我可以编辑副本,它不会影响原始公司,但我有疑问,因为它将是 Contacts 表的完整副本,只有一个附加字段 - OrderId。
第二种解决方案: 将公司的副本直接存储在 Companies 表中,并在此表中添加 OrderId。原始公司将使用 OrderId = null 存储,对于副本 OrderId 将被分配。在这种情况下,我没有像第一个解决方案那样有 2 个几乎相同的表,但我不确定将原件和副本存储在同一个表中是否是个好主意。
您认为这两种解决方案中哪一种更好?也许有更好的方法?
【问题讨论】:
标签: sql database-design relational-database