2011-08-11 5 views
1

외래 키를 통해 다른 테이블에 연결된 테이블이 있습니다.MYSQL에서 외래 키 조작

  1. 첫 번째 표는 브랜드입니다. brand_id 및 brand_name 필드가 있습니다.
  2. 두 번째 테이블은 제품 라인입니다. Line_id 및 line_name 필드가 있습니다.
  3. 세 번째 테이블은 제공되는 라인입니다. id, Brand (첫 번째 테이블의 외래 키) 및 Line_name (두 번째 테이블의 외래 키)

mysql의 세 번째 테이블을 살펴 보려면 외래 키의 ID 번호

제 질문은 이것이 저장된 값이 ID 자체가 아닌 이름이 될 수 있습니까? 아니면 세 번째 테이블에 브랜드 이름으로 필드를 추가 할 수 있습니까? 첫 번째 테이블의 정확한 브랜드 이름을 표시하는 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 | 
------------------------------------------------ 

제안 된 설정입니다. 이제 우리는 경우 :

_________________________ 
| brand_id | brand_name | 
|  2 | brand2 | 
|  3 | brand3 | 
|  3 | brand3 | 
------------------------- 

을하지만 같은 중복 데이터없이 달성 될 수있다 (큰 데이터베이스에서이 같은 중복 데이터가 꽤 무리입니다), 그리고 않고 :

SELECT brand_id, brand_name FROM linked WHERE line_id = 4;

우리는 얻을 것

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

다음과 같이 사용하면 브랜드 이름이 바뀔 때마다 링크 된 테이블과 브랜드 테이블을 업데이트해야합니다. 그렇게 오래. 나는 테이블 만드는 재미를보고 있었다.