본문 바로가기
코딩 공부/web & Java

관계형 데이터 모델과 키, 제약 조건

by 현장 2022. 8. 25.

▶ 관계형 데이터 모델 

  → 2차원 구조의 테이블 형태를 통해 자료를 표현

 

데이터베이스 스키마(database schema)

   - 데이터베이스의 전체구조

   - 데이터베이스를 구성하는 릴레이션 스키마의 모음

 

 데이터베이스 인스턴스(database instance)

   - 데이터베이스를 구성하는 릴레이션 인스턴스의 모음

 

※ 스키마 : 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합 (일련의 구조)

 

릴레이션의 특성

  1. 튜플의 유일성

    → 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.

 

  2. 튜플의 무순서

    → 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.

 

  3. 속성의 무순서

    → 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.

 

  4. 속성의 원자성

    → 속성 값으로 원자 값으로 사용할 수 있다. (어떠한 데이터를 쪼갤수 없도록 만드는 것)

 


 키 (Key)

  → 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합

 

 ※ 복합키 (Composite Key)

   → 두 개 이상의 컬럼을 Key로 지정하는 것

CREATE TABLE test (
    id bigint not null,
    seq bigint not null,
    primary key(id, seq) /* 이 부분이 복합키 설정 */
);

 

키의 특성

  1. 유일성 (uniqueness)

  • 하나의 키 값으로 하나의 튜플만을 유일하게 식별
  • 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함

 

  2. 최소성 (minimality)

  • 꼭 필요한 최소한의 속성들로만 키를 구성

 

키의 종류

  1. 기본키(primary key)

  • 후보키 중에서 기본적으로 사용하기 위해 선택한 키 (예. 고객 릴레이션의 기본키: 고객아이디)
CREATE TABLE 테이블명 (
	속성 명 INT,
	PRIMARY KEY (속성 명)
);

 

  2. 후보키(candidate key)

  • 유일성과 최소성을 만족하는 속성 또는 속성들의 집합 (예. 고객 릴레이션의 후보키: 고객아이디, (고객이름, 주소) 등)

  3. 대체키(alternate key)

  • 기본키로 선택되지 못한 후보키 (예. 고객 릴레이션의 대체키: (고객이름, 주소))

  4. 슈퍼키(super key)

  • 유일성을 만족하는 속성 또는 속성들의 집합 (예. 고객 릴레이션의 슈퍼키: 고객아이디, (고객아이디, 고객이름), (고객이름, 주소) )

  5. 외래키(foreign key)

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
CREATE TABLE 테이블 명 (
	속성명 VARCHAR(200),

	CONSTRAINT 외래 키 이름 FOREIGN KEY (속성 명) REFERENCES 참조 테이블 명 (참조 테이블 내 속성)
);

 

  ※ 릴레이션들 간의 관계를 표현
     ‒
참조하는 릴레이션: 외래키를 가진 릴레이션
     ‒
참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션


▶제약 조건

무결성 제약조건(integrity constraint)

  • 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙

   ※ 무결성 : 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것

  1. 도메인 무결성 제약조건(Domain constraint)

  • 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규칙
  • null 값은 허용됨 ( not null이 아닌 경우)

※ 도메인 : 속성이 가질 수 있는 값의 집합

NULL : 데이터가 없다. (유효하지 않다.)

 

2. 개체 무결성 제약조건(entity integrity constraint)

  • 기본키를 구성하는 모든 속성은 널 값을 가질 수 없는 규칙

  3. 참조 무결성 제약조건(referential integrity constraint)

  • 외래키는 참조할 수 없는 값을 가질 수 없는 규칙
  • but, 외래키의 속성이 널 값을 가진다고 해서 참조 무결성을 위반한 것은 아니다.

  •  RESTRICTED - 레코드를 변경 또는 삭제하고자 할 때 해당 레코드를 참조하고 있는 개체가 있다면, 변경 또는 삭제 연산을 취소
  • CASECADE - 레코드를 변경 또는 삭제하면, 해당 레코드를 참조하고 있는 개체도 변경 또는 삭제

   ※ 데이터가 모두 사라지기 때문에 위험해서 잘 사용하지 않는다.

  • SETNULL - 레코드를 변경 또는 삭제하면, 해당 레코드를 참조하고 있는 개체의 값을 NULL로 설정

 

'코딩 공부 > web & Java' 카테고리의 다른 글

자바 웹 프로젝트 디렉토리 구조  (0) 2022.08.29
프로그램 표기법  (0) 2022.08.26
데이터 모델링  (0) 2022.08.25
SQL  (0) 2022.08.24
MySQL 제거  (0) 2022.08.24