2017-04-19 13 views
0

MySQL Workbench에서 Forward Engineer 툴을 사용하여 입력 한 테이블을 기반으로 데이터베이스를 생성했습니다. 나는 게임 Stardew Valley 주변에 구축하고있는 데이터베이스에 대해 "Villagers", "Fish"및 "Items"와 같은 테이블을 채울 수있었습니다. 그러나 ER 다이어그램에서 테이블을 링크 할 때 Cooking_Has_Fish와 같은 관계를 기반으로 새로운 테이블을 만들었습니다. 많은 물고기가 많은 요리법에서 사용될 수 있고 많은 요리법이 많은 물고기를 사용할 수 있기 때문입니다. 그러나 일단 Cooking 및 Fish 테이블에 채워지면 생성 된 Cooking_Has_Fish 테이블에는 아무 것도 없습니다. 이 테이블의 기능 또는 사용 방법을 이해하려고 시도하거나 채워야 할 필요가있을 때 뭔가 놓쳤습니다.MySQL Workbench 포워드 엔지니어 관계 테이블

읽어 주셔서 감사합니다.

답변

1

표가 자체적으로 채워지지 않는 경우 표가 채워지는지 확인해야합니다. 다 대다 관계에 대해 생성 된 세 번째 테이블은 associative or junction table이고 최소한 가입하는 두 테이블의 기본 키를 포함합니다.

당신이 recipe_id 식별 레서피와 fish_id 식별 물고기가있는 경우, 다음 Cooking_Has_Fish 표는 적어도 recipe_idfish_id 필드있을 것입니다.

insert into Cooking_Has_Fish (`recipe_id`, `fish_id`) values (1,2) 

이는 대구가 "피쉬 앤 칩스에 필요한 의미 : 당신이 cod (fish_id 2 인)와 fish and chips (recipe_id 1) 연결하려는 경우

는, 당신은 다음과 같은 삽입 할 것 ". 피쉬 앤 칩스에 필요한 대구 (cod) 수와 같은 필드를 협회 테이블에 추가 할 수 있습니다.

요약 : 다 대다 관계를 갖는 엔티티 (테이블)를 서로 연관시키려는 방식에 따라 연관 테이블을 채워야합니다.

+0

고챠, 설명해 주셔서 감사합니다. 그건 의미가 있습니다. 따라서 연결 테이블에 id 값만있는 경우 ID와 관련된 이름과 같은 필드를 더 추가하는 것이 더 낫습니까? 그 표를 ​​ID로만 채우면 매우 도움이되지 않을 것이라고 생각합니다. – Babeeshka

+1

아니요, 이름을 추가하면 안됩니다.이 이름은 주 테이블에 저장되며 조인으로 검색 할 수 있습니다. 아마 당신은 더 이상 진행하기 전에 관계형 데이터베이스 디자인에 대한 책/튜토리얼을 읽어야합니다. 왜냐하면 분명히 당신은 기본이 부족하기 때문입니다. 이것에 아무런 문제가 없습니다. 우리 모두 거기에있었습니다. 그러나 기본없이 앞을 향해 뛰어 가려한다면 데이터베이스를 엉망으로 만듭니다. – Shadow