组织MySQL客户/数据表

时间:2011-05-23 21:46:14

标签: php mysql

我有一个MySQL表,其中包含客户编号,客户名称和项目编号。它比这复杂一点,但我尝试简化它并删除敏感数据。

CURRENT TABLE

Unique Customer Number | Customer Name | Item Number
10001                  | Bob           | 20001
10001                  | Bob           | 20002
10001                  | Bob           | 20003
10002                  | Tim           | 20002
10003                  | Frank         | 20001
10003                  | Frank         | 20003

我想将其分解为几个表,以便更容易使用。我在考虑类似的事情:

CUSTOMER TABLE

Unique Customer Number | Customer Name
10001                  | Bob
10002                  | Tim
10003                  | Frank

ITEM TABLE

Unique Customer Number | 20001 | 20002 | 20003
10001                  | YES   | YES   | YES
10002                  | NO    | YES   | NO
10003                  | YES   | NO    | YES

有没有更好的方法来组织这个? 我如何编写PHP代码以将CURRENT TABLE分离到我的新CUSTOMER / ITEM TABLE中?

2 个答案:

答案 0 :(得分:2)

您希望使用联结表来解决客户和项目之间的多对多关系。类似的东西:

enter image description here

答案 1 :(得分:1)

Eww ......作为列的项目...非常糟糕的想法......你最终可能会得到50多列,基本上没什么......

Customers ( CustomerNumber, CustomerName, ... )
Items ( ItemNumber, ItemDescription, ... )
CustomerItemMapping ( CustomerNumber, ItemNumber )

CustomerItemMapping两个字段都是相应表值的外键(即CustomerNumber映射到Customers.CustomerNumber字段)。