관계형 모델 (Relational Model), 제약조건(키), View

jaehun_dev·2022년 10월 27일
0

데이터베이스

목록 보기
2/3

관계형 모델: 데이터를 정의하고 데이터 간의 관계를 규정, 데이터의 의미, 데이터의 제약 조건 등을 나타내는 모델

관계형 데이터 모델의 구성 요소

  • 구조 (Structure): 개체 타입들간의 관계로 데이터 구조를 표현
    DDL(Data Definition Language): 데이터베이스 구조를 정의, 수정, 삭제하는 언어 ( alter, create, drop, view creation, index creation )
  • 연산 (Operations): 데이터의 처리 작업. DB를 조작하는 기본 도구.
    DML(Data Manipulation Language): 데이터베이스 내의 검색, 삽입, 갱신, 삭제 등을 하는 언어 ( select, insert, update, delete )
  • 제약 조건 (Constraints): 데이터의 논리적인 제약 조건
    DCL (Data Control Language): 데이터 무결성 유지, 보호, 관리, 권한 부여 등을 하는 언어 ( commit, rollback, grant, revoke )

관계형 데이터베이스

관계형 데이터베이스: a set of relations
릴레이션: Schema와 Instance로 구성된다.

  • Schema: 릴레이션의 이름과 각 column(attribute)의 이름과 타입
  • Instance: row와 column으로 구성된 table
    ❗️ # of rows = cardinality, # of fields = degree/arity

무결성 제약조건

DBMS는 릴레이션 내의 데이터가 지켜야 할 조건들을 관리한다. 스키마가 정의될 때 구체화되며, 릴레이션의 변경 (insert, delte, update)가 발생할 때 제약 조건을 검사한다.

키 (Key)

  • 유일성: 어떠한 2개의 튜플도 키 필드에 대해 같은 값을 가질 수 없다.
  • 최소성: 키를 구성하는 속성들이 진짜 각 튜플을 구분하는데 꼭 필요한 속성들로만 구성되어 있어야 한다.
    최소성을 만족하지 않는 키 ➡️ 수퍼키(super key)
    하나의 릴레이션에 여러 개의 candidate keys가 있다면, 그 중 하나가 primary key가 된다.

슈퍼키(Super Key)

유일성은 만족하지만 최소성을 만족하지 않는 키 (더 정확히는, 최소성에 관한 제약조건이 없기 때문에 최소성을 지켜도, 안지켜도 된다). 예를 들어, 학생의 학번은 고유 번호이기 때문에 유일성과 최소성을 만족한다. 그러나 학생의 이름, 나이, 성별 등은 중복이 가능하여 유일성을 만족하지 않는다. 만약 (학번,이름,나이,성별)을 키로 사용한다면, 이름, 나이, 성별은 중복이 가능하지만 학번으로 인해 유일성을 가지게 된다. 그러나 이름, 나이, 성별은 각 튜플을 구분하는데 꼭 필요한 속성이 아니기 때문에 최소성을 만족하지 못한다. 따라서 (학번,이름,나이,성별)은 유일성을 만족하지만 최소성을 만족하지 않는 슈퍼키가 된다.

후보키(Candidate Key)

슈퍼키가 유일성만 만족하고 최소성에는 제약이 없었다면, 후보키는 유일성과 최소성 모두 요구된다. UNIQUE를 통해 후보키로 설정될 수 있으며, 이러한 후보키 중 하나가 기본키가 된다. 기본키로 적절한 조건은 다음과 같다.

  • NULL 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적절하다.
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적절하다.
  • 단순한 것으로 선택한다.

기본키(Primary Key)

후보키 중 하나로 선정된 키

대체키

후보키 중 기본키를 제외한 키

외래키(Foreign Key)

어떤 릴레이션의 특정 field 또는 field 집합이 다른 릴레이션의 기본키인 경우, 이를 외래키라 한다. 데이터 무결성을 위해 존재한다. 예를 들어 주문 릴레이션에서 고객의 id를 외래키로 하는 경우, 고객의 id가 변경되면 주문에서의 고객 id 역시 변경된다. 그러나 고객의 id를 외래키로 하지 않고 고유하게 관리한다면, 고객 릴레이션과 주문 릴레이션에서의 고객 id 값이 달라질 수 있다. 또한 외래키로 지정이 되면, 참조하는 테이블에 없는 값은 입력이 불가하다.
Foreign Key의 참조 키 update/delete에 대해 다음과 같은 처리가 가능하다.

  • CASCADE: Foreign Key가 함께 수정/삭제된다.
  • No Action: update/delete가 거부된다.
  • Set Default: Foreign Key가 기본값으로 설정된다.
  • Set NULL: Foreign Key가 NULL로 설정된다.

View

일종의 가상 릴레이션이다. 따라서 실제로 디스크에 해당 뷰에 대한 저장 공간의 할당이 이루어지는 것이 아닌, 딕셔너리 테이블에 뷰에 대한 정의만 저장된다. 또한 뷰에 대한 update, delete 등의 수정은 해당 뷰가 참조하는 원본 테이블에 대해서도 이루어진다. 뷰를 통해 사용자 별로 특정 객체에 대한 접근 권한을 설정 가능하며, 논리적 독립성이 제공된다.

profile
취업준비생/코딩&프로젝트 같이 하실분 연락주세요

0개의 댓글