CS - DB(4) 관계 데이터 모델링

김영현·2024년 10월 30일
0

CS

목록 보기
25/32
post-thumbnail

학습 목표

  • 관계 데이터 모델의 기본 용어를 익힌다.
    • 튜플, 릴레이션, 속성, 도메인, 널, 차수, 카디널리티, 키(유일성, 최소성)
  • 릴레이션을 구성하는 요소와 특성을 이해한다.
  • 릴레이션에서 키의 역할과 종류를 알아본다.
  • 무결성 제약의 의미와 필요성을 이해한다.

번외) 유일성과 최소성

관계 데이터 모델의 기본용어 들을 보니 어디서 본 용어들이다.
기억을 되짚어보니... 2019 KAKAO BLIND RECRUITMENT 문제: 후보키에 나왔구나?
당시 문제를 풀땐 무슨말인지 이해하느라 조금 고생했던 것 같은데, 지금 돌이켜보면 DB관련 문제였으니 당연히 관련 용어가 나왔을 뿐이다.
마치 국어의 비문학 지문처럼 배경지식이 있다면 수월하게 풀리는 종류의 문제...아마 문제를 낸 카카오측에서도 그러한 배경지식을 가진 사람을 걸러내기 위해 문제를 내지 않았을까?

아무튼 관계 데이터 모델링이 무엇인지 부터 파악해보자.


관계 데이터 모델이란?

개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델이다. 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장한다.
...😭 무슨 말인지 감히 안잡힌다. 본 챕터를 이해하기위해 꼭 알고있어야하는 단어의 뜻들을 한 번 살펴보자.

  • 릴레이션 : 하나의 개체에 관한 데이터를 2차원 rxc 구조로 저장한 것. 파일 관리 시스템에서 파일에 대응된다. 즉, 2차원 표라고 생각하면 된다.
  • 속성 : 릴레이션의 열(속성)을 나타낸다. 파일 관리 시스템에서 필드에 대응됨.
  • 튜플 : 릴레이션의 행. 파일 관리 시스템의 레코드에 대응.
  • 도메인 : 하나의 속성(열)이 가질 수 있는 모든 값의 집합이다. (데이터 타입, 자료형)
  • 널(null) : 프로그래밍의 null과 동일. 값을 모르거나 해당되는 값이 없음을 뜻함.
  • 차수(degree) : 하나의 릴레이션에서 속성의 전체 개수. 즉, 열의 개수
  • 카디널리티(cardinality) : 하나의 릴레이션에서 튜플의 전체 개수. 즉, 행의 개수

알듯 말듯하다.

릴레이션의 예시를 한 번 살펴보자.

고객릴레이션

차수는 6개, 카디널리티는 4개라고 정의할 수 있겠음!

대충 이해 가는듯 하고?🤔 보통 웹 사이트의 admin페이지에서 볼 수 있는 표들과 흡사하다.


릴레이션의 구성

릴레이션은 다음과 같이 구성된다.

릴레이션 스키마

릴레이션 스키마는 릴레이션의 논리적 구조다. 쉽게 말하자면 위에서 설명한 릴레이션이 들어있는 릴레이션 틀이라고 볼 수 있다.

릴레이션의 이름과 포함된 모든 속성의 이름으로 정의한다. 예를들어 고객 릴레이션
고객개체에 포함된 속성들인 고객아이디, 고객이름, 나이 등급....으로 릴레이션 스키마가 이루어져있다.

또한 정적인 특징을 가진다.
=> 예를들어 고객개체에 주소라는 속성이 추가된다면 변화가 이루어지겠지만, 이는 잦은 변화를 의미하지는 않기에 정적이라고 표현한다.

릴레이션 인스턴스

인스턴스는 데이터베이스에 저장된 실제 값을 뜻한다고 하였다.

어느 한 시점에 존재하는 튜플들의 집합을 뜻한다.

또한 당연하게도 동적인 특징을 갖는다.
=> 이름, 나이 등은 쉽게 변하지 않으나 적립금, 등급, 닉네임...등은 쉽게 변한다.

데이터베이스 스키마

데이터베이스 전체 구조를 말한다.(릴레이션 스키마들의 모음)

데이터베이스 인스턴스

데이터베이스를 구성하는 릴레이션 인스턴스의 모음이다.


릴레이션의 특성 4가지

