Back/DataBase이론

2장 관계 데이터 모델 -1

잘잔디 2023. 3. 23. 13:22

릴레이션

: 행과 열로 구성된 테이블

  • 관계 : 릴레이션 내에서 생성되는 관계
  • 튜플 : row(=행)
  • 카디널리티 : 튜플의 개수
  • 속성 : column(=열)

스키마 : 내포(속성들의 모음 = 구조 = 메타 데이터)

스키마의 요소

  • 속성 attribute : 릴레이션 스키마의 열
  • 도메인 domain : 속성이 가질 수 있는 값의 집합
  • 차수 degree : 속성의 개수

스키마의 표현

  • 릴레이션 이름(속성1 : 도메인1 , 속성 2 : 도메인2 , …)
  • ex) 도서(도서번호,도서이름,출판사,가격)

인스턴스 : 외연(속성 값이 지정된 모든 튜플을 지칭 = 데이터)

인스턴스의 요소

  • 튜플 :릴레이션의 행, 모든 튜플은 서로 중복되지 않아야 함
  • 카디널리티 : 튜플의 수

릴레이션 구조와 관련된 용어

릴레이션의 특징

  • 속성은 단일 값을 가진다 : 각 속성의 값은 도메인에 정의된 값만을 가지며 그 값은 모드 단일 값이어여 함
  • 속성은 서로 다른 이름을 가진다 : 속성은 한 릴레이션에서 서로 다른 이름을 가져야만 함
  • 한 속성의 값은 모두 같은 도메인 값을 가진다 : 한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있음.
  • 속성의 순서는 상관없다. : 속성의 순서가 달라도 릴레이션 스키마는 같음.
  • 릴레이션 내의 중복된 튜플을 허용하지 않는다 : 하나의 릴레이션 인스턴스 내에서는 서로 중복된 값을 가질 수 없음. 즉 모든 튜플은 서로 값이 달라야 함.
  • 튜플의 순서는 상관없다 : 튜플의 순서가 달라도 같은 릴레이션임.

관계 데이터 모델

  • 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며 릴레이션에 대한 제약조건과 관계 연산을 위한 관계대수(relational algebra)를 정의함

무결성 제약조건

  • 특정 튜플을 식별할 떄 사용하는 속성 혹은 집합
  • 릴레이션은 중복된 튜플을 허용하지 않기 떄문에 각각의 튜플에 포함된 속성들 중 어느 하나는 값이 달라야 함.(튜플간의 구별 가능해야함)
  • 키는 릴레이션 간의 관계를 맺는 것에 사용됨.

슈퍼키

  • 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
  • 후보키들을 한개라도 포함하고 있는 모든 속성의 집합이 슈퍼키가 된다.

후보키

  • 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
  • 1개의 속성으로 기본키를 만들 수 없는 경우 2개 이상의 속성으로 이루어진 키를 만들게 되는데 이 복합키 라고 한다.

기본키(primary key)

  • 여러 후보키 중 하나를 선정하여 대표로 삼는 키
  • 후보키가 여러개라면 릴레이션의 특성을 반영하여 하나를 선택해야함.

기본키 선정 시 고려사항

  • 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 함
  • NULL 값은 허용하지 않음.
  • 키 값의 변동이 일어나지 않아야 함.
  • 최대한 적은 수의 속성을 가진 것이어야 함.
  • 향후 키를 사용하는데 있어서 문제 발생 소지가 없어야 함.

Ex) 고객(고객번호,이름,주민번호,주소,핸드폰번호) 처럼 기본키는 밑줄로 표기

대체키

  • 기본키로 선정되지 않은 후보키를 말함.

대리키(surrogate key) ,인조키(artificial key)

  • 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때 일련번호 같은 가상의 속성을 만들어 기본키를 삼는 경우에 사용됨

외래키

  • 다른 릴레이션의 기본키를 참조하는 속성을 말함.
  • 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계(Relationship)을 표현함

외래키의 특징

  • 관계 데이터 모델의 릴레이션 간의 관계를 표현함.
  • 다른 릴레이션의 기본키를 참조하는 속성임
  • 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함.
  • 참조되는 (기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨.
  • NULL 값과 중복 값 등이 허용됨.
  • 자기 자신의 기본키를 참조하는 외래키도 가능함.
  • 외래키가 기본키의 일부가 될 수 있음.

릴레이션 간의 참조 관계

  • 외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음. 즉 자기 자신의 기본키를 참조할 수도 있음.

무결성 제약조건

  • 데이터 무결성이란 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함.

도메인 무결성 제약조건

  • domain constraint 라고 한다. 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건이다. SQL 문에서 데이터 형식, 널여부, 기본 값, 체크 등을 사용하여 지정할 수 있음.

개체 무결성 제약조건

  • primary key constraint라고 한다. 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임.
  • 삽입 : 기본키 값이 같으면 삽입이 금지됨.
  • 수정 : 기본키 값이 같거나 NULL로도 수정이 금지됨.
  • 삭제: 특별한 확인이 필요하지 않으며 즉시 수행함.

참조 무결성 제약조건

  • foreign key constrain라고 한다. 릴레이션 간의 참조 관계를 선언하는 제약조건이다. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것임.

  • 삽입 :
    • 부모 릴레이션 : 튜플 삽입한 후 수행하면 정상적으로 진행된다.
    • 자식 릴레이션 : 참조받는 테이블에 외래키 값이 없으면 삽입이 금지된다.
  • 삭제
    • 부모 릴레이션 : 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요함.
    • 자식 릴레이션 : 바로 삭제 가능함.
  • 부모 릴레이션에서 튜플을 삭제할 경우 참조 무결성 조건을 수행하기 위한 고려사항
    1. 즉시 작업을 중지
    2. 자식 릴레이션의 관련 튜플을 삭제
    3. 초기에 설정된 다른 어떤 값으로 변경
    4. NULL 값으로 설정
  • 수정
    • 삭제와 삽입 명령이 연속해서 수행됨
    • 부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨.
  • 참조 무결성 제약조건의 옵션(부모 릴레이션에서 튜플 삭제시)

제약조건 정리