* 데이터베이스 모델링
데이터베이스 모델링은 db 구축의 준비과정이다. 현실에서 일어나는 작업이나 사물을
DBMS를 통해 옮기기 위한 것임.
1. 계획 - 요구사항 분석
산출물: 요구사항 명세서, 업무 흐름도
2. 분석 - 개념적 데이터 모델링 ERD
산출물: 애트리뷰트 기술 및 관계 정의
3. 설계 - 물리적 데이터베이스 설계
산출물: 테이블 명세서
4. 구축 - 데이터베이스 테이블 생성
-----------------------
계획
* 요구사항 분석
데이터 모델링하기 위해 요구사항 분석을 함. 기존의 문서를 조사하고
설문을 통해 요구사항을 기술함.
-----------------------
분석
* 논리적 설계
요구사항 분석 산출물로 데이터 모델링 해야함.
애트리뷰트, 자료간 관계 정의함.
골격 구축 작업 단계로 개체 관계 모델 (ERD)를 사용함. entity relationship diagram
* 개체관계모델
데이터베이스의 전체 구조를 쉽게 나타냄. 업무를 검토하고 분석 시에 사용함.
엔티티(entity): ERD에서 사각형으로 표현함. 사물, 사람같은 개념이다.
엔티티는 개체타입과 인스턴스로 구분됨.
사각형으로 표현한게 개체타입. 인스턴스는 테이블처럼 생긴 엔티티의 세부적인 정보들.
예로 고객이란 인스턴스는 id, pw, 주소 등이 들어있는 집합임.
애트리뷰트(attribute): ERD에서 타원으로 표현함. 엔티티는 애트리뷰트의 집합이다.
고객이란 엔티티는 id, pw, 주소라는 애트리뷰트를 가짐.
ERD에서 고객이란 사각형 엔티티에 id, pw 등 타원으로 연결함.
중복된 값을 구별하는 애트리뷰트는 기본키이며 ERD에서 밑줄로 표시함.
관계: 엔티티간 연관성이며 ERD에서 마름모로 표현함.
관계의 차수(degree)란? 관계의 차수로 관계로 연결된 엔티티 타입의 개수를 말함.
카디날리티 비율(cadinality ratio): 엔티티를 이루는 각 값들이 관계에 참여할 수 있는 수
1:1 1:n m:n으로 구분함.
1:1 (one to one) - 사원 : 컴퓨터의 관계
사원 당 컴퓨터는 1대 이므로 1:1이다.
1:n (one to many) - 부서 : PC의 관계
부서 안에 PC가 여러 대 있으므로 1:n이다.
m:n (many to many) - 고객 : 상품의 관계
고객은 여러 상품을 주문할 수 있다 / 상품은 여러 고객에게 구매될 수 있다.
* 릴레이션 구조
행과 열로된 테이블인데 표 형태이다.
테이블 구조에 약간의 제약조건이 추가된게 릴레이션이다.
1. 어떤 행도 동일해서는 안된다.
2. 각 열은 유일한 이름을 가진다.
릴레이션 = 릴레이션 스키마 + 릴레이션 익스턴스
릴레이션 스키마: 첫 행의 헤더이며 릴레이션이 어떻게 구성되는지 기본적인 정보를 담고 있다.
릴레이션 익스턴스: 스키마에 정의된 것에 따라 실제 저장되는 데이터들
튜플: 릴레이션 구성하는 행 / 애트리뷰트의 모임
애트리뷰트: 데이터베이스 구성하는 가장 작은 논리적 단위.
도메인: 애트리뷰트에 저장될 수 있는 데이터의 집합 (성별이라면 남, 여)
차수: 애트리뷰트의 개수 (열 개수)
카디날리티: 튜플의 개수 (행 개수)
* 키란?
데이터베이스 조건에 만족하는 튜플 찾거나, 정렬의 기준이 되는 애트리뷰트
기본키:
후보키 중에 주 키.
널 값을 가질 수 없음.
중복값 가질 수 없음.
외래키:
관계를 맺고 있는 참조 릴레이션의 기본 키와 같음
외래키 지정 시 참조 테이블의 기본 키에 없는 값 입력할 수 없음
후보키:
튜플을 유일하게 식별할 수 있는 속성들의 집합.
기본키로 사용할 수 있는 속성들.
유일성 + 최소성 만족해야함.
대체키(보조키):
후보키가 둘 이상일 때 기본 키를 제외한 나머지 후보 키.
슈퍼키:
속성의 집합으로 구성하여 유일성은 만족하나 최소성 만족못함.
여러 속성을 묶어 키를 구성하다보니 공간 낭비 등 최소성이 만족될 수 없음.
* 무결성
개체 무결성: 릴레이션에서 튜플 구분하기 위해 기본키 구성하는 속성은
NULL이나 중복값을 가질 수 없음.
참조 무결성: 참조 릴레이션의 기본 키 값과 외래키 값은 NULL이거나 동일해야한다.
-----------------------
설계
* 물리적 모델
엔티티 -> 테이블로 변환함.
애트리뷰트 -> 필드로 변환
엔티티간 관계 -> 외래키나 다른 테이블로 변환
1:1 관계는 두 엔티티를 한 테이블로 통합.
1:N 관계는 1이 부모 테이블, N은 자식 테이블이됨.
1의 기본키가 N쪽의 외래키로 들어가고 2개의 테이블로 만듦.
N:M 관계는 새로운 테이블을 만든다.
새로운 테이블은 두 엔티티의 기본키를 외래키로 설정하여 만듬.
새로운 테이블의 기본키는
1. 두 엔티티의 기본키를 외래키로 조합하여 기본키를 만드는 식별관계
2. 새로운 필드를 추가하여 기본키로 설정하고 외래키를 일반 속성으로 두는
비식별관계가 있다.
* 테이블 명세
엔티티는 테이블이되고 애트리뷰트는 칼럼이 된다.