릴레이션을 아우르는 특성은 총 4가지가 있다.

  • 튜플의 유일성 : 하나의 릴레이션에는 동일한 튜플이 존재할 수 없음.
    => 튜플은 을 의미한다. 만약 행에 존재하는 값이 모두 같다면, 구별이 불가능하다. 그러므로 각 행유일하게 구분되어야 한다.
  • 튜플의 무순서 : 튜플 간 순서가 무의미하다.
    => 고객 릴레이션에서 튜플(행)의 위치를 서로 옮기더라도 의미는 변하지 않는다.
  • 속성의 무순서 : 릴레이션에서 속성간 순서는 무의미하다.
    => 고객 릴레이션에서 속성(열)의 위치를 서로 옮기더라도 의미는 변하지 않는다.
  • 속성의 원자성 : 속성값으로 원자 값만 사용할 수 있다.
    => 원자 값이란, 하나의 값. 다중값을 가지면 릴레이션을 분해해야한다. 다음 챕터에서 무슨 뜻인지 정확히 살펴보자.

키(Key)

튜플의 유일성을 지키기위하여 각 행은 구별되어야한다. 따라서 릴레이션에서 튜플들을 유일하게 구별하는 값이 필요한데 이게 바로 다.

키의 특성

키는 그냥 만드는 게 아니라, 속성or속성들의 집합들로만 구성되며 아래와 같은 특성을 가진다.

  • 유일성(uniqueness) : 하나의 릴레이션 내 모든 튜플은 서로다른 키값을 가진다.
  • 최소성(minimality) : 꼭 필요한 최소한의 속성들로만 키를 구성해야 한다.

꼭 필요한 최소한의 속성이란 뭘까? 키의 종류에서 알아보자.

키의 종류

  1. 슈퍼키(super key) : 유일성만 만족하는 키다. 즉, 최소성은 만족하지 않는다.

    고객 릴레이션의 슈퍼키고객 아이디고객 아이디를 포함한 모든 속성집합이다.

    아니, 적립금도 서로다른 값을 가지고있는데 구분되지 않느냐? 라고 할수도 있다.

    => 엄격근엄진지하게 말하자면 슈퍼키의 정의에 어긋나지는 않아보인다. 다만 데이터 베이스 설계관점에서 바라본다면 상식선에서 예측 가능한 미래의 데이터도 고려해야한다. 따라서 적립금, 나이, 이름, 직업은 중복될 우려가 존재하여 유일성을 만족하지 못한다고 판별한다.

  2. 후보키(candiate key) : 유일성, 최소성을 둘 다 만족하는 키다.
    고객 릴레이션의 후보키는 고객 아이디하나만 존재한다. 만약 주소라는 속성이 존재했다면, 고객 이름+ 주소도 후보키로 가능했을지 모른다.(세대 구성원 중 동명이인은 일반적으로 고려하지 않는다)

  3. 기본키(primary key) : 후보키중 기본적으로 사용하기 위해 선택한 키를 뜻한다.
    자연스레 고객 아이디가 기본키가 되겠다.

  4. 대체키(alternate key) : 기본키로 선택되지 못한 후보키 모음을 뜻한다.

집합으로 나타낸다면 다음과 같다.

기본키,대체키 ⊂ 후보키 ⊂ 슈퍼키

번외) 외래키

다른 릴레이션의 기본키를 참조하는 속성, 속성들의 집합(키)이다.
릴레이션 간의 관계를 나타내는 키다.

고객 릴레이션주문 릴레이션주문이라는 관계로 이루어져있다.
즉, 주문 릴레이션주문 고객의 정보는 고객 릴레이션고객 아이디와 일치한다.
따라서 참조할 수 있고, 이를 이용한 키를 외래키라고 한다.

당연한 말이지만 기본키와 외래키의 이름은 달라도 되지만(고객아이디 vs 주문고객), 도메인(자료형. 여기서는 char)은 같아야 한다.

또한 같은 릴레이션의 기본키를 참조하는 외래키도 정의 가능하며 외래키의 속성은 null값을 가질 수 있다!


관계 데이터 모델의 제약조건

무결성 제약조건

  • 무결성이란? : 데이터를 결함 없이 정확하고 유효하게 유지하는 것
  • 개체 무결성 제약조건 : 기본키를 구성하는 모든 속성은 null값 x
  • 참조 무결성 제약조건 : 외래키는 참조할 수 없는 값을 가질 수 없음(꼭 참조를 해야함)
profile
모르는 것을 모른다고 하기

0개의 댓글