본문 바로가기

Database/Theory

#01. DB설계&모델종류, 키&무결성/제약조건, 관계데이터연산

DB설계정의

스키마정의, DB구현을 위해 전반적인 과정

요구조건분석 > 개념적설계 > 논리적설계 > 물리적설계 > 구현 > 운형/개선

요구조건분석: DB정의, 명세서(Specification)작성

개념적설계: 구성요소 결정후 수행할 잡업/관계 설계과정

논리적설계: 사용자가 알아볼수있는 형태로 변환, 스키마정의 과정

물리적설계: 내부저장장치구조, 접근경로 설계과정

구현: 실제 DB만드는 과정, DB언어사용

운영/개선: DB를 실제로 운영, 문제점/개전섬 파악


E-R모델(Entity-Relation Diagram)

개념적 설계단계에서 사용하며 개체/관계 타입간의 구조/개체를 구성하는 속성들을약속된 기호를 이용하여 표현, P.Chen박사가 최초로 제안


DB모델

논리적 설계단계에서사용하며 Data모델로 변환하기 위해사용

-관계 데이터모델(표 데이터모델): 2차원 구조의 표형태로 표현(n:m관계 표현)

-네트워크 데이터모델(망 데이터모델): 레코드 타입(개체타입x)관계 표현

-계층 데이터모델(트리 데이터모델): 트리구조로 표현(1:n관계 표현)


관계데이터모델

E-R모델을 2차원구조의 표로 표현

용어

-릴레이션(Relation): 해당표(테이블)

-튜플(Tuple): 릴레이션의 행(Record, Row)

-도메인(Domain): 속성값의 범위

-릴레이션 스키마: 릴레이션의 이름,속성명들의 집합

-릴레이션 인스턴스: 현재 릴레이션에 존재하는 튜플들의 집합

-차수(Degree): 속성 수

-카디널리티(Cardinality): 튜플 수


E-R모델 에서 관계데이터모델로 표현

Mapping Rule

개체(Entity) > 릴레이션(Table/Relation)

속성(Attribute) > 항목(Field/Column)

식별자(키속성) > 기본키(Primary Key)

관계(Relation) > 외래키(Foreign Key)

교차엔티티(Intersection Entity)

보다 정확한 상호참조를 위해 하나의 릴레이션을 추가, n:m일 경우 관계를 릴레이션으로 표현후 속성은 다른 개체들의 릴레이션에서의 기본키들로 구성


튜플의 식별을 위한 속성/속성집합, 참조/검색시 사용

-후보키(Candidate Key):  튜플을 식별할수 있는 속성/속성집합

*조건: 유일성, 최소성을 모두만족

-기본키(Primary Key): 후보키(Candidate Key)들중 선택된 키

*조건: 유일성, 최소성을 모두만족, NULL값이 올수없다

-대체키(Alternate Key): 후보키중 기본키를 제외한 속성/속성집합

-외래키(Foreign Key): 다른 테이블을 참조하기위해 사용되는 속성/속성집합

*조건: 참조테이블의 기본키와 외래키는 같아야한다, NULL값이

올수고 외래키의 속성명과 참조테이블의 기본키 속성명은 같지않아도된다.

*식별관계: 외래키가 기본키일경우 A,B테이블은 식별관계

*비식별관계: 외래키가 기본키가아닐경우 A,B테이블은 비식별관계

-슈퍼키(Super Key): 후보키(Candidate Key)와 다른 속성/속성들과의 모든 조합

*조건: 유일성은 만족하나 최소성은 만족하지 않는다.


무결성과 제약조건

무결성: 자료의 오류없는 정확성/안정성을 나타내는것

제약조건: 정확성/안정성을 유지하기위한 제약조건

-개체무결성: 기본키는 NULL값이 올수없으며, 중복될수 없다.

개체를 식별하기위해 오류가없음을 위한 제약조건

-참조무결성: 외래키는 NULL값이 올수없으며, 참조테이블의 기본키와

같아야한다.

테이블참조시 오류없음을위한 제약조건

-도메인무결성: 속성값은 정해진 범위이내의 값이여야 하는 제약조건

-고유 무결성: 속성에 대해 고유한 값이 와야하면, 속성값은 모두 달라야한다

-NULL 무결성: NULL값이 올수없는 조건일시, 속성값은 NULL값을 가질수없다

-키 무결성:     한 테이블엔 최소한 하나이상의 키가 존재해야만한다


관계 데이터연산

DB구조에서 사용되는 연산, 관계대수/해석이 존재한다

관계대수(Relational Algebra): 결과를 얻기위해 연산자를 표현하는 방법

절차적 언어이다

순수관계 연산자

-Select: 수평적 부분집합을 구하는 연산(행,튜플)

*중복되는 튜플도 모두표현

-Project: 수직적 부분집합을 구하는 연산(열, 속성)

*중복되는 값은 한번만표현

-Join:        두테이블을 조건에 맞게 하나의 테이블로 표현하는 연산

동일조인(Equi Join): '='연산자만을 사용, 두테이블의 모든

성을 합하여 표현(중복도 표현)

자연조인(Natural Join): 동일조인결과의 중복속성 제거

외부조인(Outer Join): 조건에 맞지않는 튜플도 포함해서 표현

(중복속성제거, data없는 속성값은 NULL로표현)

세타조인(Theta Join): '='외의 연산자 모두사용

(중복도 모두표현)

-Division: 'A Division B'> 테이블B 조건에 맞는(모든 속성값)튜플

들을 테이블A에서 추출후 표현

(연산에서 사용된 속성제외)

   일반집합 연산자

-합집합: 두개의 테이블 속성값 모두표현(중복 속성값은 한번만 표현)

-교집합: 두개의 테이블의 공통된 속성값만 표현

-차집합: 두개의 테이블의 공통된 속성값을뺀 첫번째 테이블표현

-카티션프로덕트: 두개의 테이블 곱셈

x테이블 차수 + y테이블차수 = 결과물의 차수

x테이블의 카디널리티 x y테이블의 카디널리티 = 

결과물의 카디널리티

관계해석(Relational Calculus): 연산자 없이 표현하는법, 비절차적 언어이다