데이터베이스 설계

유석현(SeokHyun Yu)·2022년 8월 19일
0

SQL

목록 보기
33/45
post-thumbnail

서론

지금부터 데이터베이스의 설계에 관해 알아보겠다.


1. 데이터베이스 설계

데이터베이스를 설계한다는 것은 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것을 말한다.

스키마 내에 정의한다는 뜻에서 '스키마 설계'라 불리기도 한다.

데이터베이스 설계의 주된 내용은 테이블의 이름이나, 열, 자료형을 결정하는 것이다.

또한 '이 테이블은 이 열을 이용해 저쪽 테이블과 연결한다'와 같이 테이블 간의 관계를 생각하면서 여러 테이블을 정의하고 작성하게 된다.

단, 설계는 테이블 정의에만 그치지 않는다.


- 논리명과 물리명

테이블을 설계할 때는 테이블 이름이나 열 이름을 지정하는데, 하나의 테이블에 대해 열 이름을 두 개 지정할 때도 있다.

하나는 데이터베이스에서 사용될 이름으로, 실제로 CREATE TABLE에 지정하는 이름을 말하며 '물리명'이라 부른다.

또 하나는 '논리명'이라는 것으로 테이블의 '설계상 이름'에 해당한다.

물리명은 데이터베이스 시스템 규칙에 따라 길이에 제한이 있거나 공백문자를 사용할 수 없는 등의 제약이 따른다.

따라서 일상에서 사용하는 단어로는 이름을 지정하는데 한계가 있다.

또한 전통적으로 알파벳을 사용해 이름을 지정한다.

길이도 제한되다 보니 생략하거나 약자로 이름을 붙이는 경우도 많다.

그러다 보면 물리명만으로는 의미가 전달되지 않는 경우도 많아 논리명이 필요해진다.

실제로 논리명을 위해 열을 따로 정의하는 것은 아니다.

테이블 정의서 같은 곳에 기재하여 열의 의미를 알아보기 편하게 하는데 그친다.


- 자료형

테이블의 열에는 자료형을 지정해야 한다.

데이터베이스에 따라 다르지만 무엇이든 저장할 수 있는 자료형은 없다.

금액이나 개수처럼 수치 데이터만 다룰 수 있는 열은 수치 자료형으로 지정하고, 사람의 이름처럼 문자를 다루어야 한다면 문자열형으로 지정하는 편이 낫다.


- 고정길이와 가변길이

문자열의 자료형에는 고정길이가변길이가 있다.

어느 쪽으로 지정할 것인지는 저장할 데이터를 고려해 결정한다.

예를 들어 주민번호처럼 자리수가 이미 정해져 있는 경우에는 고정길이 문자열로 지정하는 편이 좋다.

반대로 '기타'란과 같이 자주 입력되지도 않지만 입력되는 문자열의 변동폭이 클 경우에는 가변길이 문자열이 적합하다.


- 기본키

테이블에 기본키 제약을 거는 경우에는 주의를 기울여야 한다.

테이블의 행에 유일성을 지정한다는 것은 대단히 중요한 일이다.

하지만 기본키로 지정할 열이 생각나지 않는 경우도 많을 것이다.

이러한 경우 자동증가 열을 사용해서 기본키로 지정하면 간단하게 해결할 수 있다.

자동증가 열은 INSERT 할 경우 번호를 자동으로 증가시켜 저장해주는 편리한 열이다.

데이터베이스 제품에 따라 다르지만, MySQL에 경우는 열을 정의할 때 AUTO_INCREMENT를 지정하는 것으로 자동증가 열이 된다.

AUTO_INCREMENT로 지정한 열은 PRIMARY KEY 또는 UNIQUE로 유일성을 지정해야 한다.

아무 열이나 자동증가 열로 지정하지 않도록 주의하기 바란다.


2. ER 다이어그램

테이블을 설계할 때 테이블 간의 관계를 명확히 하기 위해 설계도를 작성하는 경우가 있다.

'ER 다이어그램'은 이런 경우에 널리 쓰이는 도식이다.

ER의 E는 개체를 뜻하는 'Entity'의 약자이며 R은 'Relationship'의 약자이다.

즉, ER 다이어그램은 개체 간의 관계를 표현한 것이다.

여기서 개체는 테이블 또는 를 말한다.

ER 다이어그램에서 개체는 사격형으로 표기한다.

사각형의 상단에는 개체 이름을 적고 사각형 안에는 개체의 속성을 표기한다.

여기서 속성은 테이블의 열을 의미한다.

기본키가 되는 열부터 차례로 기술하며, 열 이름은 주로 논리명으로 표기한다.

다음은 ER 다이어그램의 예시 사진이다.

profile
Backend Engineer

0개의 댓글