Study/강의 메모

관계형 데이터 모델 수업

voider 2022. 3. 15. 22:42

논리적 모델링 단계

  • DBMS에서 사용하는 데이터 모델에 맞추어 데이터를 표현하는 과정
    • 즉, ERD를 어떻게 RDBMS에 어떻게 담을 것인가 논의하는 과정
  • 데이터 정의 언어 DDL로 기술된 개념 스키마 생성
  • 관계형 모델(relation model)
    • 1969년 에드가 F.코드에 의해 제안
    • 릴레이션으로 데이터를 표현하는 모델
    • 데이터 표현이 단순하고 직관적인 구조화 모델
    • 현재 대다수 DBMS의 기초
      • Oracle, DB2, PostgresSQL, MySQL, MSSQL 등

릴레이션 구성

관계형 모델에서 표와 유사하게 2차원 구조로 데이터를 표현하는 구조를 릴레이션이라고 함.

스프레드 시트와 유사한 구조다.

관계형 모델은 위와 같은 표 형태로 구조화하고 저장하는 모델을 뜻한다.

일상생활에서 데이터를 저장하기 위해 사용하는 방식과 매우 유사하기 때문에 직관적인 구조화 모델이라고 한다.

관계형 모델에서는 이런 표를 릴레이션이라고 부른다.

이 릴레이션에 표 머리를 스키마라고 한다. 그리고 각각의 행들을 튜플, 또는 레코드라고 한다.

각 컬럼은 컬럼, 속성, 필드 등 다양하게 부르지만, 일반적으로 컬럼이란 말을 사용함.

관계형 모델 릴레이션은 두 개의 메타데이터로 하나의 값을 데이터화 시키는 가장 최적화된 구조다.

표와 릴레이션 모델은 뭐가 다를까?

  1. 레코드의 유일성
    1. 완벽하게 동일한 레코드는 존재하지 않는다.
  2. 레코드의 무순서성
    1. 레코드 순서는 의미가 없다.
  3. 컬럼의 무순서성
    1. 컬럼은 순서가 없다
  4. 컬럼값의 원자성
    1. 모든 값은 나눌 수 없는 단 하나의 의미. 원자성을 위배하는 것은 제대로 된 릴레이션이라고 할 수는 없음

Key의 역할

여기서 법학과 번호만 바꾸려면 어떻게 해야 할까? 하나의 레코드를 지목할 수 있는 방법이 필요하다. 모든 레코드가 유일한 값을 가지고 있는 컬럼이 Key다.

속성

개체집합에서 하나의 개체를 구분하는 것이 키 속성임. 키는 각각의 레코드를 식별할 수 있는 값을 담고 있는 컬럼이다. 유일성은 개념적 모델링, 논리적 모델링에서 모두 유효한 키 속성이다.

논리적 모델링에서는 최소성이라는 속성이 하나 더 있다.

더이상 축소할 수 없을 정도로 작게 만드는 것이 최소성이다.

키는 유일성과 최소성을 모두 만족해야 한다.

종류

  • 수퍼 키super key: 유일성 만족
    • 두 개의 컬럼을 합쳐서 하나의 키로 사용할 수도 있음.
    • 예) 학과 이름, {학과 이름, 단과대학}, 주소, 전화번호, {전화번호, 졸업학점} 등
  • 후보 키candidate key: 유일성, 최소성 만족
    • 예) 학과 이름, 주소, 전화번호
  • 기본 키primary key: 레코드의 구분을 위해 선택된 후보 키
  • 외래 키foreign key: 참조된 다른 릴레이션의 기본 키
    • 두 릴레이션에 포함된 레코드 간 연관성을 표현

