코딩두의 포트폴리오

Database - # 05 본문

Database

Database - # 05

코딩두 2024. 4. 1. 21:12

데이터베이스 시스템

관계 데이터 모델: 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델

관계 데이터 모델에 따라 제작된 데이터베이스를 관계 데이터베이스라고 함

5.1 관계 데이터 모델의 개념

관계 데이터 모델의 기본 용어

릴레이션(relation)

하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것

파일 관리 시스템 관점에서 파일(file)에 대응

릴레이션 예시 - 고객 릴레이션

속성(attribute)

릴레이션의 열 - ex) 고객아이디, 고객이름, 나이, 등급, 직업, 적립금

파일 관리 시스템 관점에서 필드에 대응

튜플(tuple)

릴레이션의 행 - 속성 값 6개를 모아놓은 것으로 고객 개체의 인스턴스

파일 관리 시스템 관점에서 레코드에 대응

도메인(domain)

하나의 속성이 가질 수 있는 모든 값의 집합 - ex) vip, gold, silver, bronze

도메인 포함 여부가 속성 값 입력 및 수정 시 적합성 판단기준이 됨

But 고객아이디, 고객이름, 나이 등 속성은 도메인 정의가 어려움 -> 도메인을 속성의 특성을 고려한 데이터 타입으로 정의

 

관계 데이터 모델의 기본 용어

널(null)

속성 값을 아직 모르거나 해당되는 값이 없음

숫자 0, 공백문자와는 다름

차수(degree)

하나의 릴레이션에서 속성의 전체 개수 - ex) 고객 릴레이션 차수는 6

모든 릴레이션은 최소 1 이상의 차수를 유지

카디널리티(cardinality)

하나의 릴레이션에서 튜플의 전체 개수

튜플이 없는 릴레이션이 존재할 수 있음 - ex) 고객

 

릴레이션과 데이터베이스의 구성

릴레이션 구성 예시 - 고객 릴레이션

릴레이션 스키마(relation schema)

릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의한 릴레이션의 논리적 구조

릴레이션 스키마는 DBMS가 내부적으로 데이터 정의어를 이용해 정의

  • 릴레이션이름(속성이름1, .... 속성이름n)
  • ex) 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)

릴레이션 인스턴스(relation instance)

어느 한 시점에 릴레이션에 존재하는 튜플(릴레이션 스키마에서 정의한 각 속성에 대응하는 실제 값)들의 집합

DBMS는 데이터 조작어를 이용해 릴레이션 인스턴스의 튜플을 검색, 새로운 튜플 삽입과 기존 튜플 삭제 및 수정

 

데이터베이스는 릴레이션 여러 개로 구성 - ex) 인터넷 쇼핑몰 DB = 고객 + 상품 + 주문(릴레이션)

데이터베이스 스키마(database schema) - DB의 전체 구조로, DB를 구성하는 릴레이션 스키마의 모음

데이터베이스 인스턴스(database instance) - DB를 구성하는 릴레이션 인스턴스의 모음

데이터베이스 구성 예시 - 쇼핑몰 데이터 베이스

릴레이션의 특성

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

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

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

속성의 원자성: 속성 값으로 원자 값만 사용할 수 있다.

키(Key) - 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합

키의 특성

  • 유일성 - 키 값이 같은 튜플은 존재 X
  • 최소성 - 꼭 필요한 최소한의 속성들로만 키를 구성

키(Key)의 종류

키의 종류

슈퍼키(super key)

유일성을 만족하는 속성 또는 속성들의 집합

ex) 고객 릴레이션의 슈퍼키: 고객아이디, (고객아이디, 고객이름)

후보키(candidate key)

유일성과 최소성을 만족하는 속성 또는 속성들의 집합

슈퍼키 중에서 최소성을 만족하는 것이 후보키가 됨

ex) 고객 릴레이션의 후보키: 고객아이디 단, (고객아이디, 고객이름)은 후보키가 될 수 X

기본키(primary key)

후보키 중에서 기본적으로 사용하기 위해 선택한 키

ex) 고객 릴레이션의 기본키: 고객아이디 속성만 후보키이기 때문에 이 속성이 기본키가 됨(밑줄로 표현)

대체키(alternate key)

기본키로 선택되지 못한 후보키

ex) 고객 릴레이션의 대체키: (고객이름, 주소)

 

키의 관계

키의 관계

널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합

값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합

단순한 후보키를 기본키로 선택 - 자릿수 적은 정수, 단순 문자열인 속성으로 구성되거나 구성하는 속성의 개수가 적은 후보키

 

외래키

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

참조하는 릴레이션: 외래키를 가진 릴레이션

참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션

주문 릴레이션의 주문고객 속성이 고객 릴레이션의 기본키인 고객아이디 속성 참조                     -> 주문고객 속성을 외래키라 함

 

외래키 사용 예시 ex) 다른 릴레이션 사이 -> 고객 주문 및 주문 릴레이션

외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 되지만 도메인은 같아야 함

 

외래키 사용 예시 ex) 다른 릴레이션 사이 -> 학생 상담 DB의 학생, 상담, 교사 릴레이션

하나의 릴레이션에는 외래키가 여러 개 존재 가능, 외래키를 기본키로 사용 가능

 

외래키 사용 예시 ex) 같은 릴레이션 내, 외래키 자신이 속한 릴레이션의 기본키를 참조하도록 외래키 정의

외래키 속성은 널 값을 가질 수 X, 외래키가 기본키가 아니기 때문에 서로 다른 튜플이 같은 값을 가질 수 O

 

 

5.2 관계 데이터 모델의 제약

무결성 제약조건(integrity constraint)

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

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

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

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

외래키는 참조할 수 없는 값을 가질 수 없는 규칙

'Database' 카테고리의 다른 글

Database - # 07_01  (0) 2024.04.11
Database - # 06  (0) 2024.04.05
Database - # 04  (1) 2024.03.31
Database - # 03  (0) 2024.03.30
Database - # 02  (0) 2024.03.30