使用一个字段来指定公司作为客户更好,还是让相关客户 table 可能只有一个字段(FK 和 PK 合二为一)更好?

Is it better to use a field to nominate a Company as a Customer, or to have a related Customer table with probably only one field (FK and PK in one)

我正在重新设计我们的服务应用程序,并在此过程中解决了一些非常糟糕的架构问题。尝试尽可能使用最佳实践构建替代品。

我有一家公司 table 而不仅仅是客户,因为识别不是客户的公司(供应商、承包商等)通常很有用。我正在尝试决定是否最好在应用程序的相关部分简单地包含一个布尔字段,该字段由一个将相关公司标识为客户的复选框表示(一旦客户附加了服务,它将变为 uneditable ),或者我是否应该有一个单独的 table,它基本上只是一个引用公司 ID 的字段,而公司 ID 又被任何子记录引用。

This similar question 询问可以是几种子类型之一的记录。虽然问题本质上不同(每项政策似乎只是潜在子类型之一,而公司可以是 任何或全部 of Customer/Supplier/Contractor 等)它的相似性与事实相结合它有多个相互矛盾的答案,这增加了没有全行业共识的可能性,因此:

这里有既定的最佳实践吗?我没有立即看到其他字段应包含在潜在客户 table 中的任何理由,但我愿意接受这样的想法,即可能...这是选择 B 的充分理由吗?或者这是一个明显的 YMMV 情况,两种选择都有好处,要么同样有效?

I should, instead, have a separate table that's basically just a single field referencing the Company ID that is in turn referenced by any child records.

可能有几个适用于客户但不适用于非客户公司的属性,因此 CompanyID 最终可能不会成为客户的唯一属性。

因此,如果是这种情况,明确的选择是拥有一个单独的客户 table。