我有一个表通过外键连接到另一个表;
第一个表是品牌;它有一个品牌id和品牌名称字段
第二个表是产品线;它有一个Line-id和Line-name字段
第三个表是提供的行;它有一个id、Brand(第一个表中的外键)和Line_name(第二个表中的外键)。
如果我要查看mysql上的第三个表,那么这些字段包含外键的id号。
我的问题是,是否可能存储的值是名称本身而不是ID?或者可以在我的第三个表中添加一个名为Brand_name的字段,它是一个VARCHAR,将显示第一个表中的确切品牌名称。例如,我的第三个表的值是“1”、“3”、“id号为3的品牌名称”、“25”;-如果是的话,我不知道该怎么做。
最佳答案
没有什么能阻止你这么做。您只需将brand_name
字段添加到“第三个表”。。。我想问的问题是:你为什么要这样做?
brands
_________________________
| brand_id | brand_name |
| 1 | brand1 |
| 2 | brand2 |
| 3 | brand3 |
| 4 | brand4 |
| 5 | brand5 |
-------------------------
lines
_________________________
| line_id | line_name |
| 1 | line1 |
| 2 | line2 |
| 3 | line3 |
| 4 | line4 |
| 5 | line5 |
-------------------------
linked
_________________________________________________
| id | line_id | brand_id | brand_name |
| 1 | 5 | 1 | brand1 |
| 2 | 5 | 2 | brand2 |
| 3 | 4 | 2 | brand2 |
| 4 | 4 | 3 | brand3 |
| 5 | 4 | 3 | brand3 |
| 6 | 3 | 4 | brand4 |
| 7 | 3 | 4 | brand4 |
| 8 | 2 | 4 | brand4 |
| 9 | 2 | 5 | brand5 |
| 10 | 1 | 5 | brand5 |
------------------------------------------------
这是你提议的设置。如果我们:
SELECT brand_id, brand_name FROM linked WHERE line_id = 4;
我们会得到:
_________________________
| brand_id | brand_name |
| 2 | brand2 |
| 3 | brand3 |
| 3 | brand3 |
-------------------------
但是,如果没有重复数据(在大型数据库中,这样的重复数据是不合理的),并且不需要每次品牌名称更改时都更新链接表和品牌表,那么可以使用以下方法来实现相同的目的:
SELECT linked.brand_id, brands.brand_name
FROM brands, linked
WHERE linked.line_id = 4 AND brands.brand_id = linked.brand_id;
_________________________
| brand_id | brand_name |
| 2 | brand2 |
| 3 | brand3 |
| 3 | brand3 |
-------------------------
答案不需要那么长时间。我做桌子玩得很开心。