관계형 모델 제약 조건

  • 영역 제약 조건
    • 컬럼된 정의된 영역(domain)에 속한 값으로만 컬럼 값이 결정이렇게 함으로써 데이터 무결성을 유지함.
    • 즉, 정의된 영역을 벗어나는 값을 저장할 수 없음.
  • 키 제약 조건
    • 키는 레코드를 고유하게 구별하는 값임. 서로 다른 레코드는 절대 같은 키를 가질 수 없음.
  • 개체 무결성 제약 조건
    • 어떠한 기본 키 값도 null이 될 수 없음
  • 참조 무결성 제약 조건
    • 반드시 존재하는 레코드의 기본 키만 참조할 수 있다.
    • 즉, NULL이 아닌 것만 참조할 수 있다.

NULL의 의미

  • NULL은 없음 또는 0이 아닌 미지의 값에 대한 표현이다. 즉, 입력된 적이 없는 값이다.
  • 적용 불가능한 값

논리적 데이터 모델링

  • DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
  • 데이터 정의 언어 DDL로 기술된 개념 스키마 생성
  • 논리적 데이터 모델링의 필요
    • RDBMS 구현 모델에 맞춰 데이터 구조와 관계를 표현
    • 개념적 모델링 단계에서 작성된 ERD를 RDBMS가 수용 가능한 구조로 변환

ERD 변환 과정

  1. 개체 집합: 개체 집합은 릴레이션으로 변환
  2. 약한 개체 집합: 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
    1. 약한 개체 집합은 다른 하나가 존재하지 않으면 존재할 수 없는 것을 뜻함.
    2. 이를 테면 학생 릴레이션이 있어야, 수강 릴레이션이라는 것이 존재할 수 있는 것이 약한 개체 집합임.
  3. 일대일 관계: 두 릴레이션 중 한 릴레이션의 기본 키를 다른 릴레이션에서 외래 키로 참조
    1. 이때 양쪽 어느 쪽이든 외래 키를 가질 수 있다. 중요한 건 되도록이면, 레코드 갯수가 적은 쪽으로 가는 것이 좋다.
  4. 일대다 혹은 다대일 관계: 1 쪽 기본 키를 N쪽 릴레이션에서 외래 키로 참조
  5. 다대다 관계: 관계 릴레이션을 생성하고 두 릴레이션의 기본 키를 각각 참조하는 외래 키를 복합키 형태의 컬럼으로 구성
  6. 다중값 속성: 릴레이션의 기본 키를 참조하는 외래 키와 다중값 속성으로 별도의 릴레이션으로 구성
  7. 단계 집합의 속성: 외래 키가 위치한 릴레이션의 컬럼으로 삽입

데이터 연산

관계 연산의 개념

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

SELECT 연산

  • 주어진 릴레이션에서 특정 조건을 만족하는 레코드를 갖는 릴레이션을 생성한다.
  • 조건: =, ≠, <, >, ≤, ≥
  • 조건 결합: AND, OR

프로젝트 연산

  • 기술된 컬럼만 갖는 릴레이션으로 재구성

??? 모든 컬럼을 조회하는 것과 지정한 컬럼만 뽑아내는 것 모두 SELECT문에서 처리하기 때문에 같은 건 줄 알았는데 개념적으로는 SELECT와 PROJECT연산으로 구분하는 듯하다.

집합 연산자

  • 수학적 집합 이론에서의 이진 연산
    • 합집합
    • 교집합
    • 차집합
  • 릴레이션은 집합, 레코드는 집합에 포함된 원소
  • 집합 연산자 사용 조건
    • 릴레이션 R과 S의 차수가 동일
    • 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일

카티시언 프로덕트 연산

  • 두 릴레이션에 포함된 레코드 간 모든 조합을 생성하는 이항 연산자

카테시언 프로덕트는 R과 S의 모든 조합을 생성한다.

별 쓸모 없을 것 같지만 join 연산 내부적으로 사용됨.

조인 연산

  • 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
    • 카티시언 프로덕트로 결과를 만들고 거기서 SELECT 연산으로 원하는 데이터를 걸러냄.
  •  

'Study > 강의 메모' 카테고리의 다른 글

SQL(1)  (0) 2022.03.22
데이터 모델링 수업  (0) 2022.03.15