我应该将两个相似的表组合成一个吗?

Joe*_*Joe 4 mysql database database-design

在我的数据库中,我目前有两个表几乎相同,除了一个字段.

为了快速解释,通过我的项目,每年企业向我提交他们销售的供应商列表,并从中购买东西.由于这是每年进行的,我有一个叫做的表sales和一个叫做的表purchases.

因此,在sales表中,我将有领域,如:BusinessID,year,PurchaserID等,以及完全相反会在purchases表中,除了会有SellerID.

所以基本上两个表都是完全相同的字段,除了PurchaserID/ SellerID.我继承了这个系统,所以我没有这样设计DB.我正在辩论将这两个表梳理成一个叫做表的表suppliers,只是添加一个type字段来区分它们是卖给还是购买.

这听起来像个好主意吗?关于为什么这不是一个好主意,我有什么遗漏吗?

J.J*_*.J. 7

做什么对你有用.

教科书的答案正常化.如果您进行了标准化,那么您可能会有2个表,其中一个表与您的买家和卖家一样.还有一个交易表告诉谁从谁那里买了什么.


Bra*_*adC 5

如果它没有坏,就不要修理它。让它们分开。

由于系统已经构建完毕,因此只有当您发现自己在两个表之间进行大量查询(例如大而令人讨厌的 UNION 查询)时,我才会考虑这一点。将两个表连接到一个表中可以使诸如“向我显示在这些日期之间出售/购买的所有卖家或买家......”之类的查询变得更加容易。

但从业务规则的角度来看,这两个群体的待遇似乎非常不同,因此此时可能不值得麻烦地进行应用程序更改。(每个查询都必须有一个“WHERE Type = 1”或类似的东西)。

如果您在数据库设计阶段问过这个问题,我的答案可能会有所不同。