본문 바로가기
💾 Backend/데이터베이스

📊 데이터베이스(mySQL) - 2. 관계 데이터 모델 - 무결성 제약조건

by 정람지 2024. 4. 22.

출처 : MySQL로 배우는 데이터베이스 개론과 실습(2판)


📊 관계 데이터 모델의 개념

관계 데이터 모델 기반 DBMS : 오라클, postgre sal, mysal, sql 서버 등등


💾 릴레이션의 개념

릴레이션 : 행과 열로 구성된 테이블 

릴레이션은 관계로 구성

 

관계 

- 릴레이션 간의 관계

- 릴레이션 내의 관계


💾 릴레이션 스키마와 인스턴스

릴레이션 : 스키마 + 인스턴스

 

릴레이션 스키마

관계 데이터베이스의 기본적인 구조 정의

속성, 자료 타입 등에 대한 정보 

 

- 속성 : 스키마의 열

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

- 차수 : 속성의 개수

 

릴레이션 인스턴스

실제로 저장되는 데이터의 집합

 

- 투플 : 릴레이션 인스턴스의 각 행

- 카다날리티 : 투플의 수

투플은 중복 노노

 

 

릴레이션 = 테이블 = 파일

스키마 = 내포 = 헤더

인스턴스 = 외연 = 데이터

투플 = 행 = 레코드

속성 = 열 = 필드


💾 릴레이션의 특징

- 속성은 단일 값을 가짐

- 속성명은 중복되지 않음

- 속성의 순서는 상관 없음

- 속성의 값들은 전부 같은 도메인 값을 가짐 

- 튜플의 순서는 상관없음

- 튜플은 중복되지 않음


💾 관계 데이터 모델

데이터를 2차원 테이블 형태인 릴레이션으로 표현

 

제약조건 :

데이터 값이 가져야 하는 제약

 

관계대수 :

관계 연산(릴레이션을 다루는 연산 규칙)을 위한 것

 

관계 데이터베이스 시스템 :

관게 데이터 모델을 컴퓨터 시스템에 구현한 것

 sql으로 릴레이션/제약조건/관계대수 표현 


📊 무결성 제약조건

데이터에 결함이 없어야 함

질의에 대해 신뢰성 있는 답을 제공해야 함

 

- 일관성 유지

- 중복 제거

 

🗝️ 키 :

릴레이션에서 특정 튜플을 식별할 때 사용하는 속성(의 집합)

 

🔑 슈퍼키 

튜플을 유일하게 식별할 수 있는 속성(의 집합) 전부 가능

 

🔑 후보키 

슈퍼키 중 최소 집합 키

2개 이상으로 이루어졌을 시 이를 "복합키" 라고 함

 

🔑 기본키 

후보키 중 대표로 삼는 하나의 키

 

<기본키 제약조건>

- 튜플을 식별 가능한 고유의 값

- NULL 값 안 됨

- 향후 바뀔 가능성이 없는 것

- 최대한 적은 수의 속성

- 문제 발생 소지가 없는 것

 

밑줄 그어서 표시

 

🔑 대리키 (인조키)

마땅한 기본키가 없을 때 만드는 가상의 속성 키 

(일련번호)

 

🔑 대체키 

기본키로 선정되지 않은 후보키

 

🔑 외래키 

다른 릴레이션의 기본키를 참조하는 속성

관계 데이터 모델에서 릴레이션 간의 관계를 표현

 

<외래키 제약조건>

- 참조하고 참조되는 양쪽 릴레이션의 도메인이 서로 같아야 함

- 기본키 값이 변하면 이를 참조하는 외래키값도 변동되어야 함

+ NULL 값 / 중복 가능 

+ 자기 자신의 기본키도 참조 가능

+ 외래키는 기본키의 일부가 될 수 있음


💾 무결성 제약조건

데이터 무결성 :

데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것

 

튜플에 삽입할 수 있는 데이터의 값을 제한하는 것

🫧 도메인 무결성 제약조건

- 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만 가져야 한다는 제약조건

 

관계 표현을 위한 제약조건 

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

- 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙을 지켜야 한다는 제약조건

 

관계 표현을 위한 제약조건 

🫧 참조 무결성 제약조건 = 외래키 제약

- 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 같아야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것

 


💾 무결성 제약조건의 수행

제약조건의 준수 여부는 "데이터의 변경 (삽입 삭제 수정)" 이 있을 때마다 체크

DBMS는 조건에 맞지 않으면 연산을 거부하고 오류 반환

 

🫧개체 무결성 제약조건 

 

삽입

- 기본키가 중복되는지 확인 

- 기본키가 NULL값이 아닌지 확인

수정

- 기본키가 중복되는지 확인

- 기본키가 NULL값이 아닌지 확인

삭제

- 기본키를 다른 릴레이션에서 외래키로 참조하고 있을 시 삭제 불가

 

 

🫧 참조 무결성 제약조건 

두 릴레이션 간의 참조관계에 따라 복잡한 처리 수행

 

삽입 ( 자식 릴레이션에서 )

- 부모 릴레이션에 해당 기본키가 존재하는지 확인

+ 부모 릴레이션에서의 삽입은 개체 무결성 제약조건을 따르면 됨

삭제 (부모 릴레이션에서)

삭제하려는 부모 릴레이션 튜플과 관련 있는 자식 릴레이션 튜플이 있는 경우

1. 작업 중지 (RESTRICED)

2. 자식 릴레이션의 관련 투플을 삭제한 후 삭제 (CASCADE)

3. 초기에 설정된 다른 값으로 변경 (DEFAULT)

4. NULL 값으로 설정 (NULL)

수정(부모 릴레이션에서)

삭제와 삽입의 연속 수행과 유사 


흐느적흐느적

시험만끝나면...

프로젝트도 열심히 하고..

운동도 열심히 하고

공부도 열심히 하고

알바도 열심히 하고

베이킹도하고그림도그리고

놀고해여지..

꾸미고다니고싶다...