1. 기본 용어

    1. 릴레이션(relation) : 2차원의 테이블(스프레드 시트와 유사)
    2. 레코드(record) : 릴레이션의 각 행
    3. 투플(tuple) : 레코드를 좀더 공식적으로 부르는 용어
    4. 애트리뷰트(attribute) : 릴레이션에서 이름을 가진 하나의 열
    5. 도메인
      1. 한 애트리뷰트에 나타날 수 있는 값들의 집합
      2. 각 애트리뷰트의 도메인의 값들은 원자값
      3. 프로그래밍 언어의 데이터 타입과 유사함
      4. 도메인 정의 예
    6. 차수(degree) : 한 릴레이션에 들어 있는 애트리뷰트들의 수
      1. 유효한 릴레이션의 최소 차수는 1
    7. 카디날리티(cardinality) : 릴레이션의 투플 수
      1. 유효한 릴레이션은 카디날리티 0을 가질 수 없음
    8. 용어들의 대응 관계
    9. 널(NULL)
      1. ‘알려지지 않음’ 또는 ‘적용할 수 없음’을 나타내기 위해 사용
  2. 릴레이션 스키마(relation schema)
    1. 릴레이션의 틀(framework)
    2. 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합
    3. 표기법
      1. 릴레이션이름(애트리뷰트1, 애트리뷰트1,…, 애트리뷰트n)
    4. 기본 키 애트리뷰트에는 밑줄 표시
    5. 내포(intension)라고도 함
  3. 릴레이션 인스턴스(relation instance)
    1. 릴레이션에 어느 시점에 들어있는 투플들의 집합
    2. 시간의 흐름에 따라 계속 변함
    3. 일반적으로 릴레이션에는 현재의 인스턴스만 저장됨
    4. 외연(extension)이라고 함
  4. 관계 데이터베이스(relational database) 스키마
    1. 하나 이상의 릴레이션 스키마들로 이루어짐
  5. 관계 데이터베이스 인스턴스
    1. 릴레이션 인스턴스들의 모임으로 구성됨
  6. 릴레이션의 특성
    1. 각 릴레이션은 오직 하나의 레코드 타입만 포함
    2. 한 애트리뷰트 내의 값들은 모두 같은 유형
    3. 애트리뷰트들의 순서는 중요하지 않음
    4. 동일한 투플이 두 개 이상 존재하지 않음(즉, 키가 존재함)
    5. 한 투플의 각 애트리뷰트는 원자값을 가짐
    6. 각 애트리뷰트의 이름은 한 릴레이션 내에서만 고유
    7. 투플들의 순서는 중요하지 않음
  7. 릴레이션 키
    1. 수퍼키(superkey)
      1. 한 릴레이션 내의 특정 투플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합
      2. 투플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들이 포함 가능
      3. 예 : (신용카드번호, 주소), (주민등록번호, 이름), (주민등록번호)
    2. 후보키(candidate key)
      1. 각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임
      2. 예 : (신용카드번호), (주민번호), (학번, 과목번호)
      3. 수퍼키 중 후보키가 안되는 예 : (신용카드번호, 주소), (주민등록번호, 이름)
    3. 기본키(primary key)
      1. 후보키 중 1개를 기본키로 설정
    4. 대체키(alternate key)
      1. 기본키가 아닌 후보키
    5. 외래키(foreign key)
      1. 다른 릴레이션의 기본키를 참조하는 애트리뷰트
    6. 키들의 포함 관계
  8. 무결성 제약조건
    1. 데이터 무결설(data integrity)
      1. 데이터의 정확성 또는 유효성을 의미
    2. 도메인 제약조건(domain constraint)
      1. 각 애트리뷰트의 값이 반드시 원자값이어야 함
      2. CHECK 제약 조건을 통해 값들의 범위를 제한할 수 있음
    3. 키 제약조건(key constraint)
      1. 키 애트리뷰트에 중복된 값이 존재해서는 안됨
    4. 기본키와 엔티티 무결성 제약조건(entity integrity constraint)
      1. 기본키를 구성하는 어떤 애트리뷰트도 Null값을 가질 수 없음
      2. 릴레이션 생성시 기본키를 DBMS에게 알려줌
    5. 외래키와 참조 무결성 제약조건(referential integrity constraint)
      1. 참조 무결성 제약조건은 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용
      2. R2의 외래키가 R1의 기본키를 참조할 때 참조무결성 제약조건 성립 조건
        1. R2의 외래키 값은 R1의 어떤 투플의 기본키와 같다
        2. R2의 외래키가 참조하는 기본키가 없으면 Null값을 가짐
      3. 참조 무결성 제약조건 (EMPLOYEE = R2,  DEPARTMENT = R1)
      4. 삽입
        1. R1, R2를 포함한 모든 릴레이션에는 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건을 지켜야 함
        2. R1에 삽입시는 참조 무결성 제약조건을 위배하지 않음
          1. (9, 기타, 10) 과 같은 어떤 투플이 입력되도 문제 없음
        3. R2에 삽입시는 참조 무결성 제약조건을 위배하는 경우 발생
          1. (3579, 홍길동, 5)를 저장하면 참조 무결성 제약조건에 위배됨
          2. R1에 DEPTNO에는 5가 존재하지 않으므로
      5. 삭제
        1. R2에서 투플을 삭제할 땐 참조 무결성 제약조건을 위배하지 않음
        2. R1에서 삭제시엔 참조 무결성 제약조건을 위배하는 경우 발생
          1. R1에서 (3, 개발, 9)을 삭제하면 R2의 박영권, 최종철의 DNO=?
      6. 수정
        1. 수정하려는 애트리뷰트가 기본키 or 외래키가 아니면 참조 무결성 제약조건을 위배하지 않음
        2. 수정하려는 애트리뷰트가 기본키 or 외래키일 경우 참조 무결성 제약조건에 위배되는 경우 발생
          1. R1에서 (3, 개발, 9) 투플에서 3을 5로 수정하면 박영권, 최종철의 DNO=?
          2. R2에서 (3011, 이수민, 1) 투플에서 1을 R1에 없는 5로 수정하면
      7. 참조 무결성 제약조건을 만족하기 위한 옵션
        1. 제한(restricted)
          1. R1에서 (3, 개발, 9)을 삭제하면 삭제 연산을 거절
        2. 연쇄(cascade)
          1. R1에서 (3, 개발, 9)을 삭제하면 R2의 박영권, 최종철 투플도 함께 삭제
        3. 널값(Nullify)
          1. R1에서 (3, 개발, 9)을 삭제하면 R2의 박영권, 최종철의 DNO에 Null 삽입
        4. 디폴트(Default)
          1. R1에서 (3, 개발, 9)을 삭제하면 R2의 박영권, 최종철의 DNO에 defualt값 삽입
      8. 외래키 참조 무결성 제약조건 사용 예
        1. FOREIGN KEY(dno) REFERENCES department(deptno)
                   ON DELETE SET NULL
                   ON UPDATE CASCADE
        2. FOREIGN KEY(dno) REFERENCES department(deptno)
                   ON DELETE RESTRICT
                   ON UPDATE NO ACTION
        3.  룰(rule)
          1. RESTRICT : 변경/삭제가 취소(즉 변경/삭제 안 됨)
          2. CASCADE : 개체를 변경/삭제할 때 참조하고 있는 릴레이션의 개체도 같이 변경/삭제
          3. NO ACTION : 개체를 변경/삭제해도 참조하고 있는 릴레이션의 개체는 변동 없음
          4. SET NULL : 개체를 변경/삭제해도 참조하고 있는 릴레이션의 개체는 NULL로 설정
error: Content is protected !!