Building
, Room
, Department
, Class
, Student
테이블이 존재desc
명령어) 및 조회(select
) 결과를 캡처할 것
그림 1 MySQL Workbench 프로그램 실행 화면
MySQL Workbench 프로그램을 실행시켜 InhaDB
데이터베이스 모델을 생성하였다.
주어진 조건대로 Inha 데이터베이스에는 Building
, Room
, Department
, Class
, Student
테이블이 존재한다. 본 설계에서는 테이블의 참조관계를 아래와 같이 가정하고 정의하였다.
Building
과 Room
은 1:N의 식별 관계를 가진다.
Building
은 여러 Room
을 가질 수 있고, Room
은 하나의 Building
에 속하기 때문이다.Room
은 Building
이 있어야 존재할 수 있다.Room
과 Department
는 1:1의 비식별 관계를 가진다.
Room
과 Class
는 1:N의 비식별 관계를 가진다.
Room
은 여러 Class
를 가질 수 있다.Class
는 하나의 Room
만을 가진다.Department
와 Class
는 1:N의 비식별 관계를 가진다.
Department
는 여러 Class
를 가질 수 있다.Class
는 하나의 Department
에 속한다.Department
와 Student
는 M:N의 식별 관계를 가진다.
Department_manages_Student
를 사용하였다.Student
와 Class
는 M:N의 식별 관계를 가진다.
Student_takes_Class
를 사용하였다.
그림 2 MySQL Workbench 상에서 그린 InhaDB
의 Schema Diagram
MySQL Workbench 프로그램 상에서, STEP 1에서 정의한 관계대로 테이블을 만들었다. 이후, 상단 메뉴 중 “Database” 메뉴의 “Forward Engineer”를 클릭하여 “Forward Engineer to Database” 기능을 실행하였고, Schema Diagram을 InhaDB
에 반영하였다.
우선, 터미널에 mysql -u root -p
명령어를 입력하고, 비밀번호 입력 후 MySQL에 접속하였다. 아래 그림 3처럼 use InhaDB
명령어로 InhaDB
데이터베이스를 적용하였다. 그 후, show tables;
명령어로 MySQL Workbench 프로그램 상에서 만든 테이블이 정상적으로 생성된 것을 확인하였다.
그림 3 mysql
접속 후, InhaDB
의 테이블을 확인하는 화면
먼저 아래 그림 4와 같이 INSERT
문으로 Building
테이블에 5개의 값들을 insert 하였다.
그림 4 Building
테이블에 값들을 INSERT
하는 화면
Room
테이블에는 아래 그림 5처럼 INSERT
문으로 9개의 값들을 insert 하였다.
그림 5 Room
테이블에 값들을 INSERT
하는 화면
다음으로, 아래 그림 6, 그림 7, 그림 8과 같이 INSERT
문으로 Department
테이블, Class
테이블, Student
테이블에 각각 5개의 값들을 insert 하였다.
그림 6 Department
테이블에 값들을 INSERT
하는 화면
그림 7 Class
테이블에 값들을 INSERT
하는 화면
그림 8 Student
테이블에 값들을 INSERT
하는 화면
다음으로는 Student
와 Class
테이블의 M:N 관계를 설명하는 Student_takes_Class
테이블에 값들을 insert 하였다. 그림 9에서 확인할 수 있듯이, 17개의 값들을 insert 하였다.
그림 9 Student_takes_Class
테이블에 값들을 INSERT
하는 화면
이전과 마찬가지로, Department
와 Student
테이블의 M:N 관계를 실제로 구현하기 위해, 두 테이블의 PK (Primary Key, 기본키)를 FK (Foreign Key, 외래키)로 참조하고 있는 연결테이블인 Department_manages_Student
테이블에 값들을 insert 하였다. 학생들은 복수전공, 부전공 등의 이유로 여러 전공에 속할 수 있고, 부서들을 본전공 뿐만 아니라 복수전공, 부전공 등의 학생들까지 관리한다고 가정한다. 그림 10에서 확인할 수 있듯이, 7개의 값들을 insert 하였다.
그림 10 Department_manages_Student
테이블에 값들을 INSERT
하는 화면
Building
테이블
그림 11 Building
테이블의 설명 및 조회 결과
Room
테이블
그림 12 Room
테이블의 설명 및 조회 결과
Department
테이블
그림 13 Department
테이블의 설명 및 조회 결과
Class
테이블
그림 14 Class
테이블의 설명 및 조회 결과
Student
테이블
그림 15 Student
테이블의 설명 및 조회 결과
Student_takes_Class
테이블
그림 16 Student_takes_Class
테이블의 설명 및 조회 결과
Department_manages_Student
테이블
그림 17 Department_manages_Student
테이블의 설명 및 조회 결과
본 설계에서는 Building
, Room
, Department
, Class
, Student
테이블을 가지고 있는 InhaDB
데이터베이스를 설계하였다. STEP 1에서 주어진 조건 이외에도 각각의 테이블 간의 관계에 맞도록 참조관계를 추가하여 정의하였다.
STEP 2에서는 개념적 설계 이외에도 MySQL Workbench 프로그램을 통해 직접 Schema Diagram으로 나타내보고, “Forward Engineer to Database” 기능을 통해 설계한 Schema Diagram을 InhaDB
에 반영하였다.
STEP 3에서는 반영한 InhaDB
의 작동을 하기 위해, 각 테이블에 5개 이상의 임의의 값들을 INSERT
구문을 통해 insert 하였다. 이 때, 참조 무결성 제약조건(Referential integrity constraint)을 고려하여 INSERT
구문의 실행 순서를 결정하였다.
그리고, 테이블의 설명(describe)를 뜻하는 DESC
명령어와 조회를 의미하는 SELECT 명령어로
각 테이블의 설명 및 조회 결과를 확인하였다. 그림 11부터 그림 17까지의 결과를 확인해보면, 각 테이블 간의 관계가 결함없이 이루어진 것을 확인할 수 있으며, INSERT
했던 값들 역시, 테이블의 각 Field Type에 맞게 삽입된 것을 확인할 수 있다.