在MYSQL中操作外键输出

时间:2011-08-11 03:32:18

标签: php mysql foreign-key-relationship

我有一个表通过外键连接到另一个表;

  1. First Table是品牌;它有一个brand_id和brand_name字段
  2. 第二张表是产品系列;它有一个Line_id和line_name字段
  3. 第三张表是提供的行;它有一个id,Brand(来自第一个表的外键)和Line_name(来自第二个表的外键。
  4. 如果我将查看mysql上的第三个表,则字段包含外键的id号。

    我的问题是,存储的值可能是名称本身而不是ID吗?或者是否可以在我的第三个表上添加一个名为Brand_name的字段,这是一个VARCHAR,它将显示第一个表中的确切品牌名称。示例我的第三个表的值将是'1','3','ID为品牌的品牌名称。 3' , '25'; - 如果是的话,我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

没有什么能阻止你这样做。你只需要在“第三个表”中添加一个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   |
-------------------------

答案不需要那么久。我很开心制作桌子。