본문 바로가기

COMPUTER SCIENCE/DATABASE

[SQL] 2. 관계 데이터 모델과 제약조건

관계 데이터 모델

: 동일 구조(relation) 관점에서 모든 데이터를 논리적으로 구성

  • relation(=table, file) : 2차원 테이블, tuple의 집합(중복 허용 X)
  • tuple(=record, row) : relation의 각 행, 순서 중요 X
  • attribute(=column, field) : relation에서 이름을 가진 하나의 column
  • domain : 한 attribute에 나타낼 수 있는 값들의 집합
  • degree(차수) : 한 relation에 들어있는 attribute 수
  • cardinality : relation의 tuple 수

 

  • null value(널값) : 알려지지 않음(현재 상태에서 알 수 없음) or 적용할 수 없음(존재할 수 없음)
  • relation schema(릴레이션 스키마) : relation의 이름과 attribute의 집합 (relation을 위한 틀이자 framework)
  • relation instance(릴레이션 인스턴스) : relation의 어느 시점에 들어있는 tuple 집합 (시간 흐름 따라 계속 변화)

 

key : 각 tuple을 고유하게 식별할 수 있는 attribute들의 모임

  • super key(수퍼 키) : 한 relation 내 특정 tuple을 고유하게 식별 (꼭 필요하지 않은 attribute도 포함할 수 있음)
  • candidate key(후보 키) : 각 tuple 고유하게 식별하는 최소한의 attribute 모임
    • composite key(복합 키) : 2개 이상의 후보 키
  • primary key(기본 키) : 한 relation 내 후보 키가 2개 이상 있는 경우 하나를 기본 키로 설정
  • alternate key(대체 키) : 기본 키가 아닌 후보 키
  • foreign key(외래 키) : 기본 키를 참조하는 attribute

무결성 제약조건

1. domain constraint(도메인 제약조건)

: 데이터 형식 및 CHECK 제약 조건을 통해 attribute의 default 값, 범위 지정 가능

-- attribute에 도메인 제약 지정
CREATE TABLE Persons(
	ID int NOT NULL,
    LASTNAME varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CHECK (Age >= 18)
);

-- 여러 attribute에 걸친 도메인 제약 지정
CREATE TABLE Persons(
	ID int NOT NULL,
    LASTNAME varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age >= 18 AND City = 'Sandnes)
);

2. key constraint(키 제약조건)

: 키 attribute에 중복된 값이 존재해서는 안됨

CREATE TABLE Persons(
	ID int NOT NULL UNIQUE,
    LASTNAME varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

CREATE TABLE Persons(
	ID int NOT NULL,
    LASTNAME varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT UC_Person UNIQUE (ID, LastName)
);

3. entity integrity constrain(엔티티 무결성 제약조건)

: 기본 키를 구성하는 어떤 attribute도 null값을 가질 수 없음 (대체 키는 적용 X)

referential integrity constraint(참조 무결성 제약조건) : 두 relation의 연관된 tuple 사이의 일관성 유지하는데 사용

CREATE TABLE EMPLOYEE(
	EMPNO int primary key,
    EMPNAME varchar(100),
    DNO int,
    CONSTRAINT EMPLOYEE_DNO_FK REFERENCES DEPARTMENT(DNO)
)

 

반응형

'COMPUTER SCIENCE > DATABASE' 카테고리의 다른 글

[SQL] 4. SQL  (0) 2019.04.25
[SQL] 1. 데이터베이스 시스템  (0) 2019.04.24
[SQL] 3. 관계 대수  (0) 2019.03.30