2011-08-11 89 views
1

我有一個表通過外鍵連接到另一個表;操縱MYSQL中的外鍵輸出

  1. 第一表是品牌;它有一個brand_id和brand_name字段
  2. 第二個表是產品線;它有一個Line_id和line_name字段
  3. 第三個表是提供的行;它有一個ID,品牌(這是第一個表中的外鍵)和Line_name(它是第二個表中的外鍵)

如果我將查看mysql上的第三個表,外鍵的ID號

我的問題是這樣的,存儲的值可能是名稱本身而不是ID?或者是否可以在第三個表中添加一個名爲Brand_name的表這是一個VARCHAR,它將顯示第一個表格中的確切品牌名稱。例如,我的第三個表格的值爲'1','3','ID爲3的品牌品牌','25'; - 如果是的話,我沒有任何想法如何去做。

回答

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 | 
------------------------- 

這個答案並不需要是 那麼長。我很樂意製作桌子。