데이터 베이스의 모델링은 '현실 세계를 단순화하여 표현하는 기법'이다. 모델은 현실 세계에서 일어날 수 있는 다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형이고 모델링은 이런 모델을 만들어 가는 일이다.
ANSI-SPARC 아키텍쳐에서 스키마를 3단계 구조로 나누는데, 이렇게 분리하는 목적은 데이터 베이스에 대한 사용자들의 관점과 데이터베이스가 실제로 표현되는 물리적인 방식을 분리하기 위함이다.
외부 스키마
사용자의 관점 : 각 사용자가 보는 데이터베이스의 스키마, 여러 개의 사용자 관점으로 구성, 각 사용자나 응용 프로그래머가 접근하는 DB의 정의
개념 스키마
통합된 관점 : 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것
내부 스키마
물리적인 관점 : 물리적인 저장구조를 나타냄. 저장 구조나 컬럼 정의, 인덱스 등이 포함
시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램
1. ERD 표기 방식
Peter Chen - 사용 드뭄
IDEF1X - ERWin에서 사용되는 모델, 실무에서 사용하는 경우도 있음
IE / Crow's Foot - ERRin, ERStudio에서 사용되는 모델, 까마귀발 표기법이라고도 부르며 가장 많이 사용
Min - Max / ISO - 각 엔터티의 참여도를 상세하게 나타냄
UML - 소프트웨어 공학에서 주로 사용
Case*Method / Barker - Oracle에서 사용되는 모델
사전적인 의미는 '독립체'. 식별이 가능한 객체라는 의미를 가진다.
* 엔터티 : Table
* 인스턴스 : Row
* 속성 : Column
각각의 엔터티는 자신을 더 상세하게 나타내기 위해 속성을 갖는다.
업무에서 쓰이는 정보여야 한다.
업무와 연관되어 있을 것 같은 엔터티라도 실제로 프로세스에 이용되지 않는다면 적절한 엔터티라고 볼 수 없다.
유니크함을 보장할 수 있는 식별자가 있어야 함
엔터티에 속한 인스턴스가 중복되거나 식별이 모호하면 엔터티의 설계가 잘못된 것. 예를 들어 같은 아이디를 가진 사람이 여러 명이라면 누구인지 식별하는 것이 불가능 하므로 고유 회원번호를 부여해서 식별 가능하도록 설계하는 것이 바람직하다.
2개 이상의 인스턴스를 가지고 있어야 함
현재 인스턴스가 1개만 존재하고 앞으로도 그렇다면 엔터티로 볼 수 없다.
반드시 속성을 가지고 있어야 함
엔터티는 반드시 자신을 상세하게 나타낼 수 있는 속성을 가지고 있어야 한다.
다른 엔터티와 1개 이상의 관계를 가지고 있어야 한다.
엔터티 이름을 정할 때 주의할 점
사람이나 사물을 정의할 때 보통 여러가지 특징들이 수식어로 붙는다. 예를 들어 아티스트에게는 이름, 생년월일, 소속사, 데뷔연도 등의 수식어가 붙는데, 이렇게 사물이나 개념의 특징을 설명해줄 수 있는 항목들을 속성이라고 부른다.
각각의 속성은 속성값을 가지며 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터이다.
하나의 속성은 한개의 속성값만 가질 수 있다. 아닐경우에 별도의 엔터티로 분리하는 것이 바람직하다.
기본 속성 : 엔터티의 가장 일반적인 속성, 업무 프로세스 분석을 통해 바로 정의가 가능함
설계 속성 : 업무에 존재하지는 않지만 설계 과정에서 합리적인 모델링을 위해 만들어진 속성. 인스턴스에 유니크함을 부여한다.
파생 속성 : 다른 속성으로부터 파생된 속성을 의미. 계산된 값이나 가공된 값이 속한다. 불가피하게 필요한 경우에만 정의하는 것이 바람직하며 반드시 데이터의 정합성이 고려되어야 한다.
데이터 조회 시 빠른 성능을보장한다.
PK속성 : 엔터티에 속한 각 인스턴스에 유니크함을 부여하는 속성 (주식별자)
FK 속성 : 다른 엔터티와 관계를 맺게 해주는 매게체 역할, 다른 엔터티의 PK값이 될 수 있으며 NULL 값을 가질 수도 있다.
일반 속성 : 위의 속성들을 제외한 나머지 속성
속성이 가질 수 있는 속성값의 범위. 엔터티를 정의할 때 데이터 타입과 크기로 나타낼 수 있다.
엔터티와 엔터티 사이에 어떠한 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눔
존재 자체로 연관성이 있는 관계를 의미.
특정한 행위를 함으로써 연관성이 생기는 관계를 의미
관계명 - 두 엔터티가 어떠한 관계를 맺고 있는지를 나타내주는 문장. 모든 관계는 두 개의 관계명을 가지고 있음. 명확한 문장으로 표현하고 현재형이어야 함.
관계차수 - 각 엔터티에서 관계에 참여하는 수. 1:1, 1:M, M:N 형식으로 구분함
관계선택사양 - 이 관계가 필수요소인지 선택사항인지를 나타냄 (O표시)
인스턴스의 속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미
기본키, PK에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고, 여러 개의 속성이 주식별자가 될 수도 있다.
주식별자의 특징
유일성 - 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 함
최소성 - 유일성을 보장하는 최소 개수의 속성이어야 함
불변성 - 속성값이 되도록 변하지 않아야 함
존재성 - 속성값이 NULL일 수 없다.
식별자는 대표성 여부, 스스로 생성되었는지 여부, 단일 속성의 여부, 대체 여부가 분류의 기준이 된다.
식별자 관계
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계
주식별자는 반드시 존재해야 하므로 부모 엔터티가 있어야 생성 가능하다.
단일식별자인지 복합식별자인지에 따라 1:1 이거나 1:M 이거나가 결정된다.
비식별자 관계
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계이다. 일반 속성의 속성값은 NULL이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능하다. (부모 엔터티가 삭제될 수도 있다.)