SQL : Database Design - 데이터베이스 설계

34강 데이터베이스 설계

데이터베이스 설계

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

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

데이터베이스 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것이다. 테이블 간의 관계를 생각하면서 여러 테이블을 정의하고 작성하게 된다.

논리명과 물리명

테이블을 설계할 때는 테이블 정의서나 설계도 등의 문서를 작성하는 경우가 많다. 문서 양식은 여러 가지가 있지만, 일반적으로 DESC 명령을 썼을 때 나오는 결과와 같은 양식으로 사용한다.

테이블 설계시 테이블 이름이나 열 이름을 지정하는데, 하나의 테이블에 두 개의 이름을 지정할 때도 있다. 하나는 데이터베이스에서 사용될 이름, 즉 CREATE TABLE에 지정하는 이름을 말하며 물리명이라 부른다. 다른 하나는 논리명으로 테이블의 설계상 이름에 해당한다.

물리명은 잘못 정하면 변경하기 힘들지만, 논리명은 언제나 변경이 가능하다.

자료형

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

고정길이와 가변길이

VARCHAR 형이 가변길이 문자열이다. CHAR 형은 고정길이 문자열이다.

하지만 VARCHAR 형 역시 지정할 수 있는 최대 크기는 크지 않다. 조금 큰 파일을 그대로 VARCHAR 형의 열에 저장하면 용량이 넘어버린다. 그럴 때에는 LOB (Large Object) 형을 사용한다. 하지만 LOB 형은 인덱스를 지정할 수 없다.

기본키

기본키로 지정할 열이 딱히 없다면 자동증가 열을 사용하여 기본키로 지정할 수 있다. 이를 AUTO_INCREMENT라 한다. 그리고 이를 지정한 열은 PRIMARY KEY 또는 UNIQUE로 유일성을 지정해주어야 한다.

ER다이어그램

Entity Relationship 다이어그램은 개체 간의 관계를 표현한 것이다. 개체와 개체가 서로 관계되는 경우에는 선으로 이어서 표현한다. 관계를 표기할 때는 몇 개의 데이터 행과 연관되는지, 즉 몇 대 몇의 관계를 나타내는지 숫자나 기호로 나타낼 수 있다.

  • 일대일
  • 일대다
  • 다대다