본문 바로가기
클라우드 아키텍트 양성과정

[TIL.20.12.22~28] 관계형 데이터 베이스 설계

by 종바깅 2021. 1. 28.

이전 포스팅에서 데이터베이스 부분을 모두 학습한 것이라 착각을 했다...😂 실질적으로 실무에 뛰어들게 된다면 데이터베이스를 프로그래밍 언어로 다루는 것도 중요하겠지만, 데이터베이스를 설계하는 역량도 중요할 것이다. 이번 포스팅에서는 데이터베이스를 설계하는 법에 대해서 다룰 것이다.


[20.12.27]

> 데이터베이스 설계

데이터베이스 설계순서 :

 

1. 요구분석 : 데이터베이스가 사용될 용도를 파악하는것이다. 데이터베이스 사용자에 따른 수행업무와 필요한 데이터의 종류, 용도, 처리형태, 제약조건 등을 수집하여 요구사항 명세서를 작성한다.

 

2. 개념적 설계(Concept Design) : 정보의 구조를 얻기 위하여 현실세계에 대한 인식을 추상적 개념으로 표현하는 과정이며 ERD(Entity Relation Diagram)를작성한다.

 

3. 논리적 설계(Logical Design) : 현실세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장자치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료구조로 변환시키는 과정이다

 

4. 물리적 설계(Physical Design) : 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.

 

데이터베이스의 설계 원리 :

 

- 테이블롤 표현하는 과정에서 정보의 손실이 없도록 한다.

- 가능한한 데이터의 중복은 피하도록 한다.

- 이상이 발생하지 않도록 정규화 한다

- 독립된 관계마다 테이블을 만든다.

 

ERD(Entity Relation Diagram) 작성 : 

 

- ERD 표준기호 :

 

 

*실습문제*

>> 작성한 테이블

CREATE TABLE professortbl (
	professor_id VARCHAR(20) PRIMARY KEY
	, professor_name VARCHAR(20) NOT NULL
	, professor_major VARCHAR(20) NOT NULL
	, professor_belong VARCHAR(30) NULL
);

CREATE TABLE studenttbl (
	student_id VARCHAR(20) PRIMARY KEY
	, student_name VARCHAR(20) NOT NULL
	, student_addr VARCHAR(20) NOT NULL
	, student_grade INT(1) NOT NULL
	, professor_id VARCHAR(20) NOT NULL
	, FOREIGN KEY (professorr_id) REFERENCES professortbl(professor_id)
);

CREATE TABLE lecturetbl (
	lecture_id VARCHAR(20) PRIMARY KEY
	, lecture_name VARCHAR(20) NOT NULL
	, lecture_credit INT(1) NOT NULL
	, lecture_time VARCHAR(20) NOT NULL
	, lecture_place VARCHAR(20) NOT NULL
	, professor_id VARCHAR(20) NOT NULL
	, FOREIGN KEY (professorr_id) REFERENCES professortbl(professor_id)
);

CREATE TABLE enrolltbl (
	enroll_num INT AUTO_INCREMENT PRIMARY KEY
	, record FLOAT(20) NOT NULL
	, student_id VARCHAR(20) NOT NULL
	, lecture_id VARCHAR(20) NOT NULL
	, FOREIGN KEY (student_id) REFERENCES studenttbl(student_id)
	, FOREIGN KEY (lecture_id) REFERENCES lecturetbl(lecture_id)
);

*실습문제*

 

제약조건

- 하나의 기자재는 한 연구실에서 관리한다.

- 한 연구실은 여러 기자재를 관리한다.

- 한명의 연구원은 한 연구실에만 소속될 수 있다.

- 하나의 연구실은 여러 연구원으로 구성된다.

- 한명의 연구원이 여러 기자재를 사용할 수 있다

- 하나의 기자재는 여러 연구원이 사용할 수 있다.

 

위 제약조건을 만족하는 ERD를 그리시오.

 

>> 작성한 ERD


여기까지 해서 과정에서의 모든 데이터베이스 학습은 마무리 되었다. 20.12.27일 까지 배운 파이썬 프로그래밍, 데이터베이스를 이용해서 쇼핑몰 시스템을 만드는 프로젝트를 진행하였다. 추후 이 프로젝트 관련한 포스팅을 하도록 하겠다.

댓글