Introduction to the Relational Model

Favorite Sound·2022년 5월 10일
0

Database System Concepts

목록 보기
1/1

Structure of Relational Databases

Table과 Relation의 개념 비교

  • 관계형 데이터베이스는 테이블들로 이루어져 있다.
  • 각 테이블은 어떠한 관계를 나타낸다. (Relation) 예를 들어, course라는 테이블을 관계로써 생각한다면, course_id와 각 course를 나타내는 값인 title, dept_name, credits간의 관계로 생각할 수 있다. 또는, prerequisite이라는 테이블은 courseprereq_course간의 관계를 나타낸다.
  • 이를 일반화해보면, 테이블의 각 행은 여러 값들 간의 관계를 나타내고 있다고 볼 수 있다. → TableRelation의 추상화이다 라고 생각할 수 있다.
    • 수학 용어 중 값들의 모음을 나타내는 tuple, 또는 n개의 값을 가지는 모음인 n-tuplerow가 대응된다.
    • attributecolumn과 대응된다.
    • relationtable과 대응된다.

용어 정리

  • Relation instance란, 어떤 relation의 특정 instance, 즉 특정 행 여러 개를 모아둔 집합이라고 생각할 수 있다. → 따라서 우리는 행의 순서를 고려하지 않고 relation의 균등함을 판단한다.
  • attribute에서 가능한 값을 domain이라고 한다. (정의역?)
    • 모든 relation의 모든 attribute의 각 domainatomic해야만 한다. 즉 domain의 구성 요소들이 원자성을 가져야만 한다. 이 때 atomic함을 잘 정의한다면, 굳이 억지로 요소를 쪼갤 필요가 없다.
    • 예를 들어, 전화번호를 010-1234-5678에서 010, 1234, 5678으로 쪼개서 의미를 가지지 않는다면, 이렇게 쪼갤 필요 없이 010-1234-5678자체가 atomic하다고 볼 수 있다.

Database Schema

  • Database schema: 데이터베이스의 논리적 설계
  • Database instance: 특정 시점의 데이터베이스 스냅샷

RelationRelation schema

  • Relation을 프로그래밍 언어의 변수에 대응된다고 하면 Relation schema는 프로그래밍 언어의 타입 정의에 대응된다고 할 수 있다.
department(dept_name, building, budget)

위와 같이 Relation schema를 나타낼 수 있다.

Keys

Key의 종류

  • Relation에 속한 tuple을 어떻게 구분할 수 있을까? → 어떤 두 tuple도 겹치치 않는 값을 가지는 attributekey를 통해서 구별하자.
  • Superkey
    • tuple의 유일함이 보장되는 1개 이상의 attribute 조합
    • 즉, t1 != t2이면, t1.K != t2.K이다.
  • Candidate keys
    • Superkey의 특성을 가지는 최소 집합
    • 반대로 Candidate keys를 확장하면 Superkey의 부분집합을 만들 수 있다.
  • Primary key
    • 데이터베이스 설계 시, relationtuple들을 구별하기 위해 설정한 key이다.
    • Candidate keys 중 하나로 고른다.
    • Primary key constraints
    • 절대, 혹은 매우 가끔 바뀌어야만 하는 attribute로 설정해야 한다.

Constraint

  • Foreign-key constraint (Referential integrity constraint의 특수한 경우)
    • Foreign key가 참조한 테이블의 해당 key는 반드시 Primary key여야 한다.
  • Referential integrity constraint (참조 무결성)
    • 어떤 테이블의 값을 참조하려면 반드시 그 값이 그 테이블에 존재해야 한다.

0개의 댓글