데이터베이스 설계
데이터베이스 시스템은 많은 양의 정보를 관리하기 위해 설계된다. 이 많은 양의 정보는 별개의 정보들로 존재하지 않는다. 이 정보들은 회사 운영에 필요한 데이터베이스 혹은 어떤 장치 혹은 서비스에 관련된 자료들이라 할 수 있다.
데이터베이스 설계는 데이터베이스 스키마 설계와 주로 관련된다. 모델화된 회사의 요구를 만족시켜주기 위한 완벽한 데이터베이스 응용 프로그램의 설계는 많은 문제점들을 주의해야 한다.
- 설계 단계
요구조건을 만족시키기 위해 어떻게 구성될 것인가에 대한 것을 제공한다. 데이터베이스 설계의 초기 단계는 장래의 데이터베이스 이용자들이 필요로 하는 데이터를 충분히 규정하는 것이다. 이런 일들을 수행하기 위해 데이터베이스설계자는 그 분야의 전문가들 및 사용자들과 광범위하게 상호 작용해야 한다. 이 단계의 결과물은 사용자의 요구 명세서(specification of user requirements)이다.
다음으로 설계자는 데이터 모델을 선택하고, 선택한 데이터 모델의 개념을 적용함으로써 이러한 요구들을 데이터베이스의 개념적인 스키마로 바꾼다. 이러한 개념적 설계의 단계에서 개발된 스키마는 기업의 상세한 개관(overview)을 제공한다. 설계자는 모든 요구들이 실제로 만족되었는지, 그리고 그러한 요구들이 서로 충돌하는 것은 아닌지 확실히 하기 위해 스키마를 재검토 한다. 또한 중복되는 사항들(redundant features)을 제거하기 위해 살펴볼 수 있다. 이때 설계자의 초점은 물리적으로 어떻게 저장할 것인지 자세히 규정하는 것 보다는 데이터와 그들의 관계를 기술하는 데 맞추어져 있다.
관계형 모델에서의 개념적 설계 단계는 데이터베이스에서 우리가 포착하길 원하는 어떤(what) 속성과 다양한 테이블을 구성하는 이러한 속성을 어떻게(how) 그룹화할 것인가에 대한 결정과 관련되어 진다. "어떠한 것(what)"은 기본적으로 기업적인 결정으로 여기서 다루지는 않는다. "어떻게(how)"는 주로 전산학의 문제이다. 이러한 문제를 다루는 두 가지 방법이 있다. 하나는 개체-관계 모델을 사용하는 것이다. 나머지 하나는 모든 속성들의 집합을 입력으로 받아 테이블의 집합을 생성하는 알고리즘(정규화로 알려져있다)을 사용하는 것이다.
또 완전히 개발된 개념적 스키마는 실게계의 기능적인 요구사항들을 보여준다. 기능적 요구사항 명세서(specification of functional requirement)에 사용자들은 데이터에 적용될 연산(혹은 트랜잭션)들의 종류를 기술한다. 이런 연산들의 예를 들면 데이터의 변경 혹은 갱신, 특정 데이터의 검색 및 추출, 데이터의 삭제들이 있다. 개념적 설계의 이 단계에서 설계자는 스키마가 기능적인 요구사항들을 만족시키는지 확인하기 위해 재검토할 수 있다.
추상 데이터 모델로부터 데이터베이스 구현으로 이동하는 과정은 마지막 두 가지 디자인 단계에서 이루어진다. 논리 설계 단계(logical-design phase)에서 설계자는 상위의 개념적 스키마를 사용할 데이터베이스의 구현 데이터 모델에 대응시킨다. 설계자는 결과로 나온 시스템 특유의 데이터베이스 스키마를 데이터베이스의 물리적 속성들이 구체화 되는 다음 단계인 물리 설계 단계(physical-design phase)에 이용한다. 이러한 속성들은 파일 구성(file organization)의 형식과 내부적인 저장 구조들을 포함한다.
- 개체-관계 모델(Entity-Relationship)
- 개체 집합은 윗부분에 개체 집합의 이름을 갖고 그 아래에 속성들의 목록을 갖는 사각형박스로 표현된다.
- 관계 집합은 연관된 개체 집합들의 쌍을 연결한 마름모로 표현된다. 관계의 이름은 마름모 안에 위치한다.
정규화
관계형 데이터베이스를 설계하는 또 다른 방법은 일반적으로 정규화로 알려진 단계를 이용하는 것이다. 정규화 목표는 불필요하게 중복 저장되는 정보가 없고, 정보 검색을 쉽게 할 수 있는 릴레이션(Relation) 스키마 집합을 생성하는 것이다. 정규화의 방법은 적당한 정규형(normal form) 에 맞게 스키마를 설계하는 것이다. 어떤 릴레이션 스키마가 올바른 정규형들에 속하는지를 결정하기 위해서는 데이터베이스로 표현하려고 하는 실세계 응용에 대한 부가적인 정보가 더 필요하다. 가장 많이 사용되는 방법은 함수 종속(functional dependency)을 사용하는 것이다.
정규화의 필요성을 이해하기 위해 잘못된 데이터베이스 설계로 인해 어떤 문제들이 생길 수 있는지 살펴보도록 하자. 잘못된 설계로 인해 생기는 문제점들에는 다음과 같은 것들이 있을 수 있다.
정보의 중복
특정 정보의 표현이 불가능
ID |
name |
salary |
dept_name |
building |
budget |
22222 | Wu | 90000 | Finance | Painter | 120000 |
12123 | El Said | 60000 | History | Painter | 50000 |
45565 | Katz | 75000 | Comp.Sci | Taylor | 100000 |
.. | .. | .. | .. | .. | .. |
.. | .. | .. | .. | .. | .. |
10101 | Brandt | 65000 | Comp.Sci | Taylor | 100000 |
.. | .. | .. | .. | .. | .. |
33546 | singh | 92000 | Comp.Sci | Taylor | 100000 |
'Programming > DataBase System' 카테고리의 다른 글
Chapter1 - 트랜잭션 관리 (0) | 2019.04.11 |
---|---|
Chapter1 - 데이터 저장과 질의 (0) | 2019.04.11 |
Chapter 1 - 관계형 데이터베이스 (0) | 2019.04.06 |
Chapter1 - 데이터베이스 언어 (0) | 2019.04.06 |
Chapter 1 - 데이터 관점 (0) | 2019.04.06 |