好吧,这就是我的问题。
我有一个选择的项目,他们的名字是;
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

10-06 03:08