728x90
반응형
데이터베이스 모델링 과정
개념적 데이터 모델링의 결과
계좌와 학생 사이에 보유라는 관계가 있는 경우
학생이 없으면 계좌가 존재할 수 없기 때문에
계좌는 약한 개체가 되고 학생은 강한 개체가 된다
-> 약한 개체는 2중 사각형, 관계는 2중 마름모로 표현
논리적 데이터 모델링 단계
- DMBS에서 사용하는 데이터 모델에 맞추어 데이터를 표현하는 과정
- 데이터 정의 언어로 기술된 개념 스키마 생성이 최종 목표
- 관계형 모델
- 1969년 에드가F.코드에 의해 제안
- 릴레이션(관계)으로 데이터를 표현하는 모델
- 데이터 표현이 단순하고 직관적 구조화 모델
- 대다수의 DBMS의 기초 : RDBMS - Oracle, MySQL, MSSQL등
릴레이션의 구성
- 2개의 메타데이터에 의해서 하나의 값이 만나면 데이터가 된다
- 특정 시점에서의 릴레이션과 스키마에 해당하는 레코드들을 각각 인스턴스라고 한다
릴레이션의 특징
- 레코드의 유일성 : 중복된 레코드 존재 불가
- 레코드의 무순서성 : 레코드의 순서는 의미가 없다
- 컬럼의 무순서성 : 컬럼은 순서가 없고, 이름과 값의 쌍
- 컬럼값의 원자성 : 모든 값들은 나눌 수 없는, 단 하나의 의미
key의 역할
- 릴레이션의 레코드를 유일하게 식별하는 값
key의 속성
- 유일성과 최소성을 만족하는 컬럼
키의 종류
- 수퍼키 : 유일성 만족
- 후보키 : 유일성, 최소성 만족 (기본키가 될 수 있는 후보)
- 기본키 : 레코드의 구분을 위해 선택된 후보키
- 외래키 : 참조된 다른 릴레이션의 기본키
키의 참조
- 외래키
- 두 릴레이션에 포함된 레코드 간 연관성을 표현
관계형 모델의 제약조건
- 영역 제약 조컨 : 컬럼에 정의된 영역(도메인)에 속한 값으로만 컬럼값이 결정됨
- 키 제약조건 : 레코드를 고유하게 구별하는 값으로 구성
- 개체 무결성 제약조건 : 어떠한 기본키 값도 NULL이 될 수 없음
- 참조 무결성 제약조건 : 반드시 존재하는 레코드의 기본키만 참조 가능
NULL
- 미지의 값에 대한 표현 (없거나 0이 아닌 값)
- 입력된 적이 없는 값
- 적용 불가능한 값
ERD의 변환
논리적 데이터 모델링
- 관계형 데이터베이스 시스템(RDBMS)의 구현 모델에 맞춰 데이터의 구조와 관계 표현
- 작성된 ERD를 RDBMS가 수용 가능한 구조로 변환
관계형 모델로의 변환
- 개체 집합은 릴레이션으로 변환
- 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
- 일 대 일 관계 : 두 릴레이션 중에서 한 릴레이션의 기본 키를 다른 릴레이션에서 외래키로 참조
- 일 대 다 관계 : 1쪽의 기본키를 다 쪽 릴레이션에서 외래키로 참조
- 다 대 다 관계 : 두 릴레이션의 기본 키를 각각 참조하는 외래키를 복합 키 형태의 컬럼으로 구성
- 다중 값 송성: 릴레이션의 기본 키를 참조하는 외래키와 다중값 속성으로 별도의 릴레이션 구성
- 관계 집합의 속성 : 외래키가 위치한 릴레이션의 컬럼으로 삽입
- 다 대 다 관계에서는 관계 집합이이 하나의 릴레이션으로 만들어짐 - 양쪽 기본키가 외래키이자 기본키
- 학생이 수강신청을 해야 생성되는 신청 시각은 관계집합의 속성으로 외래키를 따라간다
- 일 대 다, 다 대 일의 경우에도 외래키 쪽으로 관계집합의 속성이 따라간다
- 일 대 일의 경우에는 어느 쪽으로든 FK를 줄 수 있지만 되도록 많은 쪽의 PK를 적은 쪽의 FK로 주는 것이 좋다
- 약한 개체집합의 경우 강한 개체집합의 외래키가 기본키가 된다 - 참조 무결성을 지키기 위해
- 다중값 속성의 변화를 알아봐야함
데이터 연산
관계 연산의 개념
- 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
- 사용자의 관점에서 필요한 데이터를 릴레이션에서 추출하는 방법을 제공하는 도구
- 관계 대수
- 관계 연산을 정의하는 방법
- 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자(교집합, 합집합, 집계함수 등)로 구성
- 관계 대수 연산자는 새로운 임시 릴레이션을 생성
- 연산자를 중첩하여 연산 처리 절차를 표현
SELECT 연산
- 주어진 릴레이션에서 조건을 만족하는 레코드를 갖는 릴레이션을 생성
- ⍺조건(R)
- 조건 비교자 = != < > <= >=
- 조건의 결합 = and or
사용 예 : ⍺거주지 = '서울'^나이 > 30 (학생) -> 거주지가 서울이고 나이가 30 초과인 학생(테이블)
프로젝트 연산
- 기술된 컬럼만 갖는 릴레이션으로 재구성
- ℼ 컬럼리스트1, 컬럼리스트2... (R)
사용 예 : ℼ학생이름, 소속학과(학생)
관계 대수 연산식의 활용
ℼ 학생이름 (a거주지 = '서울'(학생))
-> 학생 릴레이션에서 거주지가 서울인 학생의 이름
-> SELECT연산과 프로젝트 연산을 혼합하여 사용할 수 있다
집합 연산자
- 수학적 집합 이론에서의 이진 연산
- 합집합, 교집합, 차집합
- 집합, 레코드는 집합에 보함된 원소
- 집합 연산자 사용 조건 -> 릴레이션의 차수가 동일한 경우, 도메인이 반드시 동일해야함
카티시언 프로덕트 연산
- 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자
- 연관성을 따지지 않고 모든 조합을 반환함
R x S
JOIN 연산
- 조건 기반의 카티션 프로덕트 연산
- 조인 연산과 셀렉트의 조합으로 이루어짐
- PK FK를 이용하여 정확한 데이터만을 얻을 수 있음
집계 함수 연산
- 통계 연산을 수행
- AVG, SUM, MIN, MAX, COUNT 등의 집계 함수
반응형
'DB > RDBMS' 카테고리의 다른 글
6. SQL(3) (0) | 2021.04.29 |
---|---|
4. SQL(1) (0) | 2021.04.19 |
2. 데이터베이스 모델링 (0) | 2021.03.13 |
댓글