본문 바로가기
DB/RDBMS

3. 관계형 모델

by nomfang 2021. 3. 31.
728x90
반응형

데이터베이스 모델링 과정

개념적 데이터 모델링의 결과

계좌와 학생 사이에 보유라는 관계가 있는 경우

학생이 없으면 계좌가 존재할 수 없기 때문에

계좌는 약한 개체가 되고 학생은 강한 개체가 된다

-> 약한 개체는 2중 사각형, 관계는 2중 마름모로 표현

논리적 데이터 모델링 단계

  1. DMBS에서 사용하는 데이터 모델에 맞추어 데이터를 표현하는 과정
  2. 데이터 정의 언어로 기술된 개념 스키마 생성이 최종 목표
  3. 관계형 모델
    • 1969년 에드가F.코드에 의해 제안
    • 릴레이션(관계)으로 데이터를 표현하는 모델
    • 데이터 표현이 단순하고 직관적 구조화 모델
    • 대다수의 DBMS의 기초 : RDBMS - Oracle, MySQL, MSSQL등

릴레이션의 구성

  • 2개의 메타데이터에 의해서 하나의 값이 만나면 데이터가 된다
  • 특정 시점에서의 릴레이션과 스키마에 해당하는 레코드들을 각각 인스턴스라고 한다

릴레이션의 특징

  1. 레코드의 유일성 : 중복된 레코드 존재 불가
  2. 레코드의 무순서성 : 레코드의 순서는 의미가 없다
  3. 컬럼의 무순서성 : 컬럼은 순서가 없고, 이름과 값의 쌍
  4. 컬럼값의 원자성 : 모든 값들은 나눌 수 없는, 단 하나의 의미

key의 역할

  • 릴레이션의 레코드를 유일하게 식별하는 값

key의 속성

  • 유일성과 최소성을 만족하는 컬럼

키의 종류

  1. 수퍼키 : 유일성 만족
  2. 후보키 : 유일성, 최소성 만족 (기본키가 될 수 있는 후보)
  3. 기본키 : 레코드의 구분을 위해 선택된 후보키
  4. 외래키 : 참조된 다른 릴레이션의 기본키

키의 참조

  • 외래키
  • 두 릴레이션에 포함된 레코드 간 연관성을 표현

관계형 모델의 제약조건

  • 영역 제약 조컨 : 컬럼에 정의된 영역(도메인)에 속한 값으로만 컬럼값이 결정됨
  • 키 제약조건 : 레코드를 고유하게 구별하는 값으로 구성
  • 개체 무결성 제약조건 : 어떠한 기본키 값도 NULL이 될 수 없음
  • 참조 무결성 제약조건 : 반드시 존재하는 레코드의 기본키만 참조 가능

NULL

  • 미지의 값에 대한 표현 (없거나 0이 아닌 값)
    • 입력된 적이 없는 값
    • 적용 불가능한 값

ERD의 변환

논리적 데이터 모델링

  • 관계형 데이터베이스 시스템(RDBMS)의 구현 모델에 맞춰 데이터의 구조와 관계 표현
  • 작성된 ERD를 RDBMS가 수용 가능한 구조로 변환

관계형 모델로의 변환

  1. 개체 집합은 릴레이션으로 변환
  2. 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
  3. 일 대 일 관계 : 두 릴레이션 중에서 한 릴레이션의 기본 키를 다른 릴레이션에서 외래키로 참조
  4. 일 대 다 관계 : 1쪽의 기본키를 다 쪽 릴레이션에서 외래키로 참조
  5. 다 대 다 관계 : 두 릴레이션의 기본 키를 각각 참조하는 외래키를 복합 키 형태의 컬럼으로 구성
  6. 다중 값 송성: 릴레이션의 기본 키를 참조하는 외래키와 다중값 속성으로 별도의 릴레이션 구성
  7. 관계 집합의 속성 : 외래키가 위치한 릴레이션의 컬럼으로 삽입

  • 다 대 다 관계에서는 관계 집합이이 하나의 릴레이션으로 만들어짐 - 양쪽 기본키가 외래키이자 기본키
  • 학생이 수강신청을 해야 생성되는 신청 시각은 관계집합의 속성으로 외래키를 따라간다
    • 일 대 다, 다 대 일의 경우에도 외래키 쪽으로 관계집합의 속성이 따라간다
  • 일 대 일의 경우에는 어느 쪽으로든 FK를 줄 수 있지만 되도록 많은 쪽의 PK를 적은 쪽의 FK로 주는 것이 좋다
  • 약한 개체집합의 경우 강한 개체집합의 외래키가 기본키가 된다 - 참조 무결성을 지키기 위해
  • 다중값 속성의 변화를 알아봐야함

데이터 연산

관계 연산의 개념

  1. 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
  2. 사용자의 관점에서 필요한 데이터를 릴레이션에서 추출하는 방법을 제공하는 도구
  • 관계 대수
    • 관계 연산을 정의하는 방법
    • 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자(교집합, 합집합, 집계함수 등)로 구성
    • 관계 대수 연산자는 새로운 임시 릴레이션을 생성
    • 연산자를 중첩하여 연산 처리 절차를 표현

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

댓글