2010-11-23 3 views
1

그래서 InnoDB 테이블 (제품) 및 (카테고리)를 사용해야합니다. Products 테이블의 "Category"필드와 Categories 테이블의 "CategoryId"사이의 관계를 설정하고 싶습니다.MySQL 데이터베이스의 외래 키 관계 설정을위한 도움이 필요합니다.

FK를 만들려고하면 제품 테이블에서 Primary Key "ProductsId"를 선택하고 Categories 테이블의 PK "CategoryId"에 매핑 할 수 있습니다.

아마도 외래 키를 설정하는 길/이유가 누락되었습니다.

1)이 범주가 존재해야합니다 추가 할 때 제품이 카테고리에 추가 할 필요했다 또는 당신이 먼저 만들어야합니다 : 만약 내가 잘못 내 생각을 말해합니다. 제거하려는 범주에서 제품을 제거하기 위해 (프로그래밍 방식으로 또는 DB 백엔드에서) 일부 작업을 수행하지 않으면 카테고리를 제거 할 수 없습니다.

2) ProductsId 값이 Category 테이블의 범주 필드에 저장 될 것으로 예상했습니다. 그런 다음 내보기에 표시 할 때 Categories.Name 값으로 Categories.Name 필드를 찾아야합니다.

편집 : 그래서 외래 키에 관련된 두 필드는 크기, 유형 등이 같아야합니다. 그러나 ProductId와 CategoryId를 연결하는 것이 내가 위에서 언급 한 것과 관련하여 어떻게 작동하는지 알고 싶습니다. ProductId와 CategoryId 사이에 FK를 만들었을 때 제품 레코드를 추가하지 않겠습니다.

또한 카테고리 이름 필드와 제품 카테고리 필드는 같은 유형인데, 외래 키 탭에있는 옵션을 선택하는 옵션이 없습니다.

카테고리 테이블이 어떤 카테고리의 제품인지 알 수 있도록 어떻게 설정해야합니까?

+0

당신은 맞는 생각이 있습니다. 하지만 우리가 당신을 도울 수 있기 전에 어떻게 FK를 설치하려고합니까? SQL 문을 사용하거나 phpMyAdmin과 같은 일부 관리 도구를 사용합니까? –

+0

MySQL Workbench를 사용하고 있습니다. - "테이블 변경"을 선택하고 "제품"테이블을 선택하십시오. 그곳에서 외래 키 - 외래 키 설정. – pghtech

+0

참조 테이블에서 Categories 테이블을 선택합니다. 오른쪽 섹션에서 모든 제품 열을 나열하지만 "카테고리"필드를 선택 표시하지 않습니다. "ProductId"필드 만 선택하고 "참조 된 열"열 아래의 "CategoryId"필드를 제공합니다. – pghtech

답변

2

불행히도, 나는 내 자신의 질문에 대답해야합니다. 내 기술적 인 문제의 대부분은 "색인을 생성해야합니다"라는 필드가 있기 때문에 발생합니다.

내가 겪었던 포괄적 인 문제는 Products 테이블에서 실제 "범주"varchar 필드를 제거하고 CategoryId 필드의 Category 테이블에있는 값만 가진 CategoryId 필드를 만들어야한다는 것이 었습니다.

이제 Products.CategoryId 값을 통해 Categories.Name 필드를 참조해야합니다.

적어도 이것은 내가 이해하게 된 것입니다.

1

Workbench를 사용중인 경우 FK에 관련된 두 열의 유형, 길이 및 속성이 동일한 지 확인하십시오.