

- 데이터베이스 설계는 위와 같은 5단계로 구성된다. 사용자의 요구 사항을 고려해 데이터베이스를 생성하는 과정이다.

- 1단계는 요구사항 분석으로 데이터베이스의 용도를 파악해 요구사항 명세서를 작성한다.
- 2단계는 개념적 설계로 현실 세계의 것을 사람이 이해할 수 있는 개념적으로 모델링하는 것이다. 운영 시스템과는 관계없다. E_R 다이어그램을 얻게된다
- 3단계는 DBMS에 적합한 논리적 구조를 설계해 논리적 스키마를 얻는다
- 4단계는 물리적 구조, 5단계는 sql문을 설계한다.

- 왼쪽의 현실 세계 데이터에서 병원과 관련된 주요 데이터를 파악해 컴퓨터 세계의 데이터베이스로 옮기는 것을 데이터 모델링이라 한다.

- 데이터 모델링은 데이터베이스 설계의 핵심 과정이다.
- 예를 들어 코끼리를 데이터베이스로 옮기려 할 때, 코끼리에는 어떤 특징이 있는지를 뽑아내야 한다. 이를 추상화라고 한다. 이 추상화를 통해 데이터를 모델링하여 컴퓨터 세계로 데이터를 옮기는 것이다.
- 추상화된 특징을 바탕으로 컴퓨터 세계의 데이터베이스로 옮기는 과정을 논리적 설계라 한다.

- 개념적 데이터 모델링은 현실 세계->개념세계로 옮기는 것이고, 논리적 데이터 모델링은 개념세계->데이터베이스로 옮기는 것이다.

- 개념적 데이터 모델은 개체-관계 모델로, 논리적 데이터 모델은 관계 데이터 모델로 표현한다.

- 개체 관계 모델(e-r 모델)은 개체와 개체관계를 이용해 현실 세계를 개념적 구조로 표현한 것이다. 이를 이용해 그림으로 표현한 것이 e-r 다이어그램이다.

- 위가 e-r 다이어그램의 예이다. 고객과 책, 출판사 개체를 마름모를 활용해 개체 사이의 관계를 표현했다.

- 개체는 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물처럼 구별되는 모든 것이다. 고유한 특성을 하나 이상 가지고 있다. 저장할 가치가 있는 중요 데이터를 가지고 있다. 파일 구조의 레코드와 대응된다.

- e-r 다이어그램에서 개체는 사각형으로 표현한다.

- 속성은 개체나 관계가 가지고 있는 고유의 특성이다. 더이상 쪼갤 수 없는 작은 논리적 단위이며 타원으로 표현한다.

- 개체를 고유의 이름과 속성으로 정의하여 뼈대를 구성한 것이 개체 타입이다.
- 개체 인스턴스는 개체의 속성이 실제 값을 가지며 실체화된 값을 가진 것이다.
- 이러한 개체 인스턴스를 모아놓은 것이 개체 인스턴스다.

- 위 고객 개체 타입에서 이름, 주소 등의 값을 넣어 개체 인스턴스가 된다.

- 속성은 속성 값의 개수에 따라 단일 값 속성과 다중 값 속성으로 나뉜다.
- 또 의미 분해 가능성에 따라 더이상 의미분해가 불가능한 단순속성과 의미 분해가 가능한 복합 속성으로 나뉜다.
- 또 유도 속성이라 하여 다른 속성에 의해 유도된 값을 가지는 속성이 존재한다.

- 단일 값 속성은 이름, 적립금 속성처럼 값을 하나만 가진다.
- 다중 값 속성은 고객의 연락처, 책의 저자 처럼 하나 이상의 값을 가질 수 있다. e-r 다이어그램에서 이중 타원으로 표현한다.

- 다중값 속성인 연락처는 이중타원으로 표현된다.

- 단순 속성은 이름처럼 더 이상 분해할 수 없고, 복합 속성은 주소처럼 의미를 분해할 수 있다(시 동 우편번호).

- e-r 다이어그램에서 복합 속성은 타원의 또다른 타원으로 표현한다.

- 유도속성은 다른 속성에서 유도되어 따로 별도의 값을 가지지 않아 값이 저장되지 않는다.
- 가격과 할인율 속성에서 판매가격이 유도되며 e-r 다이어그램에서 점선 타원으로 표현된다.

- 널 속성은 아직 결정되지 않거나 모르는 값 또는 존재하지 않는 값인 널 값이 허용되는 속성이다. 공백이나 0과는 의미가 다르다.

- 키 속성은 개체 인스턴스 식별에 사용되는 속성이다. e-r 다이어그램에서 밑줄로 표현된다. 둘 이상의 속성들로 구성되기도 한다. 고객 인스턴스에에 고객이름과 생년월일을 합쳐 키 속성을 만들 수 있다.

- 관계는 개체 간 맺고 있는 의미 있는 연관성이다. e-r 다이어그램에서 마름모로 표현한다.

- 관계에 참여하는 개체 타입의 수에 따라, 개체 두 개가 맺으면 이항 관계, 세 개가 맺으면 삼항 관계, 개체 타입 하나가 자신 스스로와 관계를 맺으면 순환 관계다.

- 관계 유형은 각 개체 인스턴스가 연관성을 맺고 있는 상대 인스턴스의 수인 매핑 카디널리티에 따라 일대일, 일대다, 다대다 관계로 나뉜다.

- 일대일 관계는 개체A의 각 인스턴스가 개체B의 각 인스턴스 하나와 관계를 맺을 수 있고, B의 인스턴스 또한 A의 인스턴스 하나와 관계를 맺을 수 있는 것이다.

- 일대다 관계는 부서와 사원 처럼 A은 B의 인스턴스 여러개와, B는 A의 인스턴스 한개와 관계를 맺는다.

- 다대다 관계는 A의 인스턴스 여러개가 B의 인스턴스 여러개와 관계를 맺을 수 있는 것이다.

- 관계의 참여 특성 중 필수적 참여는 모든 개체 인스턴스가 관계에 반드시 참여해야 하며, 선택적 참여는 개체 인스턴스 중 일부만 관계에 참여해도 된다.

- 위의 관계처럼 고객 개체는 구매라는 관계에 필수적 참여하며, 이중선으로 표현되고, 책은 구매 관계에 선택적 참여이며 단선으로 표시된다.

- 약한 개체는 다른 개체가 존재해야지만 존재한다.
- 오너 개체는 다른 개체의 존재 여부를 결정한다.
- 오너 개체와 약한 개체는 일대다의 관계를 일반적으로 가진다.
- 약한 개체는 오너 개체와의 관계에 필수적으로 참여해야 한다.
- 약한 개체는 오너 개체의 키를 포함하여 키를 구성한다.

- 위처럼 오너 개체와 약한 개체가 맺는 관계는 이중 마름모로 표현하고 약한 개체는 이중 사각형으로 표현한다. 오너개체와 약한 개체가 일대다 관계가 가능하다.

- 개체 관계 다이어그램은 다음과 같이 표현해야함을 숙지하자

- 배운 내용을 바탕으로 위의 e-r 다이어그램을 해석하자