본문 바로가기
CS 전공 지식/데이터베이스

5강 - 관계 데이터 모델링 (테이블 작성, 관계 매핑, 외래키 설정)

by Chaedie 2022. 6. 2.
728x90

모든 레퍼런스는 KOCS - 데이터베이스의 원리와 응용 (한양대 백현미 교수님) 입니다.


학습 목표

  1. 관계 데이터 모델의 기본 용어 익히기 (릴레이션 속성 튜플 도메인 차수 카니덜리티 등)
  2. 릴레이션을 구성하는 요소와 특성 이해
  3. 키의 역할, 종류 알기
  4. 무결성 제약의 의미와 필요성 이해

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

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

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

속성 : 릴레이션의 열

튜플 : 릴레이션의 행

도메인 : 하나의 속성이 가질 수 있는 모든 값의 집합 (INT, CHAR(10) 등)

널 : 속성 값을 아직 모르거나, 해당되는 값이 없음을 표현

차수 : 하나의 릴레이션에서 속성의 전체 개수

카디널리티 : 하나의 릴레이션에서 튜플의 전체 개수

릴레이션의 구성

1) 릴레이션 스키마

릴레이션의 논리적 구조 (ex) 고객 (고객아이디, 고객이름, 나이, 등급, 직업, 적림금))

정적인 특징이 있음

2) 릴레이션 인스턴스

어느 한 시점에 릴레이션에 존재하는 튜플들의 집합, 동적인 특징이 있음

데이터베이스의 구성

1)데이터베이스 스키마

데이터베이스의 전체 구조, 데이터베이스를 구성하는 릴레이션 스키마의 모음

2)데이터베이스 인스턴스

데이터베이스를 구성하는 릴레이션 인스턴스의 모음

릴레이션의 특성

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

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

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

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

키 (Key)

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

키의 특성

  1. 유일성 : 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야함
  2. 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성

키의 종류

1) 슈퍼키 : 유일성을 만족하는 속성 또는 속성들의 집합

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

2) 후보키 : 유일성 + 최소성을 만족하는 속성 또는 속성들의 집합

ex) 고객아이디, (고객이름, 주소) 등

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

널값 가지는 속성은 부적합

값이 자주 변경되면 부적합

단순한 후보키 선택

4) 대체 키 : 기본키로 선택되지 못한 후보키

5) 외래 키(Foreign Key)

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

릴레이션들 간의 관계를 표현

릴레이션 내에서 외래키를 참조할 수 있다.

무결성 제약조건 (Integrity Constraint)

1) 개체 무결성 제약조건 : 기본키를 구성하는 모든 속성은 널 값을 가질 수 없다.

2) 참조 무결성 제약조건 : 외래키는 참조할 수 없는 값을 가질 수 없다.

(+ 외래키는 널 값을 가질 수 있다. )

 

 


실습

💡 내 생각 : 강의에서 이런식으로 하나 하나 단계별로 어떻게 만들어 나가는지 알려주어 작업 프로세스를 명확히 알 수 있게 되었다. 혼자 과제를 진행할 때는 이런 작업 순서를 모른 채 무작정 한번 그려보고 엔티티간의 관계 생각해보고, 매핑 테이블도 만들어보고 (다대다에서 관계를 릴레이션으로 따로 만드는 부분), 외래키 지정하는 등의 작업을 무작정 실시했었다. (물론 강의에서 소개되는 작업 순서와 비슷하지만 프로세스를 아는 상태에서 차례대로 진행하는 것과는 차이가 있다.)

그러다 보니 작업이 뒤죽박죽인 경우도 많았고, 정확한 개념 파악이 안된 상태로 외래키 지정, 매핑 테이블 생성 등을 하다 보니 이 테이블은 이렇게 하고, 저 테이블은 저렇게 하며 틀린 작업을 계속적으로 진행했었다.


물론 한번 그런식으로 해본 경험이 이 강의를 듣고 이해하는데 도움은 될것은 분명하지만, 이제 이 작업프로세스를 가진 상태로 다시 한번 ERD 그려보고, 테이블로 매핑해보고, SQL문으로 변환하면 훨씬 과제를 잘할 수 있을 것으로 기대한다.

💡 위 부분이 아래 내가 적은 궁금점에 대한 해답이 될것 같다. 강의에선 약간 “규칙” 과 같이 “1대N에선 N측 릴레이션에 포함시켜 외래키로 지정한다.” 라는 식으로 설명이 되어있는데, 개념이 부족할 땐 아래 내가 적었던 QnA 처럼 천천히 해석을 하면 될것 같다.

 

  • 기타 고려사항

개체가 자기 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용

속성이 많은 관계는 유형에 상관없이 별도의 릴레이션으로 변환 고려


💡 과제에 필요한 공부가 5강으로 끝이 났습니다. 이후 과목은 과제 이후에 시간이 남으면 공부하겠습니다.

댓글