添加行是否比添加列更好,以防它们的值不一致?

Bor*_*ode 0 join database-design sql-server

在我的项目中,我有一张客户表,每个客户对每种产品都有自己的特价,这是一家小型企业,目前大约有 5 种产品。经理说以后可能会有更多的产品,但业务不会超过30个产品。对我来说,不创建特殊产品表而是向客户表添加列(每个新产品 - 新列)更容易。

人们建议我不要这样做,但我没有得到解释为什么仍然无法理解为什么在这种情况下产品的价格没有关系(每个客户都有自己的特价)在产品表中添加行比添加列更好产品到客户表?我能想到的唯一好处是只有 5 个产品的客户不必“携带”20 个可为空的产品(节省服务器空间)?

任何帮助将不胜感激

小智 7

首先,它是关于规范化的。今天你最多有 30 种特殊产品,明天(或者 10 年后)你可能需要另外 5 种。你需要编写更多的代码,但毕竟你会有更大的灵活性。至少您不需要编码(或设计)30 列!您可以拥有这样的架构:

CREATE TABLE Product (ProductId...)
CREATE TABLE Customer (CustomerId...)
CREATE TABLE CustomerProductPrice (ProductId, CustomerId, Price...)
Run Code Online (Sandbox Code Playgroud)

在第三个表中,您可以输入产品/客户的价格,但请记住在外键列(如 ProductId、CustomerId)上创建唯一约束。