我有一个表通过外键连接到另一个表;
第一个表是品牌;它有一个品牌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   |
-------------------------

答案不需要那么长时间。我做桌子玩得很开心。

09-25 17:39
查看更多