ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 관계형 데이터 모델 제약조건(2)
    데이터베이스 강의 2023. 4. 9. 10:56

    키의 제약조건

     

    키의 종류

     

    키의 개념

    - 튜플을 식별하기 위해 사용하는 속성이나 속성의 집합, 참조 또는 검색 시 사용

    - 키의 종류 : 슈퍼 키, 후보 키, 기본 키, 대체 키, 외래 키

     

    슈퍼키(Super Key)

    - 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못한다.

    - 유일성 : 속성 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 하는 것

    - 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 하는 것

     

    후보키(candidate Key)

    - 각 튜플을 유일하게 식별할 수 있는 속성이나 속성의 집합

    - 릴레이션 내에서는 중복된 튜플이 있을 수 없으므로 하나 이상의 후보키가 존재

    - 후보 키의 조건은 유일성과 최소성을 모두 만족 해야 함

    - 슈퍼 키 인 회원번호, 계좌번호, 이름+주소이며 그 중 이름+주소는 최소성을 만족하지 못하므로 후보 키는 회원번호와 계좌번호에 해당한다.

     

    기본 키(Primary key)

    - 후보 키 중에서 튜플을 식별하기 위해 특별히 선택된 키로 중복될 수 없고, NULL 값을 허용하지 않는다.

    - 유일성과 최소성을 만족 해야 한다.

    - 속성의 값이 변동될 가능성이 높은 속성은 기본 키로 선정하지 않는 게 좋다.

    - 가능하면 작은 정수 값이나 짧은 문자열을 갖는 속성을 선정한다.(빠른 검색)

    - 가능하면 복합 키본 키는 피하는 것이 좋다.

    - 테이블에 기본 키 는 하나만 만들 수 있다

     

    대체키(Alternate key)

    - 후보 키 중에서 기본 키로 선정된 속성을 제외한 나머지 속성 

    - 은행의 경우 회원번호와 계좌번호가 후보 키가 될 수 있으며, 후보 키 중 기본 키로 선정된 회원번호 나머지인 계좌번호가 대체 키

     

    외래키(Foreign key)

    - 다른 테이블을 참조하기 위해 사용되는 속성

    - 외래 키는 참조하는 테이블의 기본 키를 참조한다.

     

    키 제약 조건

     

    키 제약조건

    - 키 제약조건은 속성에 중복된 값이 존재 해서는 안 된다는 것이다.

    - 릴레이션을 정의할 때 기본 키로 정의하거나 UNIQUE를 명시한 속성은 중복 허용하지 않는다.

    - 기본 키 와 개체 무결성 제약조건

    - 외래 키 와 참조 무결성 제약조건

     

    기본 키와 개체 무결성 제약조건

    - 기본 키는 튜플을 고유하게 식별하고, 효율적으로 빠르게 접근하는데 사용된다. 두 개 이상의 튜플이 동일한 기본 키 값을 가질 수 없다.

    - 개체 무결성 제약조건은 릴레이션의 기본 키를 구성하는 어떤 속성도 NULL값을 가질 수 없다.

     

    외래 키와 참조 무결성 제약조건

    - 기본 키는 외부 릴레이션의 기본 키 속성을 참조하는 키이다.

    - 참조 무결성 제약조건은 두 릴레이션의 연관된 튜플 사이의 일관성을 유지 하는데 사용된다.

    - 참조 무결성 제약조건 성립 조건

     

    외래 키의 값은 참조 릴레이션의 기본 값과 같다
    외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면 NULL

     

    pk 제약조건

     

    개체 무결성 제약조건

     

    컬럼 레벨 정의

    CREATE TABLE 테이블명(
    컬럼명 데이터타입 CONSTRAINT 제약조건이름 PRIMARY KEY,
    -- 이하 열 생략
    );

     

    테이블 레벨 정의

    CREATE TABLE 테이블명(
    컬럼명 데이터타입,
    컬럼명 데이터타입 NOT NULL ,
    -- 이하 열 생략,
    CONSTRAINT 제약조건이름 PRIMARY KEY(컬럼명)
    );


    참조 무결성 제약조건

     

     FK 제약조건

     

    컬럼 레벨 정의

    CREATE TABLE 테이블명(
    컬럼명 데이터타입,
    컬럼명 데이터타입
    CONSTRAINT [제약조건 명] FOREIGN KEY [컬럼 명]
    REFERENCE [참조할 테이블 이름]([참조할 컬럼])
    -- 이하 열 생략
    );

     

    테이블 레벨 정의

    CREATE TABLE 테이블명(
    컬럼명 데이터타입,
    컬럼명 데이터타입 NOT NULL ,
    -- 이하 열 생략,
    CONSTRAINT [제약조건 명] FOREIGN KEY [컬럼 명]
    REFERENCE [참조할 테이블 이름]([참조할 컬럼])
    );

     

    FK 제약 조건

    - ‘ON UPDATE’ 와 ‘ON DELETE’

    - 외래 키 제약조건에 의해 참조되는 테이블에서 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 같이 영향을 받는다.

     

    CONSTRAINT [제약조건 명] FOREIGN KEY([컬럼명])
    REFERENCES [참조할 테이블 이름]([참조할 컬럼])
    [ON DELETE CASCADE | ON DELETE SET NULL]

     

    ‘ON UPDATE’ 와 ‘ON DELETE’ 참조되는 테이블에서 데이터를 삭제, 수정

    CASCADE 참조하는 테이블에서도 삭제 수정
    SET NULL 참조하는 테이블의 데이터는 NULL로 변경
    NO ACTION 참조하는 테이블의 데이터는 변경되지 않음
    SET DEFAULT 참조하는 테이블의 데이터는 필드의 기본값으로 설정
    RESTRICT 참조하는 테이블의 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없음

     

    - 기본 키는 개체 무결성 제약조건을 왜래 키는 참조 무결성 제약조건을 검사하는 키이다.
    - PK 제약조건과 FK 제약조건을 테이블 레벨과 컬럼 레벨로 정의할 수 있고 제약조건의 이름은 생략하면 자동 부여된다
Designed by Tistory.