将一个表中的多行分配给第二个表(MySQL)中的一个单元格
好的,我们有将一个表中的多行分配给第二个表(MySQL)中的一个单元格,mysql,normalization,multiple-value,Mysql,Normalization,Multiple Value,好的,我们有表1(T1)和表2(T2) 结构: T1 (main table): ID (Auto-Increment) Name Properties T2 (properties table): ID Property Name 假设表1有两个条目表2有4个属性。 我要做的是将表1中条目1的属性设置为映射到表2中的属性1、2和3。对于表1中的条目2,我想将其映射到表2中的属性2、3和4 例如,假设我们有两个乘积,一个球和一个立方体。这些将列在表1中。现在让我们假设表2包含所有可用的颜色
表1
(T1)和表2
(T2)
结构:
T1 (main table):
ID (Auto-Increment)
Name
Properties
T2 (properties table):
ID
Property Name
假设表1
有两个条目<代码>表2有4个属性。
我要做的是将表1
中条目1的属性设置为映射到表2
中的属性1、2和3。对于表1中的条目2,我想将其映射到表2中的属性2、3和4
例如,假设我们有两个乘积,一个球和一个立方体。这些将列在表1
中。现在让我们假设表2
包含所有可用的颜色
Table 2:
ID COLOR
1 RED
2 BLUE
3 GREEN
4 YELLOW
Table 1:
ID NAME AVAILABLE_COLORS
1 BALL (TABLE 2 ENTRY 1, TABLE 2 ENTRY 2, TABLE 2 ENTRY 3, in other words RED BLUE GREEN)
2 CUBE (TABLE 2 ENTRY 2, TABLE 2 ENTRY 3, TABLE 2 ENTRY 4, in other words BLUE GREEN YELLOW)
如何获取可用颜色以指向颜色表?基本上,我想确保如果我更改了一个属性(比如说红色->黑色),它会自动为所有表1条目更改
通常,如果我只需要为一个项目指定一种颜色,而该颜色不能在另一个项目中使用,我只需在表2中添加一列“属于”或类似的内容,这样我就可以设置多种颜色以匹配表1中的同一条目,我只能通过这种方式为一个条目指定一种颜色。。。我不能同时给球和立方体分配红色
有人知道吗 我通常会创建第三个表来跟踪哪些产品有哪些颜色。比如说目录表。它存储的所有内容都是主ID、产品ID和颜色ID
Table 3: Catalog
ID ColorsID ProductsID
1 1 1 // row one connects with colors and products and this is a red ball
2 2 1 // blue ball
3 1 2 // red cube
4 4 2 // yellow cube
通过这种方式,您可以根据需要将任意多个属性连接到产品。它需要更多的工作来跟踪您的目录,但从长远来看,这会使事情变得更容易。从产品中删除可用颜色,并仅在该表中存储产品ID和产品名称。任何其他类似标准的描述都不一定会随颜色而改变。这样,如果您将可用颜色从3更改为10,则无需添加新字段来跟踪。您还可以获取目录并添加额外字段,如“活动”或“库存”,以跟踪当前是否有该颜色的产品。在目录中,您还可以存储库存编号。如果你的价格因颜色不同怎么办?白球更便宜?所有正常数据的充分理由
规范化是确保每个表只有最小的字段,并消除依赖关系。
从理论层面来看,这个公认的答案很好地解释了规范化。
然后可以使用联接将它们全部连接到目录表中的循环
SELECT Colors.ColorID as Color, Products.ProductID as Product
FROM Catalog
INNER JOIN Colors
ON Catalog.ColorsID = Colors.ColorID
INNER JOIN Products
ON Catalog.ProductsID = Products.ProductID
更多关于连接的信息可以在这里找到-Awesome!谢谢你的回复,这正是我要做的!当您必须向目录中添加新字段和属性(如价格)或需要多种颜色或其他任何颜色时,它使事情变得更加容易。