Relational Data Model

JJAE WON·2022년 4월 7일
0
post-thumbnail

🧐 Data Model?!

Data를 어떤 자료구조를 사용할 것인지.. 데이터들끼리 어떤 관계를 가지고 있을지 이런 것들을 표현하기 위해 Data Model이 등장하게 되었다.
그리고 DBMS마다 Data Model이 다를 수 있다.

  • Relational Data Model
    가장 널리 사용되는 데이터 모델이며 요즘에는 객체로 데이터 모델을 설계하는 Object-Relational Model인 OR-DBMS를 많이 사용한다.
    현재 대부분의 RDBMS는 실직적으로 ORDBMS이다.
    테이블 형태로 데이터를 표현하며 표준언어인 SQL을 사용한다.

  • Entity-Relational(E-R) Data Model
    데이터베이스 설계에 대부분 사용되며 데이터 설꼐의 목적인 고객의 요구사항을 반영하여 고객에게 설명할 때 도형을 사용하여 쉽게 보여주기 위해 사용한다. 또한 E-R Model이 자연스럽게 Relational Model로 바뀔 수 있기 때문에 전세계적으로 널리 사용되고 있다.



Relational Data Model

관계형 모델은 테이블 형태로 데이터를 표현한다.

1️⃣ 테이블의 주요 용어

  • Attribute(Filed, column)
    위 그림에서 학번, 이름, 학년, 학과 처럼 속성들을 Attribute라고 이야기 한다.
    컬럼의 이름이라고 생각하면 된다!
  • Domain
    속성이 가질 수 있는 값의 집합이다. 학년의 경우 1,2,3,4 의 값이 나올 수 있기 때문에 Domain 은 {1,2,3,4}가 된다.
    정의되지 않은 값인 Null 을 모든 Domain이 포함하고 있다

  • Tuple(Record, row)
    속성에 대해 값들이 모인 집합이다. 위 테이블의 속성값들에 해당하는 모든 값을 모아 놓은 row를 말한다. 만약 속성에 대한 값이 하나라도 없다면 그건 튜플이 아니다!!

  • Relation(table)
    튜플의 집합

  • Database
    테이블의 집합


집합이라는 것은 중복을 허용하지 않는다.
따라서 Domain, Tuple, Relation, Database는 중복을 허용하지 않는다.


2️⃣ Schemas와 Instances

Schemas

스키마는 데이터베이스의 논리적인 구조를 일컫는다.
무슨말인가? 라고 생각하면 스키마는 간단하게 테이블의 뼈대라고 생각하면 될 것 같다.

(스키마에는 논리적인 스키마와 물리적 스키마가 존재하는데 아래에서 이야기하는 스키마는 논리적스키마라고 생각하자! )

위 그림처럼 고객과 은행계좌라는 테이블이 있을때 해당 속성의 이름을 정하는 것을 스키마라고 한다. 스키자는 바뀌게 되면 위험하기 때문에 변하지 않는 것이 좋다.

Instance

데이터베이스의 한 순간! 찰나! 를 인스턴스라고 일컫는다.
쉽게 말하자면 데이터베이스의 현재 상태이다.

왼쪽과 오른쪽 테이블은 조회한 시간이 다르다.
그 때 data의 값이 달라질 수가 있다. 이럴때 왼쪽과 오른쪽 테이블의 Instance의 값이 다르다고 표현한다. Instance의 값은 시시각각 변할 수 있다


3️⃣ Relation의 Key

Key란 테이블의 Tuple을 구현하기 위한 Attribute들의 집합이다.

key의 종류에는 4가지가 존재한다.

  1. Canidate Key (후보키)
    tuple중에서 최소한으로 해당 테이블을 고유하게 만들 수 있는 키들의 집합이다.

    위와 같은 테이블이 있을 때 후보키는 무엇일까? 어떤 속성이 해당 테이블을 고유하게 증명할 수 있을까??
    바로 학번과 주민등록번호이다
    학생들 마다 이름과 주소, 지도교수는 같을 수 있지만 학번과 주민등록번호는 무조건 다를 것이다.
    이처럼 최소한으로 해당 테이블을 고유하게 만들 수 있는 키를 후보키라고 한다.
  1. Super Key(수퍼키)
    후보키는 포함하는 집합 모두를 수퍼키라고 한다.
    1번을 예로 들자면 학번과 주민등록번호를 포함한 모든 키들의 집합니 수퍼키이다. 예를 들면 학번과 이름, 학번과 주소, 학번과 주민등록번호와 주소!!
    이런식으로 후보키는 포함하고 있는 집합이라면 모두 수퍼키가 될 수 있다!! 🤭
  1. Primary key(기본키)
    후보키 중 딱 하나가 바로 기본키이다.
    학번 또는 주민등록번호가 기본키가 될 수 있고 만약 후보키가 하나라면 하나가 바로 기본키가 된다.
    기본키의 값을 Null이 될 수 없다! 절대로!!
  1. foreign key(참조키 또는 외래키)
    다른 테이블을 참조하고 있는 속성값을 참조키라고 한다.

    위와 같이 학생테이블과 교수테이블이 있을 때
    학생 테이블의 지도교수 속성은 교수테이블의 교번 속성값을 참조한다.
    학생 테이블에서는 지도교수 속성을 참조키라고 한다.


    여기에서 중요하게 봐야할 부분은 두가지가 있다.
  • 참조되는 테이블의 키는 무조건 Primary key이어야 한다.
  • 참조하는 테이블의 참조키값을 Null일 수도 있다.

위를 예를 들자면 참조되는 테이블인 교수테이블의 교번 속성은 꼭 Primary key이어야 한다.
그리고 학생 테이블의 지도교수 속성값을 첫번째 튜플처럼 '11215' 라는 값이 들어갈 수도 있지만 알수없는 값인 null이 들어갈 수도 있다. 하지만 교수 테이블의 교번 값은 Primary key이기 때문에 Null이 될 수는 없다!!!



E-R Data Model

도형으로 쉽게 Data를 표현하는 E-R Data Model은 위처럼 생겼다!
Id를 기본키로 하는 교수 테이블과 Id를 기본키로 하는 학생 테이블은
지도교수라는 이름으로 관계가 형성되어있다는 것을 의미한다.




위 글은 공부하며 작성한 글이므로 내용상의 오류가 있을 수 있습니다.
잘못된 부분은 덧글로 이야기 해주세요😀

profile
안드왕 찐천재가 되고싶다.

0개의 댓글