ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ch 04. 관계 데이터 모델과 관계 데이터베이스 제약 조건
    학교 수업/2-2 데이터베이스 기초 2021. 9. 12. 22:34
    반응형

    1. 비공식 정의

    • 릴레이션(relation)
      • 릴레이션을 표의 값들로 정의하면 행 집합 또는 열 집합으로 생각할 수 있음
      • 릴레이션의 각 행에 식별자를 부여할 수 있음
      • 릴레이션의 각 열은 열의 이름, 열의 머리글, 속성 이름으로 호출함
      • 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위

     

     

    2. 도메인, 애트리뷰트, 튜플, 릴레이션

    1. 도메인(Domain)
      • 도메인 D는 원자값들의 집합임
        • 원자값: 더 이상 나누어질 수 없는 값
      •  도메인을 명시하는 일반적인 방법은 그 도메인에 속하는 값들의 데이터 타입을 명시하는 것이 좋음
      •  도메인의 값들을 해석하기 위해서는 도메인을 위한 이름을 명시하는 것이 좋음
      •  각 도메인은 이름, 데이터 타입, 포맷을 명시할 수 있음
      • ex) Usa_phone_numbers: 미국에서 사용되는 10자리 전화번호들의 집합
      • ex) Employee_ages : 한 회사의 15세와 80세 사이 정수 값의 근로자들의 나이
      • ex) Names: 개인의 이름을 표현하는 문자열의 집합
      • ex) Social_security_numbers: 9자리의 사회보장번호들의 집합
    2. 릴레이션 스키마(Relation Schema)
      • R(A1, A2, ..., An)으로 표기함(R: 릴레이션 이름, Ai: 애트리뷰트 이름)
      • 애트리뷰트 Ai는 릴레이션 스키마 R에 서의 어떤 도메인 D와 같은 역할을 함(D는 Ai의 도메인이라고 부르고 dom(Ai)로 표기)
      • 릴레이션의 차수(degree or arity of relation)는 릴레이션 스키마의 애트리뷰트 수임
      • ex) 차수가 7인 릴레이션 STUDENT(Name, Ssn, Home_phone, Address, Office_phone, Age, Gpa)
      • ex) 데이터 타입을 사용하여 표현할 수도 있음. STUDENT(Name: string, Ssn: string, Home_phone: string, Address: string, Office_phone: string, Age: integer, Gpa: real)
      • ex) 도메인을 다음과 같이 명시함
        • dom(Name) = Names
        • dom(Ssn) = Social_security_numbers
        • dom(Home_phone) = USA_phone_numbers
        • dom(Office_phone) = USA_phone_numbers
        • dom(Gpa) = Grade_point_averages
      • r(R): 릴레이션 스키마 R(A1, A2, ..., An)의 릴레이션 r은 n-tuple들의 집합임
        • n-tuple t는 n개의 값의 순서 리스트이며 t = <v1, v2, ..., vn>으로 표기함
        • 각 vi는 dom(Ai)의 원소이거나(t[Ai], t.Ai로 표시), 널 값을 가짐
        • 스키마 R에 대하여 릴레이션의 내포(intension)라고도 부름
        • 릴레이션 인스턴스 r(R)에 대해서는 릴레이션의 외연(extension)이라고도 부름
      • 표의 틀 : relation schema(스키마), relation scheme(스킴), relation type(타입), intension(내포)
      • 표의 내용물 : relation, relation state(상태), relation instance(인스턴스), extension(외연)

     

     

    3. 공식적인 정의

    1. 릴레이션 r(R)은 n개의 도메인 dom(A1), dom(A2), ... , dom(An)상의 수학적 릴레이션으로서, R을 정의하는 도메인들의 카티션 곱(데카르트 곱)의 부분집합이므로 아래처럼 표현이 가능하다.
    2. 카디날리티(cardinality): |R|
      • 카티션 곱으로 만든 튜플의 총 개수 = |dom(A1)| X |dom(A2)| X ... X |dom(An)|
        • ex) S1 ={0, 1}, S2 ={a, b, c} -> |R| = 2 * 3 = 6
      • 차수는 애트리뷰트의 개수로 헷갈리지 않게 주의하기
    비공식 단어 공식 단어
    Table Relation
    Column Attribute/Domain
    Row Tuple
    Values in a column Domain
    Table Definition Schema of Relation(or scheme)
    Poplulated Table Extension

     

     

     

    4. 릴레이션의 특징

    1. 릴레이션 r(R)에서 튜플들의 순서
      • 릴레이션은 튜플들의 집합으로 정의된다.
      • 집합은 원소들 사이에 순서가 없으므로 릴레이션에서도 튜플들은 특정 순서를 갖지 않는다.(튜플 순서가 달라도 내용물이 같으면 같은 릴레이션임)
      • 하지만 파일 안에서는 디스크(메모리)에 물리적으로 저장이 되므로 저장 순서가 존재함
    2. 릴레이션 스키마 R에서의 애트리뷰트들의 순서
      • 우리는 R(A1, A2, ..., An)의 애트리뷰트와 t = <v1, v2, ..., vn>의 값들이 순서가 있다고 생각해볼 수 있음. 하지만 더 일반적인 추상적 정의에 의하면 순서가 중요하지 않음
      • 릴레이션 스키마 R = { A1, A2, ... , An }은 애트리뷰트들의 집합이고, 릴레이션 r(R)은 사상 r = { t1, t2, ... , tm}의 유한 집합이다. 여기서 각 튜플 ti는 R에서 D로의 사상(mapping)이고, D는 애트리뷰트 도메인들의 합집합임
      • 즉, D = dom(A1) U dom(A2) U ... U dom(An)임. 이 정의에서 r의 모든 사상 t에 대하여 t(Ai)는 dom(Ai)에 속해야함. 각 사상 ti를 튜플이라고 부름
      • Tuple = (<애트리뷰트>, <값>) 쌍들의 집합으로 생각할 수 있음
      • 이렇게 정의하면 각 애트리뷰트의 이름이 값과 함께 표시되므로 순서가 중요하지 않게 댐
    3. 튜플 내에서의 값들과 널(NULL)
      • 튜플 내의 각 값들은 원자(atomic)값임
        • 복합 애트리뷰트(Composite), 다치 애트리뷰트(Multivalued)가 불가능
        • 평면 관계 모델(Flat relational model)라고도 부름
        • 이런 원자 특성을 제1정규형(first normal form)이라고 부름
        • 복합 애트리뷰트나 다치 애트리뷰트가 있으면 Non first normalform(NF^2)나 nested relations라고 부름
      • 널 값은 값을 알 수 없거나, 적용할 수 없는 경우에 사용됨

     

     

     

    5. 관계 모델의 제약 조건

    1. 본질적 모델 기반 제약 조건 / 함축적 제약 조건(Inherent model-based constraints / implicit constraints)
      • 데이터 모델 자체에 존재하는 제약 조건(ex 릴레이션은 중복 튜플을 가질 수 없음)
    2. 스키마 기반 제약 조건 / 명시적 제약 조건(Schema-based constraints / explicit constraints)
      • 관계 데이터 모델의 스키마에 직접적으료 표현이 가능한 제약 조건
      • 키 제약 조건, 널에 대한 제약 조건, 엔티티 제약 조건, 참조 무결성 제약 조건
      • 추가적으로 도메인 제약 조건, 데이터 종속성이 있음
    3. 응용 기반 제약 조건(Application-based constraints)
      • 응용 프로그램에 의해 표현되고 시행되는 제약 조건
      • 의미적 제약 조건(semantic constraints) 또는 business rule(비즈니스 규칙, 업무 규칙)이라고도 부름
    4. 제약 조건 종류
      • 스키마 기반 제약 조건
        • 키 제약 조건
        • 널 제약 조건
        • 개체 무결성 제약 조건(Entity integrity)
        • 참조 무결성 제약 조건(Referential integrity)
      • 추가 제약 조건
        • 도메인 제약 조건 - 타입에 맞게 작성해야함
        • 데이터 의존성(data dependency)

     

     

     

    6. 스키마 기반 제약 조건 - 도메인 제약 조건

    1. 각각의 애트리뷰트 A의 값이 반드시 A의 도메인 dom(A)에 속하는 원자값이어야 함
    2. 데이터 타입은 데이터베이스 언어(SQL)에 의해 제공받음
    3. 값의 일부 범위를 지정할 수도 있음
    4. 값을 명시적으로 나열할 수도 있음

     

     

    7. 스키마 기반 제약 조건 - 키 제약 조건

    1. 릴레이션은 튜플들의 집합임 -> 릴레이션의 모든 튜플은 중복되지 않아야함
    2. R의 슈퍼키(Superkey)
      • SK: R의 애트리뷰트들의 집합
      • 서로 다른 두 튜플 t1과 t2에 대하여 t1[SK] != t2[SK]가 성립하고 이런 SK를 슈퍼키라고 함
      • 슈퍼키 SK는 R의 상태 r에서 SK가 같은 값을 가지는 서로 다른 튜플이 존재하지 않는다는 유일성 제약 조건(uniqueness constraint)을 명시함
      • 모든 릴레이션은 적어도 하나의 슈퍼키가 존재함
    3. 키(key) 
      • 슈퍼키는 중복되는 애트리뷰트가 존재하므로 중복성을 갖지 않게 하는 키(key) 개념이 필요함
      • 어떤 릴레이션 스키마 R의 키 K는 R의 슈퍼키이고, K에서 어떤 애트리뷰트라도 빠지면 더 이상 K'가 슈퍼키가 될 수 없다는 성질을 가지고 있음
        1. 서로 다른 두 튜플은 동일한 키 안의 애트리뷰트 값을 가질 수 없음
        2. 키는 최소의 슈퍼키임. 즉, 슈퍼키 내의 어떤 애트리뷰트도 제거하지 않아야 유일성 제약 조건을 만족할 수 있음
      • 따라서 키는 슈퍼키이지만, 슈퍼키는 최소의 슈퍼키가 아니라면 키가 아닐 수도 있음
      • ex) Ssn은 같은 값을 가지는 사람이 존재할 수 없기 때문에 릴레이션의 키라고 할 수 있음. Ssn을 포함하는 어떤 애트리뷰트들의 집합도 슈퍼키가 될 수 있음(ex {Ssn, Name, Age}는 슈퍼키이지만 키는 아님)
    4. 후보 키(Candidate key)
      • 릴레이션 스키마는 하나 이상의 키를 가질 수 있음(주민번호와 학생 학번은 후보키가 될 수 있음)
      • 이런 경우 각 키를 후보키라고 함
      • 일반적으로 후보키들중에 하나를 기본 키(primary key)로 지정함. 기본 키는 하나 또는 적은 수의 애트리뷰트를 가진 기본키를 선택하는 것이 더 좋음

     

     

     

     

    8. 관계 데이터베이스와 관계 데이터베이스 스키마

    1. 관계 데이터베이스 스키마 S는 릴레이션 스키마들의 집합 S = {R1, R2, ..., Rm}과 무결성 제약 조건들의 집합 IC임
    2. S의 관계 데이터베이스 상태(state) DB는 릴레이션 상태들의 집합임
      • DB = { r1, r2, ..., rm}임( ri = Ri의 상태(state), ri 릴레이션은 IC에서 명시된 무결성 제약 조건들을 만족함)
    3. 여러 릴레이션에서 동일한 실세계 개념을 나타내는 애트리뷰트들이 같은 이름을 가질 수도 있고, 다른 이름을 가질 수도 있음(ex 아래 사진에서 EMPLOYEE의 Dno와 PROJECT의 Dnum은 같은 개념/정보임)
    4. 반대로 서로 다른 릴레이션에서 서로 다른 개념을 나타내는 애트리뷰트들이 같은 이름을 가질 수도 있음(ex PROJECT의 Pname과 DEPARTMENT의 Dname 애트리뷰트 대신에 똑같은 애트리뷰트 이름 Name을 사용할 수도 있음. 같은 이름을 공유하지만 PROJECT는 프로젝트 이름, DEPARTMENT는 부서 이름으로 서로 다른 뜻을 가짐)

    COMPANY 데이터베이스 스키마
    COMPANY 스키마와 대응하는 관계 데이터베이스 상태

     

     

     

    9. 개체(엔티티) 무결성 제약 조건

    1. 어떠한 기본키 값도 널 값이 될 수 없음(S에서 각 관계 스키마 R의 기본키 애트리뷰트 PK는 r(R)의 튜플에서 널 값을 가질 수 없음)
    2. 왜냐하면 기본키 값은 한 릴레이션 내에서 각 튜플을 식별하는데 사용되는데 기본키 값이 널 값이면 튜플들을 식별할 수 없기 때문임

     

     

    10. 참조 무결성 제약 조건

    1. 두 릴레이션 사이에 명시되는 제약 조건
    2. 한 릴레이션에 있는 튜플이 다른 릴레이션에 있는 튜플을 참조하려면 반드시 참조되는 튜플이 그 릴레이션 안에 존재해야함(ex EMPLOYEE 릴레이션의 Dno애트리뷰트와 DEPARTMENT 릴레이션의 Dnumber 애트리뷰트와 일치해야 해당 애트리뷰트를 가지고 있는 튜플 내의 다른 애트리뷰트를 참조 가능)
    3. 외래키(foreign key)
      • 외래키가 되기 위해서는 두 릴레이션 스키마 R1과 R2 사이에 아래처럼 참조 무결성 제약 조건을 만족해야함
        • FK의 애트리뷰트는 R2의 기본키 PK의 애트리뷰트와 동일한 도메인을 가져야함
        • 현재 상태 r1(R1)의 한 튜플 t1 내의 FK값은 현재 상태 r2(R2)의 어떤 튜플 t2내의 PK값과 일치하거나 널값을 가져야함(t1[FK] = t2[PK]이고 t1이 t2를 참조한다고 말함)
        • 이때 R1은 참조한 릴레이션, R2는 참조된 릴레이션이라고하고, R1에서 R2로의 참조 무결성 제약 조건을 만족했다고 함
      • 외래키는 동일한 릴레이션을 참조할 수도 있음(ex 8번 사진에서 EMPLOYEE에서 Super_Ssn은 상사의 번호라 EMPLOYEE의 Ssn을 참조함)
    4. 각 외래키로부터 그것이 참조하는 릴레이션까지 화살표를 그려서 도식적으로 표현할 수도 있음

     

     

     

    11. 갱신 연산(Update Operation)과 제약 조건 위반의 처리

    1. 관계 모델의 연산은 추출(retrieval)과 갱신(update)로 나눌 수 있음
    2. 기본 갱신 연산
      • 튜플 삽입(insert)
      • 튜플 삭제(delete)
      • 튜플 갱신 또는 수정(modify or update) - 튜플안의 애트리뷰트의 값을 바꾸는데 사용
    3. 제약 조건 위반을 했을 때 처리하는 방법
      • 위반의 원인이 되는 작업을 취소함(REJECT option)
      • 작업을 수행하지만, 사용자에게 위반 사실을 알림
      • 위반이 수정되도록 추가 업데이트를 트리거함(CASCADE option, SET NULL option)
        • 삭제되는 튜플을 참조하는 모든 튜플을 삭제하는 연쇄 삭제를 함
      • 사용자 지정 오류 수정 루틴을 실행함
    반응형

    댓글

Designed by Tistory.