데이터베이스 설계 단계

데이터베이스 설계

  • 사용자의 다양한 요구 사항을 고려하여 데이터베이스를 생성하는 과정
  • E-R 모델과 릴레이션 변환 규칙을 이용한 설계과정

E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정

1. 관계 데이터 모델의 개념

관계 데이터 모델의 기본 개념

  • 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
  • 하나이ㅡ 개체에 대한 데이터를 하나의 릴레이션에 저장

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

  • 릴레이션(relation)
    • 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
    • 파일 관리 시스템 관점에서 파일(file)에 대응
  • 속성 (attribute)
    • 릴레이션의 열, 애트리뷰트
    • 파일 관리 시스템 관점에서 필드(field)에 대응
  • 투플(tuple)
    • 릴레이션의 행
    • 파일 관리 시스템 관점에서 레코드(record)에 대응
  • 도메인(domain)
    • 하나의 속성이 가질 수 있는 모든 값의 집합
    • 속성 값을 입력 및 수정할 때 적합성의 판단 기준이 됨
    • 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의
  • 널(null)
    • 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
  • 차수(degree)
    • 하나의 릴레이션에서 속성의 전체 개수
  • 카디널리티(cardicality)
    • 하나의 릴레이션에서 투플의 전체 개수

도메인
한 애트리뷰트에 나타날 수 있는 값들의 집합
각 애트리뷰트의 도메인의 값들은 원자값
프로그래밍 언어의 데이터 타입과 유사함
동일한 도메인이 여러 애트리뷰트에서 사용될 수 있음
복합 애트리뷰트나 다치 애트리뷰트는 허용되지 않음

차수와 카디널리티
유효한 릴레이션의 최소 차수는 1
유효한 릴레이션은 카디널리티 0을 가질 수 있음
릴레이션의 차수는 자주 바뀌지 않음
릴레이션의 '카디널리티'는 시간이 지남에 따라 계속 변함

릴레이션의 구성

  • 릴레이션 스키마(relation schema)
    • 릴레이션의 논리적 구조
    • 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
      ex) 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
    • 릴레이션 내포(relation intension)라고도 함
    • 정적인 특징이 있음(→ 변하지 않는다. 뼈대)
  • 릴레이션 인스턴스(relation instance)
    • 어느 한 시점에 릴레이션에 존재하는 투플들의 집합
    • 릴레이션 외연(relation extension)이라고도 함
    • 동적인 특징이 있음(→ 고객 수 변화한다. 투플의 수 변한다)

데이터베이스의 구성

  • 데이터베이스의 구성(database schema)
    • 데이터베이스의 전체 구조
    • 데이터베이스를 구성하는 릴레이션 스키마의 모음
  • 데이터베이스 인스턴스(database instance)
    • 데이터베이스를 구성하는릴레이션 인스턴스의 모음

릴레이션의 특징

  • 투플의 유일성
    • 하나의 릴레이션에는 동일한 투풀이 존재할 수 없다
  • 투플의 무순서
    • 하나의 릴레이션에서 투플 사이의 순서는 무의미하다
  • 속성의 무순서
    • 하나의 릴레이션에서 속성 사이의 순서는 무의미하다
  • 속성의 원자성
    • 속성 값으로 원자 값만 사용할 수 있다

키(key)

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

키의 특성

  • 유일성(uniqueness)
  • 하나의 릴레이션에서 모든 투플은 서로 다른 키값을 가져야 함
  • 최소성(minimality)
    • 꼭 필요한 최소한의 속성들로만 키를 구성

키의 종류

슈퍼키(super key)

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

후보키(super key)

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

(고객 아이디 + 고객 이름) → 슈퍼키는 될 수 있지만 후보키는 될 수 없다. why? 최소성을 만족시키지 못하기 때문에
고객 아이디만으로도 식별이 가능하다
(고객 이름 + 주소) → 후보키 OKay

기본키(primary key)

  • 후보키 중에서 기본적으로 사용하기 위해 선택한 키
  • 널값을 가질 수 있는 속성이 포함된 후보키는 부적합
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
  • 단순한 후보키를 선택

대체키(alternate key)

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

키의 종류

외래키(foreign key)

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 릴레이션들 간의 관계를 표현
    • 참조하는 릴레이션: 외래키를 가진 릴레이션(주문 릴레이션)
    • 참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션(고객 릴레이션)

  • 외래키의 역할? 고객 릴레이션과 주문 릴레이션이 관계를 맺어 주문 릴레이션의 투플과 연관성 있는 고객 릴레이션의 투플을 연결할 수 있음
  • 외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 되지만 도메인은 같아야 한다.

cf) 기본키는 Null 값 가지면 안 된다.

2. 관계 데이터 모델의 제약

무결성 제약조건(integrity constraint)

  • 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
  • 무결성: 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것

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

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

    올바른 릴레이션 아니다

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

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

    주문고객에 cherry라는 아이디 있지만, 고객아이디에는 cherry라는 아이디 존재하지 않는다. 이 경우, 외래키 참조할 수 없는 값을 가진다.
    참조 무결성 제약조건을 위배

외래키 속성이 널 값을 가진다고 해서 참조 무결성 제약조건을 위반한 것은 아니다.

profile
우당탕탕 / 블로그 이사 중

0개의 댓글