Ruff! Ruff!
서버시스템 구축 실습 - 데이터베이스 모델링과 설계 본문
1. 데이터 모델링의 개념
- 현실세계 🔁 데이터베이스
- 현실세계 ->정보모델링 -> 개념적 모델(ERD) 만들어냄 -> 데이터 모델링 -> 논리적 모델(관계데이터모델)을 만들어냄 -> DB로 구현
-> 데이터베이스
2. 데이터베이스 생명주기
1️⃣ 요구사항 수집 및 분석 (요구사항 명세서 작성)
2️⃣ 설계 (개념적 설계, 논리적 설계, 물리적 설계)
3️⃣ 구현 (DBMS에 적용)
4️⃣ 운영 (DB기반으로 SW구축해 서비스 제공)
5️⃣ 감시 및 개선 (시스템 문제를 파악하고 데베 자체의 문제점을 파악해 개선함)
3. 데이터 모델링 과정
=> 요구사항 수집 및 분석 -> 설계(개념적 모델링, 논리적 모델링, 물리적 모델링) -> 데이터베이스 구현
4. 개념적 모델링
- 개체(Entity)를 추출하고 각 개체들 간의 관계를 정의해 ERD를 만드는 과정
💡ERD?
- ER모델을 개체와 개체 간의 관계를 표준화된 그림으로 나타냄
- 개체 타입의 ER 다이어그램 표현
👁️ 강한 개체 (string entity) : 다른 개체의 도움 없이 독자적으로 존재할 수 있는 개체
👁️ 약한 개체 (weak entity) : 독자적으로 존재할 수 없고 반드시 상위 개체 타입을 가짐
- 속성 : 개체가 가진 성질
- 키 : 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합
-> 슈퍼키, 후보키, 기본키, 대리키, 대체키, 외래키
-관계 : 개체 사이의 연관성을 나타내는 개념
- 관계 타입 : 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이며, 관계 집합은 관계로 연결된 집합을 의미함.
- 참여 제약 조건 : 전체 참여는 개채 집합의 모든 개체가, 부분 참여는 일부만 참여함
- 약한 개체 타입과 식별자
-> 약한 개체 타입은 독립적인 키로는 존재할 수 없음
-> 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자 혹은 부분키라고 함
5. 논리적 모델링
- ERD를 사용하려는 데이터 모델에 맞게 변환하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정
- ERD의 관계 데이터 모델 변환
1단계 : 강한 개체 타입 -> 정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성함
2단계 : 약한 개체 타입 -> 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성함
3단계 : 이진 1:1 관계 타입 -> 이진 1:1 관계 타입의 경우 방법1 ~ 방법5까지 모든 유형으로 사상 가능. 개체가 가진 정보 유형에 따라 판단
4단계 : 이진 1:N 관계 타입 -> 이진 1:N 관계 타입의 경우 N의 위치에 따라 방법1 또는 방법2의 유형으로 사상
5단계 : 이진 M:N 관계 타입 -> 방법4의 유형으로 사상됨
6단계 : N진 관계 타입 -> ER모델의 차수가 3 이상인 다진 관계 타입의 경우 방법4의 유형으로 사상
7단계 : 속성의 개수를 알 수 없는 경우 방법1을, 속성의 개수가 제한적으로 정해지는 경우 방법2 사용
* 모든 관계는 독립적인 릴레이션으로 변환 가능
* 개체가 자기 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용
- 정규화 : 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
- 이상현상 : 삭제이상, 삽입이상, 수정이상
* 함수 종속성과 결정자 : 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계에서 A를 B의 결정자라고 함.
- 이상현상은 무손실 분해를 통해 해결
* 무손실 분해 : 공통 속성이 존재하고 두 릴레이션 중 한 릴레이션의 키이기만 하면 됨.
* 높은 정규형 일수록 이상현상 줄어듦
6. 물리적 모델링
- 작성된 논리적 모델을 특정 DBMS에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
'CS' 카테고리의 다른 글
서버 시스템 구축 실습 - 데이터베이스 연결 (0) | 2024.05.01 |
---|---|
서버 시스템 구축 실습 - Express.js 웹 개발 (0) | 2024.04.24 |
서버시스템 구축 실습 - node.js 기초 (0) | 2024.04.10 |
서버시스템 구축 실습 - 자바스크립트 기초 (1) | 2024.03.27 |
서버시스템 구축 실습 - 웹서버와 데이터베이스 개요 (0) | 2024.03.13 |