我有一个表通过外键连接到另一个表;
- 第一张表为品牌;它有一个brand_id和brand_name字段
- 第二表为产品线;它有Line_id和line_name字段
- 第三表是提供的线路;它有id、Brand(来自第一个表的外键)和Line_name(来自第二个表的外键)。
如果我将查看mysql上的第三个表,其中字段包含外键的id号。
我的问题是,是否有可能存储的值将是名称本身,而不是ID?或者是否可以在我的第三个表上添加一个名为Brand_name的字段,这是一个VARCHAR,将显示第一个表中的确切品牌名称。例如,我的第三个表的值是'1','3',' Brand Name of Brand with id no. '。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 |
-------------------------
这个答案不需要那么长。我玩得很开心。