[DB] 관계 DB
▶ 데이터 모델
개념
- 컴퓨터에 저장할 데이터의 구조를 논리적으로 표현하기 위해 사용하는 지능적 도구
▷ 구성요소
-
데이터 구조
- 어떤 요소로 이루어져 있는지, 데이터를 어떤 모습으로 저장할 것인지 표현
- 정적
-
연산
- 데이터 구조에 따라 표현된 값들을 처리하는 작업
-
제약조건
- 데이터 무결성 유지를 위한 구조적 측면(허용될 수 있는 개체 인스턴스), 의미적 측면(허용되는 연산의 한계)의 제약사항
▷ 관계 데이터 모델⭐
개념
- 2차원 구조의 테이블 형태를 통해 자료를 표현하는 것을 말한다.(집합이론에 기초)
- 직관적인 테이블 형태로 구성
▷ 용어
① 속성 (Attribute)
- DB를 구성하는 가장 작은 논리적 단위
- 릴레이션의 열
- 동일 릴레이션 내에는 동일한 이름의 속성이 존재할 수 없음
- 릴레이션의 차수(degree): 속성의 개수
② 튜플 (Tuple)
- 속성의 모임으로구성
- 릴레이션의 행
- 릴레이션의 카디널리티: 릴레이션에 포함되어 있는 튜플의 수
③ 도메인 (Domain)
- 속성 하나가 가질 수 있는 모든 값의 집합
- 일반적으로 데이터 타입으로 정의
④ 널 (Null)
- 값이 없음을 표현함, (≠ 0, 공백문자)
▶ 릴레이션 (Relation)
- 릴레이션(Relation)은 데이터들의 표(Table)의 형태로 표현한 것을 말한다.
- ⭐릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스
- 엑셀처럼 DB도 데이터를 테이블로 만들어 관리 → 이 표를 릴레이션이라고 함
- 개체나 관계를 모두 릴레이션으로 표현
- But: 릴레이션 ≠ 테이블
▷ 구성 요소
① 릴레이션 인스턴스
- 릴레이션에 포함되어있는 튜플들의 집합
- 릴레이션의 내용, 상태
- 동적: 삽입, 삭제, 수정 등으로 시간에 따라 변함
② 릴레이션 스키마
- 릴레이션의 구조를 논리적인 구조
- 릴레이션 이름과 릴레이션에 포함된 속성들의 집합
- 정적: 자주 변경되지 않음
- ex. 고객(고객 아이디, 고객 이름, 나이, 직업)
▷ 릴레이션의 특성⭐
① 튜플의 유일성
- 한 릴레이션의 튜플들은 모두 다르며, 유일한 존재이다.
② 튜플의 무순서성
- 한 릴레이션의 튜플의 순서는 의미가 없다. (값을 구성하는 원소가 동일하기 때문)
③ 속성의 원자성
- 모든 속성은 단일 값을 가진다.
▶ (관계) DB
- DB 스키마 + DB 인스턴스
▷ DB 스키마
- DB 전체 구조
- DB를 구성하는 릴레이션 스키마 모음 + 무결성 제약조건
▷ DB 인스턴스
- DB를 구성하는 릴레이션 인스턴스의 모음
- DB를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현
▶ 키(Key)
개념
- 릴레이션에서 각 튜플을 유일하게 식별하는 속성 또는 속성들의 집합
- 데이터를 검색하거나 정렬할 떄 기준이 되는 유일하게 구분되는 속성
▷ 키의 필요성
- 아래와 같이 한 학과에 동명 이인이 있을 수 있다.
- 따라서 구분을 위해 키(ex. 학번)를 추가해야 한다.
▷ 유일성과 최소성⭐
-
유일성
- 키의 값만으로도 하나의 튜플을 유일하게 식별할 수 있는 능력
-
최소성
- 각 튜플을 유일하게 식별하는데 꼭 필요한 속성으로만 키가 구성되어야 한다.
- 예시 : 학생
-
{학번}, {학번, 주민번호}, {학번, 이름, 학과}
- 유일성을 만족하지만 최소성 만족x (슈퍼키)
- {주민번호}, {이메일 주소}, {전화 번호}
- 유일성 만족x
- 학생이 이메일이나 전화번호가 없을 수도 있기 때문
-
▷ 키 종류
① 슈퍼키 (Super Key)
- 유일성은 만족하지만 최소성은 만족하지 않는 속성 또는 속성들의 집합
② 후보키 (Candidate Key)
- 유일성과 최소성을 모두 만족하는 속성 또는 속성들의 집합
③ 기본키 (PK: Primary Key)
- 튜플을 식별하기 위해 후보키 중에서 DB 설계자가 지정한 하나의 키
- null 값을 가질 수 없다.
④ 대체키 (Alternate Key)
- 후보키 중에서 기본키로 선택되지 못한 후보키, 보조키
⑤ 외래키 (FK: Foreign Key)⭐
개념
- 어떤 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 중복을 최소화하기 위해 사용한다.
특징
- 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 같아야 한다. (이름은 달라도 됨)
- 한 릴레이션에 외래키는 여러 개 존재할 수 있다.
- 외래키를 기본 키로 사용할 수도 있다.
- 같은 릴레이션의 기본키를 참조하는 외래키도 가능
▷ 기본키 vs 외래키⭐⭐
- 기본키와 외래키의 관계는 개체와 개체를 연결하는 도구로 사용된다.
- 릴레이션과 릴레이션의 연관성을 나타내는 방법이다
- 기본키 : 개체 식별자
- 외래키 : 개체 참조
▷ 참조 관계
- 학과 릴레이션에서 멀티미디어 학과 튜플이 삭제되면?
- 학과 릴레이션에서 정보통신 학과의 학과번호가25로 변경되면?
- 학생 릴레이션에 학과번호가 50인 학생 튜플이 삽입되면?
-> 데이터 무결성 문제가 발생한다. 따라서 무결성 유지하기 위해 제한이 필요하다.
▶ 무결성 제약조건⭐
- DB가 만족시켜야 하는 조건
- 데이터의 무결성, 일관성을 유지하기 위한 규칙
▷ 종류
① 개체 무결성 제약조건
- 데이터 식별을 위해 기본키를 구성하는 어떤 속성도 null 값을 가질 수 없다.
② 참조 무결성 제약조건
- 릴레이션의 외래키는 참조할 수 없는 값을 가질 수 없다.
- ⭐외래키의 값은 반드시 피참조 릴레이션의 기본키 값이거나 null 이어야 함 ( ⚠️ null 값을 가질 수 있다 ! )
- 두 릴레이션의 연관된 튜플 사이 일관성 유지 위해 필요
③ 도메인 제약조건
- 각 속성 값이 반드시 원자값이여야 함
- 데이터 타입을 통해 값들의 유형을 제한
- 속성에 저장되는 범위를 제한 (ex. 나이: 1 ~ 100)
- NOT NULL : 모든 튜플에서 해당 속성 값이 존재하도록 보장
④ 키 제약조건
- 키(기본키, 대체키) 속성에 중복된 값이 존재해서는 안됨
▷ 무결성 제약조건의 유지
- 현재 DB가 무결성 제약조건을 모두 만족하고 있을 경우 삽입, 삭제, 수정 연산을 수행한 경우 제약조건에 위배될 수 있다.
(검색은 변경 가능성이 없기 때문에 제약조건 위배 가능성 없음)
삽입
- 무결성 제약조건을 위배하는 삽입 연산은 DBMS가 거절하여 무결성 유지할 수 있다.
삭제
- 참조 무결성 제약조건을 만족시키기 위한 옵션
- 제한(restricted) : 참조 걸려있는 튜플 삭제 연산 거절
- 연쇄(cascade) : 참조 릴레이션의 참조 튜플도 삭제
- 널값(nullify) : 참조 릴레이션의 참조 튜플의 외래키에 널 값을 설정
- 기본값(default) : 참조 릴레이션의 참조 튜플의 외래키에 기본값을 설정
수정
- 삭제에서처럼 제한, 연쇄, 널 값, 기본값 옵션을 릴레이션 정의문에 명시
▶ 정리 문제
📎참조
- https://eastroot1590.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9A%A9%EC%96%B4-%ED%8A%9C%ED%94%8CTuple%EA%B3%BC-%EC%96%B4%ED%8A%B8%EB%A6%AC%EB%B7%B0%ED%8A%B8Attribute
- https://mangkyu.tistory.com/21
- https://dodo000.tistory.com/17
댓글남기기