ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 관계형 데이터베이스와 Relation Algebra
    데이터베이스 2020. 10. 21. 00:50
    728x90

    관계형 데이터 모델

    Relation example

    sID

    name

    deptName

    year

    GPA

    totalCredit

    gender

    1

    Lee

    CS

    freshman

    3.45

    15

    M

    2

    Kim

    Software

    senior

    4.3

    40

    F


    위 표는 2 tuples, 7 attributes 를 가진 Relation 입니다.

     

    Attributes

    특정 도메인의 attribute의 모든 집합을 Attributes라고 부르며 Attribute는 원자적(atomic)이여야합니다.

    원자적이라 함은 더 이상 쪼갤 수 없는 최소 단위로 이루어져야함을 말합니다.

    null 값은 모든 도메인의 member 입니다.

    Atomic attribute type

    • Integer

    • real

    • char

    • varchar

    Non-atomic attribute type

    • set

    • bag

    • list

    • composite attribute (조합형)

    Non-atomic 타입은 사용 불가능합니다.

     

    Scheme

    A1, A2, ..  An 을 attribute라고 할 때

    R = (A1, A2, …, An) 인 R을 scheme라고 부릅니다.

    그러한 Relation 의 모든 attribute와 모든 tuple을 가진 가장 큰 Relation을 Instance 라 합니다.

     

    Relation database 의 구성요소

    • Relation의 집합

    • Constraints 의 집합

      • Key constrain

        • public key

      • Entity constraint

        • Not null

      • Referential integrity constraint

        • Foreign key

        • 참조 무결성 제약

      • and more

    Relation 은 순서를 보장하지 않습니다. tuple간의 순서가 없습니다.

     

    Keys

    Relation 에서 식별가능한 유니크 키를 Super key 라고 부릅니다.

    Super key는 단일 attribute로 구성되는 경우도 있지만 그렇지 않은 경우도 많습니다.

    Super key 집합을 최소단위의 key로 그룹화 할 수 있는데 이 때 최소단위의 key 를 Candidate key라고 합니다.

    그리고 Candidate key 의 집합에서도 가장 대표되는 key 를 Primary key 라 합니다.

     

     

    Referential Integrity Constraint

    Foreign key 같은 것을 말하는데 이 때 참조하는 속성이 포인터가 아닌 값(value)으로서 표현됨

    즉 T1.t2_id 가 T2.id를 참조하고 있을 때 T1.t2_id 가 포인터가 아닌 T2.id의 값을 직접 저장하게 됨

     

    일반적인 참조 방식 = 포인터

    T2.id = 10,           T1.T2_id = 1000(T2의 주소)

     

    Relation의 참조 방식 =

    T2.id = 10,       T1.T2_id = 10

    T1이 T2를 참조하고 있으므로 T1을 Referencing relation, T2가 Referenced relation 입니다.

    Consistent = Referential integrity에 의해 T1.T2_id 는 T2.id 중 없는 값을 가져서는 안됩니다. 하지만 이런 제약사항을 어긴 tuple 이 존재할 경우 해당 Relation을 Consistent 하다 라고 말합니다.

     

    중요한 점으로 null 값은 Referential integrity에 영향을 받지 않습니다. Relation의 모든 멤버에는 null 이 있기 때문에 T1.T2_id에 null 이 있을 때 T2.id에 null 이 없다 하더라도 consistent 합니다.

     

    Relation Algebra

    데이터베이스 내부에서 쓰이는 절차적인 언어입니다. 절차적이라는 말은 연산자의 순서가 주어진다는 것입니다.

    일반적으로 SQL 문은 비절차적인 언어입니다. 언어 자체에서 연산자의 순서를 명시하지 않기 때문입니다.

    하지만 그러한 언어도 컴퓨터는 절차적으로 실행되기 때문에 내부적으로 Relation algebra로 변환되어 처리됩니다.

     

     

    Relation algebra는 입력으로 Relation이 주어지며, 출력으로는 Relation이 나옵니다.

     

     

    Projection

     

     

    Union

    Union 의 피연산 Relation 들은 반드시 같은 column 수를 갖고 있어야하며 서로 compatible 해야함

    같은 column 의 수와 이름을 가져야함 (때로는 Rename 이 필요한 이유)

    Set difference

     

    union 과 마찬가지로 same arity 을 가져야하고 서로 compatible 해야함

     

    Cartesian product

    r과 s로 만들 수 있는 모든 조합을 리턴함

    r과 s 가 서로 disjoint 하지 않으면 renaming 을 해줘야함

     

    Rename

    px(A1, A2, …, An)(E) : Relation E의 이름을 x로 바꾸고, 내부 컬럼명은 A1, A2, …, An 으로 바꾸겠다.

    px(E) : Relation 의 이름만 E에서 x로 바꾸겠다.

     

    예제

    • 학과가 CS인 남학생의 name과 GPA를 구하라

    • “CS” 또는 “EE”  deptName의 모든 수업의 title 을 가져와라

    • 첫 번째 학과보다 두 번째 학과의 예산이 더 큰 학과의 쌍을 구하라

     

    확장 관계 대수

    6개의 operator 로도 모든 query 를 표현할 수 있지만 매우 복잡하게 동작하는 경우가 있어서 이를 단순화 시키기위해 추가연산자를 제공

     

    Assignment

    ← 연산자로 특정 Relation 을 변수처럼 지정할 수 있음

     

    Set intersection

     

    Natural join

    Conditional Cartesian product 라고 생각하면 좋음

    공통된 column 끼리 묶는 연산

     

     

    예제

    2014년 가을학기에 수업을 했던 교수의 이름과 course title을 같이 가져와라

    Theta-join, Equi-join

    Outer join

    기존 Inner join 은 양쪽에 매칭되는 tuple 이 없으면 결과 테이블에 나오지 않는데 outer join 은 null 로 채움

    • Left outer join 은 왼쪽 Relation 의 tuple 은 최소한 결과테이블에 모두 있으며, 매칭되는 tuple 이 오른쪽에 없다면 오른쪽 테이블에 해당하는 내용은 null 로 채워짐

    • Right outer join 은 오른쪽 Relation 의 tuple 은 최소한 결과 테이블에 모두 있음

    • Full outer join 은 양쪽 Relation 의 tuple 은 최소한 결과 테이블에 모두 있음

    Division Operation

    r / s 는 s를 모두 포함하는 r을 찾는 연산

     

     

    댓글

Designed by Tistory.