好吧,这就是我的问题。
我有一个选择的项目,他们的名字是;
UAT-1型
UAT-2型
UAT-3型
每个项目都有“节”,但不是每个项目都有与上一个相同的节。例如,UAT-1将具有“红色”、“绿色”、“蓝色”部分。
UAT-2的秒数为“红色”、“棕色”、“紫色”
UAT-3将包含“金”、“银”、“红”部分
针对这个问题,设计MySQL表的最佳方法是什么?我在想一些事情;
项目
+-----+-----------+
|id |item_name |
|-----|-----------|
|1 |UAT-1 |
|2 |UAT-2 |
+-----+-----------+
部分
+-------------------------------+
|id |section_name |belongs_to |
|-----|-------------|-----------|
|1 |Red |1 |
|2 |Green |1 |
|3 |Blue |2 |
|4 |Purple |1 |
| | | |
| | | |
+-------------------------------+
但是,如果两个部分属于一个项目,我将如何处理?
谢谢!
最佳答案
一种方法是添加一个中间表。这让您的“项目”和“部分”作为不同的记录存在。
项目:
+-----+-----------+
|id |item_name |
|-----|-----------|
|1 |UAT-1 |
|2 |UAT-2 |
+-----+-----------+
部分:
+--------------------+
|id |section_name |
|-----|--------------|
|1 |Red |
|2 |Green |
|3 |Blue |
|4 |Purple |
+--------------------+
项目说明:
+---------------+
|item |section |
|---------------|
|1 |1 |
|1 |2 |
|1 |4 |
|2 |3 |
+---------------+
您将使用以下查询获取特定项的节:
SELECT
Sections.*
FROM
Sections
RIGHT JOIN ItemsSections
ON Sections.id = ItemsSections.Section
WHERE
ItemsSections.item = 1