这是我的问题...... 我正在创建一个客户端管理界面,将值保存到SQL 我正在使用SQL / PHP / HTML / JQUERY / CSS等...
当我为每个客户输入一次所有信息时,一切都很好。 即。每个客户有1个或2个电话号码,一个地址等。
当我想存储多个客户的收据号码时,会出现问题。 或者即。同一客户的多个订单。
我可以从一开始,但随着时间的推移,我可能需要存储100个。
这样做的最佳做法是什么?
我想过将逗号分隔的ID存储在SQL中的单个文本记录中 然后检索值,将它们分开并提供它们。
做这种事的最佳方法是什么? 另外,如何命令SQL将值添加到现有字符串的末尾而不是更新它? 每次需要类似的记录时,我可以自动向sql添加一列吗?
答案 0 :(得分:5)
您可以将其保存为逗号分隔值,但这是非常糟糕的做法,最终会变得很难维护。
这里需要的是SQL规范化。
例如,在收据的情况下,您有两个表,一个用于客户,一个具有唯一的ID字段,另一个用于收据,其中包含两列,即客户ID和收据编号,因此您的客户详细信息的表格如下:
Customers:
CustomerId INT
Address TEXT
Email TEXT
另一张收据表:
Receipts:
CustomerID INT
ReceiptNum VARCHAR(9)
然后获取该客户的所有收据
SELECT *
FROM Receipts
WHERE CustomerID = @ID
并添加新收据:
INSERT INTO Receipts (CustomerId, ReceiptNum)
VALUES (@ID, @Receipt)
这是一个非常宽松的描述,但我希望它能让你了解你需要做什么。
更新
如果您在客户表中有2个客户,那么为您提供一个样本的样本:
CustomerId Address Email
1 Here test@test.com
2 There test2@test.com
客户1有2个收据,而客户2有3个收据:
CustomerId ReceiptNum
1 abcdde10
1 qwerty10
2 1234-1234
2 0987-0987
2 abcd-efgh
所以我的想法是,对于每一个额外的信息,你只需要添加另一行。这样,您可以为一个客户提供1位信息,为另一个客户提供20位信息,但为了以防万一,您无需定义20个备用字段。
答案 1 :(得分:1)
答案 2 :(得分:0)
最佳做法是拥有一个拥有客户端ID的客户表。然后有收据或订单的表格或客户可能有多个其他的。在收据表中,您还指定了客户端ID,它充当客户端表的一种“链接”或外键。然后,您可以相应地构建查询以检索客户端收据列表