발자취

#06-2 exERD 활용한 모델링 실습 본문

3-1/데이터베이스

#06-2 exERD 활용한 모델링 실습

해린 2023. 8. 12. 03:21

#01 간단한 exERD 활용 실습

 
1. exERD 새 모델링 파일 생성하기

[파일] – [새로 작성] – [exERD File]에서 대상 DBMS를 MySQL로 설정한 뒤 완료를 누릅니다.
 
 
2. 테이블 추가하기

‘새 테이블을 만듭니다.’ 아이콘을 눌러 ‘학생’, ‘수강’, ‘교수’ 테이블을 생성했습니다.
 
 
3. 기본키 지정하기

[Ctrl+Shift+Enter]를 눌러 기본키를 생성합니다. 각 테이블에 ID라는 이름의 기본키를 생성했고, INTEGER 타입으로 설정했습니다.
 
 
4. 컬럼 지정하기

[Ctrl+Enter]를 눌러 컬럼을 생성합니다. ‘학생’과 ‘교수’ 테이블에 ‘이름’. ‘이메일’, ‘전화번호’, ‘나이’, ‘성별’ 컬럼을 추가했고, 수강 테이블에 ‘과목명’ 컬럼을 추가했습니다.
 
 
5. 물리 모델링 모드 – 영어 이름 추가

물리 모델링 모드에서는 기본키와 컬럼명이 영어여야 하기 때문에, 영어로 설정해줬습니다.
‘컬럼 보기 설정’ 아이콘을 눌러 ‘논리/물리 동시편집’을 선택하고, 물리 모델링 모드의 컬럼명을 추가했습니다.
 
 
6. 외래키 지정

‘점선’ 아이콘을 눌러 학생 테이블에서 수강 테이블로, 교수 테이블에서 수강 테이블로 연결했습니다. 새로 생긴 외래키 이름을 각각 ‘학생_ID’, ‘교수_ID’로 설정했습니다.
 
 
7. 대응수 지정

학생 테이블과 수강 테이블의 관계를 클릭한 뒤, 마우스 오른쪽 버튼을 눌러 ‘특성’ 메뉴에 들어가 관계차수를 부모 테이블과 자식 테이블 모두 ‘EXACTLY_ONE’으로 변경해보았습니다.
 

학생 테이블과 수강 테이블의 관계가 까마귀 발 표기법의 1:1 표기 방식으로 변경된 것을 확인할 수 있습니다.
 
 
8. 포워드 엔지니어링 – 수동 생성 방식

exERD 메뉴에서 포워드 엔지니어링을 클릭한 뒤, 스키마 생성에 체크한 후 다음을 눌러 클립보드로 복사합니다.
 

위에서 복사한 코드를 MySQL에 실행시켜 실제로 테이블을 생성합니다.
 

my_schema가 생긴 것을 확인할 수 있습니다.
 
 
9. 용어사전 연결

파일 메뉴의 [새로 작성]에서 용어사전을 클릭하여 sample.xdic 파일을 생성했습니다. ‘이름’은 ‘NAME’, ‘전화’는 ‘TEL’, ‘번호’는 ‘NUM’으로 지정했습니다.
 

용어사전 파일을 지정한 뒤 확인해보았습니다. 논리 이름을 ‘이름’이라고 입력하면 물리 이름이 자동으로 ‘NAME’으로 설정되고, ‘전화번호’라고 입력하면 ‘TELNUM’으로 설정되는 것을 확인할 수 있었습니다.
 

#02 launchpad.net/test-db의 내용을 exERD로 표현하기

‘show tables;’로 employees 데이터베이스에 6가지 테이블이 존재하는 것을 확인했습니다.
 

desc ‘테이블명’으로 각 테이블에 어떤 컬럼이 존재하며, 어떤 컬럼이 기본키인지 확인했습니다.
 

위에서 desc ‘테이블명’으로 조회한 결과에 맞게 컬럼과 기본키를 지정해줬습니다.
 

물리 모델링 이름도 지정해줬습니다.
 

employees 데이터베이스의 테이블 간의 외래키 참조 상태를 확인하기 위해서 ‘select constraint_name, table_name, column_name, referenced_table_name, referenced_column_name from information_schema.key_column_usage where constraint_schema=’employees’;’ 쿼리문을 작성해보았습니다. 아래와 같은 외래키 참조 상태를 가진다는 것을 확인했습니다.
-      dept_emp 테이블의 emp_no가 employees 테이블의 emp_no 참조
-      dept_emp 테이블의 dept_no가 departments 테이블의 dept_no 참조
-      dept_manager 테이블의 emp_no가 employees 테이블의 emp_no 참조
-      dept_manager 테이블의 dept_no가 departments 테이블의 dept_no 참조
-      salaries 테이블의 emp_no가 employees 테이블의 emp_no 참조
-      titles 테이블의 emp_no가 employees 테이블의 emp_no 참조
 

아래와 같이 외래키를 지정한 후 보기 편하도록 배치를 바꾸었습니다.
1)    employees 테이블에서 dept_emp 테이블로 식별 관계(실선) 연결
2)    departments 테이블에서 dept_emp 테이블로 식별 관계(실선) 연결
3)    employees 테이블에서 dept_manager 테이블로 식별 관계(실선) 연결
4)    departments 테이블에서 dept_manager 테이블로 식별 관계(실선) 연결
5)    employees 테이블에서 salaries 테이블로 식별 관계(실선) 연결
6)    employees 테이블에서 titles 테이블로 식별 관계(실선) 연결

'3-1 > 데이터베이스' 카테고리의 다른 글

#09 DCL 실습  (0) 2023.08.12
#08 DDL 실습  (0) 2023.08.12
#07 트랜잭션(일관성)과 복제  (0) 2023.08.12
#06 트랜잭션(격리성, 원자성), MVCC, 모델링 기초  (0) 2023.05.07
#05 조인  (0) 2023.03.31