-> 블로그 이전

[DB] 관계 데이터 모델 (Relational Data Model)

2021. 10. 12. 19:09Major`/DB

목차

    관계 데이터 모델 (Relational Data Model)

    - 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델

    - 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장

     

    기본 용어

    - 릴레이션(Relation) : 행과 열로 구성된 테이블

    - 행(Row) : 투플(Tuple)

    - 열(Column) : 애트리뷰트(Attribute) or 속성

    - 테이블 : 릴레이션(Relation)

    - 도메인(Domain)

    • 하나의 속성이 가질 수 있는 모든 값의 집합
    • 속성의 특성을 고려한 데이터 타입(INT, CHAR, VARCHAR...)

    - 널(Null)

    • 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
    • 숫자 0도 아니고, 공백도 아닌 값

    - 차수(Degree) ≥ 1

    • 한 릴레이션에 들어있는 속성(열)의 개수
    • 최소 차수 = 1
    • 자주 바뀌지 않음 ex) 고객정보, 직업, 나이...

    - 카디날리티(Cardinality) ≥ 0

    • 한 릴레이션의 행(투플)의 개수
    • 최소 카디날리티 = 0
    • 시간이 지남에 따라 계속 변함 ex) 고객이 추가되면 튜플 또한 추가됨
    • if Cardinality =0 => 고객 X (아직 데이터가 존재하지 않는다)

    차수 = 6 / 카디날리티 = 4

    릴레이션의 구성

    - 릴레이션 스키마 (Relation Schema)

    • 릴레이션의 논리적 구조
    • 릴레이션 이름과 속성 이름으로 정의 ex) 고객(고객 아이디, 고객 이름, 나이, 등급, 직업, 적립금)
    • 릴레이션의 틀
    • 자주 바뀌지 않음

    - 릴레이션 인스턴스 (Relation Instance)

    • 릴레이션에 실제 저장되는 데이터의 집합
    • 릴레이션에 포함 되어 있는 투플들의 집합
    • 시간이 지남에 따라 계속 변함

    릴레이션의 특성

    1. 투플의 유일성

    • 1개의 릴레이션에는 동일한 투플이 존재할 수 없다 -> 릴레이션은 서로 다른 투플들의 '집합'
    • 키가 존재한다 -> 각 투플들을 고유하게 식별할 수 있는 하나 이상의 속성들의 모임

    2. 속성의 원자성(단일성)

    • 한 투플의 각 속성은 단일 값(원자 값)을 가진다
    • 속성 값은 분해 불가능

    '직업'이라는 속성에 회사원, 학생 2개의 값을 가지고 있기 때문에 '직업' 속성은 허용되지 않는다.

    3. 투플의 무순서

    4. 속성의 무순서

    5. 한 속성의 값은 모두 같은 도메인 값을 가진다

    6. 속성은 서로 다른 이름을 가진다 -> 서로 다른 릴레이션 간에는 같은 이름을 가진 속성이 있어도 된다.

     

    릴레이션의 키

    - 키 (Key)

    • 릴레이션에서 투플을 유일하게 식별할 수 있는 속성 혹은 속성들의 집합
    • 각각의 투플에 포함된 속성들 중 어느 하나는 값이 달라야 한다.
    • 키가 되는 속성은 반드시 값이 달라야 한다 -> 그래야 투플들을 서로 구별할 수 있다.
    • 슈퍼키(Super Key), 후보키(Candidate Key), 기본키(Primary Key), 대체키(Alternate Key), 외래키(Foreign Key)

    키의 종류

    학번 이름 주민등록번호
    201051516 가나다 900101-1234567
    201246896 라마바 920505-2894561
    201643321 사아자 960718-1234654
    202091347 차카타 000101-3465464

    1. 슈퍼키(Super Key) : 유일성 O / 최소성 X

    - 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성들의 집합

    - 투플들을 고유하게 식별하는데 꼭 필요하지 않은 속성들을 포함할 수 있다 -> 구분되기만 하면 가능하다

    - 1개 이상 존재

    - 학번 / 주민등록번호 / (학번, 주민등록번호) / (학번, 이름) / (주민등록번호, 이름) / (학번, 주민등록번호, 이름)

    ※ '이름'은 행이 추가됨에 따라 같은 이름(유일성 X)이 나올 수 있기 때문에 '이름' 하나로는 슈퍼키가 되지 못한다.

     

    2. 후보키(Candidate Key) : 유일성 O / 최소성 O

    - 투플을 유일하게 식별할 수 있는 속성들의 최소 집합

    - 모든 릴레이션에는 최소 1개 이상의 후보키가 있다

    - 학번 / 주민등록번호

    ※ 투플을 구별하는 속성이 하나면 단일키(Single Key), 2개 이상이면 복합키(Composite Key)

     

    3. 대체키(Alternate Key)

    - 후보키 중 선택받지 못한 키

     

    4. 기본키(Primary Key)

    - 후보키 중 선택받은 키

    ※ 기본키의 특징

    • 속성이 항상 고유한 값을 가져야 한다
    • 속성이 NULL 값을 가지면 안 된다
    • 속성의 값이 변경될 가능성이 낮아야 한다
    • 테이블 당 기본키는 1개이다
    • 후보키 중 릴레이션의 특성을 가장 잘 반영하는 하나를 선택

    - 기본키 : 학번

    - 릴레이션 스키마를 표현할 때 밑줄을 그어 표시한다.

     

    5. 외래키(Foreign Key)

    - 관계 데이터 모델의 릴레이션 간의 관계를 표현한다

    - 다른 릴레이션의 기본키를 참조하는 속성이다

    - 외래키가 포함된 테이블을 자식 테이블 / 외래키 값을 제공하는 테이블을 부모 테이블

    - 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다

    - 참조되는 값이 변경되면 참조하는 값도 변경된다

    - NULL 값과 중복 값 등이 허용된다

    - 자기 자신의 기본키를 참조하는 외래키도 가능하다

    - 외래키가 기본키의 일부가 될 수 있다

    - FK라고 명시를 해줘야 한다

     

    ※ Example

    고객(고객번호, 이름, 주민번호, 주소, 핸드폰)

    도서(도서번호, 도서 이름, 출판사, 가격)

    주문(주문번호, 고객번호(FK), 도서번호(FK), 판매 가격, 주문 일자)

     

    ※ 외래키의 존재 이유 = 데이터 무결성

    - 무결성 : 데이터가 항상 정확한 값을 유지하는 성질