데이터베이스 설계 및 구축 1
데이터베이스 설계 및 구축(1-3장)
데이터베이스의 역사
초기에는 파일 개념으로 자료를 저장했다. 그러나 이 시스템에는 다음과 같은 문제가 있다.
데이터 종속성
데이터를 사용하는 프로그램의 구조가 데이터 구조(파일 구조)의 영향을 받는다는 것이다. 파일의 정보가 바뀌면, 이용하는 모든 프로그램도 바뀌어야 한다.
데이터 중복성
같은 내용의 데이터가 여러 곳에 중복하여 저장된다.
데이터 불일치
중복 저장된 데이터들이 서로 일치하지 않는 것을 의미한다.
데이터 표준화의 어려움
작업 방법의 표준화나, 이름의 표준화가 어렵다.
데이터 보안성의 결여
데이터가 저장되어 있는 파일이 잘 알려진 형식이기에, 쉽게 파일을 열어 내용을 보거나 훼손할 수 있다.
데이터베이스의 등장
이와 같은 어려움을 해결하기 위해서 데이터베이스가 등장했다.
RDB 의 용어
릴레이션
테이블이라고 지칭되며, RDB 에서 정보를 구분하여 저장하는 기본 단위가 된다.
속성
표현할 개체(entity)의 구체적인 정보 항목에 해당되는 것이다.
튜플
개체에 속한 구성원들 개개의 정보를 표현한다.
도메인
릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합이다. 하나의 도메인은 여러 속성에서 공유될 수 있다.
기본키와 외래키
DBMS 는 새로운 튜플이 릴레이션에 삽입될 때 새로운 튜플의 후보키 값이 기존의 튜플들의 후보키 값과 동일한지 여부를 비교하여 중복 여부를 확인한다.
후보키는 최소한의 컬럼 혹은 컬럼들의 집합으로 구성되어야 한다. 의미상 유일해야 할 튜플이, 유일하지 않게 될 수 있기 때문이다. ex) 주민등록번호 + 이름 이라면 주민등록번호가 같고 이름이 다르면 릴레이션에 추가될 수 있을 것이다.
뷰
뷰는 하나의 테이블 혹은 여러 테이블에 대하여 특정 사용자나 조직의 관점에서 데이터를 바라볼 수 있게 해주는 수단으로 가상 테이블이라고도 부른다.
뷰의 목적
- 하나의 테이블에 대해 여러 다른 조직에서 다른 관점으로 보기를 원할 때
- 특정 컬럼을 특정 사용자에게 감추어서 보안을 유지해야 할 때
- 자주 사용하는 복잡한 질의문을 미리 뷰로 정의하여 두고 간편하게 쓰고자 할 때
추상화와 모델링
현실 세계를 개념화, 단순화시켜 표현한 것이 추상화이며, 추상화된 모델을 만드는 작업을 모델링이라고 한다.
사람이 종이와 연필을 가지고 해결할 수 없는 문제는 컴퓨터도 해결할 수 없다.
엔지니어는 현실세계의 문제를 잘 파악하고 모델링할 수 있어야 한다.
데이터베이스 설계의 개념
데이터베이스 설계는 현실 세계에 대한 모델링 과정이다. 현실 세계에 존재하는 개체와 관련된 정보, 데이터, 행위, 사건 등을 추상화해야 한다.
정보시스템 구축 절차
정보전략 계획 수립
정보시스템을 구축하고자 하는 목적과 계획을 수립한다.
업무의 분석
현실세계의 업무 과정을 분석하여 문서로 정리한다.
데이터 모델링
현실 세계를 데이터의 관점에서 파악해서 개념적인 모델로 표현한다. ERD 를 많이 사용한다.
프로세스 모델링
업무가 어떻게 구성되어 있는지, 업무의 처리 절차와 방법이 어떻게 되는지를 파악하는 것이다. 기능분해도와 프로세스 흐름도가 사용된다.
상관 모델링
데이터 모델과 프로세스 모델을 비교 검토하여 서로 간에 잘 맞는지를 평가하는 단계이다.
물리적 DB 설계
실제 DB 구축을 위한 테이블, 뷰, 인덱스, 용량 등을 설계한다.
DB 튜닝
DB 가 일정한 성능을 유지할 수 있도록 비효율적인 요소를 제거하고 성능 개선을 위해 SQL 문장을 포함, DB 의 여러 요소를 조정하는 작업이다.
엔티티
엔티티는 업무의 관심 대상이 되는 정보를 갖고 있거나, 그에 대한 정보를 관리할 필요가 있는 유형, 무형의 개체를 말한다.
엔티티는 다음과 같은 성질을 만족해야 한다.
- 업무에서의 필요성 : 업무의 관심 대상이 되어야 한다.
- 두 개 이상의 인스턴스 소유 : 인스턴스를 가져야 db 에 저장해 놓고 프로그램에서 불러서 사용할 수 있는 것이다.
- 속성의 소유 : 마땅한 속성을 갖고 있어야 한다.
속성
속성은 엔티티에서 관리해야 할 최소 단위의 정보 항목이다. 엔티티는 하나 이상의 속성을 포함한다.
관계
관계는 두 엔티티 사이의 관련성을 나타내는 용어로, 두 엔티티가 관계가 있다는 것은 상호 공유하는 속성이 있다는 것이다.
관계의 카디널리티
엔티티 사이에는 1:1, 1:N, N:M 의 관계가 있을 수 있다. 또한 관계의 참여도에는 선택과 필수가 있다.
- 기준이 되는 엔티티의 인스턴스와 대응되는 인스턴스가 상대방 엔티티에 있을 수도 있고, 없을 수도 있을 때 선택 관계에 있다고 말한다.
- 어느 한쪽이 존재하면 다른 쪽도 반드시 존재해야 하는 관계를 필수 관계라고 한다.