[CS] 데이터베이스 - 관계데이터모델과 제약 조건

두두·2023년 10월 19일
0

CS

목록 보기
6/14

내가 또,, 또,,
CS 스터디를 시작함; 

그렇지만 어쩔 수 없음
제대로 모르는 걸 어떡함?
공부 똑바로 안한 내 잘못 ㅇㅇ
이게 내 인생 마지막 CS 스터디였으면 해

📌 관계 데이터 모델

개념

  • 테이블(릴레이션) 형태의 집합의 개념으로 자료를 처리하는 데이터베이스 모델
  • 주류 데이터 베이스의 이론적인 모델을 제공!
  • 1970년대 IBM의 E.F. Codd가 제안함

장점

  • 간단한 테이블 (릴레이션 사용)
  • 중첩된 복잡한 구조 ❌
  • 집합 위주로 데이터 처리
    ➡️ 사용자가 쉽게 이해할 수 있음!
  • 표준 데이터베이스 응용에 대해 좋은 성능을 보임
  • 관계 데이터베이스 설계와 질의 처리 면에서 뛰어난 장점을
    가짐

그럼이제
용어 정리 렛츠고😎

릴레이션

릴레이션

2차원의 테이블

레코드

릴레이션의 각

튜플(Tuple)

레코드를 공식적으로 부르는 용어 ==

속성(Attribute)

릴레이션에서 이름을 가진 하나의

💡 릴레이션 == 릴레이션 스키마 + 릴레이션 인스턴스


릴레이션 스키마

  • 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합
  • 시간에 따라 잘 변하지 않음
  • 내포 라고도 함
  • 표기법 (기본키에 밑줄!-벨로그에 밑줄 안쳐짐,,)
릴레이션이름(애트리뷰트1, 애트리뷰트2, ... 애트리뷰트N)

아래 예시로는

학생정보 (학번, 이름, 단과대학, 전공학과, 이수학기)

속성(Attribute)

릴레이션에서 이름을 가진 하나의

도메인(Domain)

한 어트리뷰트에 나타날 수 있는 값들의 집합

  • 프로그래밍 언어의 데이터과 유사!
  • 동일한 도메인이 여러 어트리뷰트에서 사용될 수 있음
  • 도메인 정의 예시
CREATE DOMAIN 전공 학과 VARCHAR(10)
CREATE DOMAIN 이수 학기 INTEGER

차수(Degree)

애트리뷰트의 수
릴레이션 스키마에서 애트리뷰트들은 적어도 1개 이상을 가져야 함!


릴레이션 인스턴스

  • 릴레이션에 "어느 시점"에 들어 있는 "튜플들의 집합"
  • 시간에 따라 계속 변함
  • 외연 이라고도 함

튜플(Tuple)

릴레이션의 행
각 투플은 서로 중복이 없어야 함

카디날리티(Cardinality)

튜플의 수
카디날리티는 0일 수 있음

릴레이션 특징

  • 속성은 단일 값을 가진다
    ex. 두두가 2071003, 2071004 처럼 두개의 학번을 가질 수 없음
  • 한 어트리뷰트 내의 값들은 모두 도메인 값을 가짐
    ex. 학번 어트리뷰트는 모두 integer, 이름은 모두 varchar(10)
  • 어트리뷰트 순서 상관❌
  • 튜플 순서 상관❌
  • 릴레이션 내의 중복된 튜플은 허용하지 않음!
    ➡️ 키(key) 존재!

키 (key)

각 튜플을 고유하게 식별할 수 있는 하나 이상의 어트리뷰트들의 모임

슈퍼키(Super key)

한 릴레이션 내의 특정 튜플을 고유하게 식별하는 하나의 어트리뷰트 혹은 어트리뷰트들의 집합
== 유일성을 만족하는 속성 또는 속성들의 집합
➡️ 투플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들을 포함할 수 있음

후보키(Candidate key)

각 투플을 고유하게 식별하는 최소한의 어트리뷰트들의 모임집합
= 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
➡️ 꼭 필요한 최소한의 속성들로만 이루어진 키

즉, ‼️ 슈퍼키중에서 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어진 키

  • 모든 릴레이션에는 최소한 한 개 이상의 후보 키가 있음
  • 후보 키도 두 개 이상의 애트리뷰트로 이루어질 수 있음
    ➡️ 복합키 (composite key)

기본키(Primary key)

한 릴레이션에 후보 키가 두 개 이상 있으면 설계자 또는 데이터베이스 관리자가 이들 중에서 하나를 기본 키로 선정

(릴레이션에서 튜플을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없음)

기본키 선택 기준

  • NULL 값 ❌
  • 기본키로 선택된 속성에는 중복된 값이 저장될 수 없음
  • 값이 자주 변경되지 않는 속성으로 구성된 후보키를 기본키로 선택하는 것이 좋음

    💡 기본키 선정 과정은 대학에서 학생회장을 선발하는 과정과 유사함
    대학에 다니는 학생들(슈퍼키) 중에서 학생회장이 될 만한 후보학생(후보키)를 추천한 다음, 지지를 많이 받은 한명의 학생(기본키)를 학생회장으로 임명하는 것!

대체키(Alternate key)

기본 키가 아닌 후보 키

외래 키(foreign key)

어떤 릴레이션의 기본 키를 참조하는 어트리뷰트

  • 릴레이션들의 관계를 표현하기 위해 사용
  • 외래키 어트리뷰트는 참조되는 어트리뷰트와 같은 도메인을 가져야함!
  • 하나의 릴레이션에는 외래키가 여러 개 존재할 수도 있음
  • 자체 릴레이션의 기본키를 참조할 수도 있음!
profile
멋쟁이가 될테야

0개의 댓글