인프런 커뮤니티 질문&답변

류재안님의 프로필 이미지
류재안

작성한 질문수

데이터지도 ERD를 그려보자, MySQL 워크벤치

관계선 안쪽 작도의 의미

[관계선 안쪽 작도의 의미](1:22) titles 테이블 작성관련

작성

·

130

·

수정됨

1

안녕하세요. titles 테이블을 만들때 emp no컬럼을 만들지 않고 1:n 관계도를 클릭 후 titles, employees 테이블을 클릭하는 방식으로 emp no fk를 추가하였는데요.

통일성을 위해 컬럼이름을 emp_no로 바꿔주고, indexes 탭에서도 이름을 fk_emp_no_idx로 바꿔주었습니다만.

Foreign_Keys탭으로 가서 보면 Foreign Key 는 기존대로 남아 있고 함께 이름이 바뀌지 않던데요.

Foreign keys 의 기존 이름 "fk_titles_employees1" 을 "fk_emp_no_idx" 로 맞춰주긴 했는데요.

 

indexes 에 표시되어 있는 이름과 foreign key 이름을 동일하게 하지 않아도 상관이 없을까요??

답변 1

0

안녕하세요 반갑습니다 류재안 님.

결론부터 말씀드리면, 동일하든 다르든 상관없습니다.(맞추어 주지 않아도 됩니다) 물리적으로는 ForeignKeys탭에(이하 F탭) 명시된 이름들을 활용해 객체가 생성되기 때문입니다.

MySQL워크벤치 ERD 화면에서 하단의 Indexes탭에(이하 I탭) 'fk_'로 표시되는 인덱스들은 PK 혹은 직접 유저가 생성한 인덱스가 아니라면 다소 상징적인 면이 있습니다. '외래 키를 생성하면 반드시 인덱스가 생성된다'라는 사실을 알려주는 정도라고 생각하시면 됩니다.

따라서 나중에 Forward Engineer 등의 기능을 통해(ERD->테이블생성) 실제 물리적인 테이블 객체를 생성하고 나면, ERD 하단에 보이는 탭들 중 F탭에 정의된 내용으로 ForeignKey가 생성됩니다. I탭에 정의된 FK명은 나타나지 않습니다.(워크벤치에 숨겨진 또 다른 설정이 있다면 모르지만요)

 

(테이블 생성 스크립트 실례)

CREATE TABLE titles (

emp_no varchar(8) NOT NULL,

title varchar(50) NOT NULL,

from_date date NOT NULL,

to_date date DEFAULT NULL,

PRIMARY KEY (`emp_no`,`title`,`from_date`),

CONSTRAINT emp_no1 FOREIGN KEY (`emp_no`) REFERENCES employees (`emp_no`) ON DELETE NO ACTION ON UPDATE NO ACTION

);

류재안님의 프로필 이미지
류재안

작성한 질문수

질문하기