포스트

데이터베이스 설계 및 구축 4

데이터베이스 설계 및 구축(11-12장)

논리적 설계를 물리적 설계로 전환하기

물리적 데이터베이스 설계의 입력물은 논리적 ERD 이고 산출물은 물리적 RD 이다. 물리적 데이터베이스 설계의 산출물은 데이터베이스를 구축하는데 이용된다.

엔티티 to 테이블

논리적 ERD 상에서 엔티티라 부르던 것은 테이블이 된다.

속성 to 칼럼

논리적 설계의 속성은 물리적 설계의 컬럼으로 전환된다. 컬럼은 데이터 타입을 갖는다.

주식별자 to 기본키, 외래 식별자 to 외래키

주식별자, 외래식별자는 기본기, 외래키로 대응된다.

관계의 전환

엔티티간의 관계는 물리적 설계에서도 그대로 유지된다. 외래키에 의해 간접적으로 표현된다.

반정규화

반정규화는 정규화와 대비되는 개념으로, 어느 정도 중복은 감수하고 데이터베이스의 성능을 향상시키는 것이다. 엔티티를 통합해 가는 형태로 진행된다.


성능상의 문제로 반정규화를 수행한다면, 데이터의 무결성에 문제가 생길 수 있기에 이에 대한 보완책이 필요하다.

엔티티의 통합 / 분할에 의한 반정규화

두 개의 엔티티 a,b 의 조인을 통해서 항상 자료를 검색해야 한다면 a,b 를 통합하는 것이 검색 속도가 빠를 것이다.
경우에 따라서는, 엔티티를 분할할 수도 있다. 튜필 수 및 속성의 수가 매우 많고, 엔티티의 속성들이 그룹화되어 각 그룹이 특정 부서 혹은 응용프로그램에 의해서만 사용될 때는 속성에 대해서 수직 분할하는 편이 좋다.
튜플의 조회 빈도에 따라서 수평분할을 하기도 한다. 20:80 의 법칙에 따르자면 상위 20 % 가 전체 검색의 80% 를 따른다. 따라서 상위 20 % 의 검색 대상에 대해 구분하여 저장하면 검색 속도의 향상을 꾀할 수 있을 것이다.

속성의 중복에 의한 반정규화

항상 조인을 통해 데이터를 가져오는 경우, 두 엔티티를 합치는 것 이외에도 속성을 중복 저장하는 편이 합리적일 수 있다.

관계에 대한 반정규화

관계에 대한 반정규화는 속성의 중복에 의한 반정규화와 비슷하다. 특정 정보를 알기 위해 여러 번 조인을 해야 하는 경우, 직접적인 관계가 없더라도 해당 엔티티의 외래 키를 갖고 있으면 1번의 조인으로 정보를 얻을 수 있을 것이다.

인덱스

인덱스는 이진 검색을 활용하기에 적은 횟수의 검색만으로 원하는 튜플을 찾을 수 있다. 검색 시간이 짧은 순으로 검색 방법을 나열하면 다음과 같다.

  1. 찾고자 하는 튜플의 주소값을 아는 경우
  2. 해시 함수를 적용할 수 있도록 데이터가 저장된 경우
  3. 인덱스에 의한 검색
  4. 순차 접근에 의한 검색


인덱스는 저장 공간을 차지하고, 정렬 상태를 유지해야 하기에 튜플이 추가되고 삭제되면 인덱스의 재정렬을 필요로 한다.

데이터베이스 구축

물리적 ERD 가 완성되면 데이터베이스를 구축해야 한다. 데이터베이스를 구축하는 방법은 수작업에 의한 구축과 도구에 의한 구축이 있다. 수작업에 의한 구축은 DBMS 에서 제공하는 SQL 입력화면을 통해 직접 SQL 문을 구사하는 것이다. 도구에 의한 방법은 모델링 도구의 기능을 이용하는 방법이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.