[DataBase] 데이터베이스 모델

 

데이터베이스


(1) 데이터베이스 모델

  • 데이터가 어떻게 저장, 관리, 처리되는지 정의한 논리적 구조

  • 가장 대표적인 모델은 '관계형 모델'

 

1-1. 관계형 모델

  • 사용이 쉽다는 점에서 가장 널리 쓰이는 DBMS 모델

  • Row와 Column으로 구성된 테이블 구조로, SQL이라는 언어를 통해 조작

  • 테이블을 표라고 생각했을 때 Row는 가로줄, Column은 세로줄을 의미

  • Row는 레코드라고 부르기도 함

[그림 1] 테이블 구조

 

테이블은 여러 개의 Row와 Column으로 구성, 각각 Row는 레코드(Record)라고 하며 Object(객체) 또는 Entity라고도 한다.

 

필드(field)는 테이블에서 Column에 대응하며 Attribute(속성)라고도 한다.

 

테이블은 하나가 아닌 여러 개 존재 가능, DBMS 중 관계형 모델을 기반으로 한 RDBMS(Relational DataBase Management System, 관계형 데이터베이스 관리 시스템)는 여러 테이블을 조합하여 원하는 데이터를 찾을 수 있도록 하여 좀 더 복잡한 데이터 처리 요구를 수행한다.

 

이처럼 여러 개의 테이블이 존재, 그들 사이의 관계를 식별하기 위한 것이 키(key)라고 한다.

 

키는 테이블에서 고유하게 식별할 수 있는 Row이다.

 

 

후보키

  • 각 행을 유일하게 식별할 수 있는 속성(Column)

  • 모든 테이블은 반드시 하나 이상의 후보 키를 가짐 > 유일성과 최소성 만족

  • 쉽게 말해, 레코드를 유일하게 구별할 수 있는 Column들의 부분 집합

cust_num cust_id cust_birth cust_country
001 origintaste 1999-11-19 Korea
002 cork 2000-02-12 Korea
003 daniel 2001-04-05 USA
004 Kelvin 2002-03-05 UK

위 테이블을 보면 4개의 Column 중에서 중복되지 않은 값이 나타나는 것은 cust_num, cust_id, cust_birth로 각 레코드를 유일하게 식별하는 후보키가 될 수 있다.

 

하지만 cust_country의 경우 중복되는 값이 존재하기 때문에 후보키가 될 수 없다.

 

만약 cust_birth에 동일 생일을 가진 고객의 레코드 정보 추가 시, cust_birth 또한 후보키가 될 수 없다.

 

 

기본키(주 키)

  • 후보키 중에서 선택한 것으로 테이블의 주 키가 됨

  • 기본키로 정의된 Column은 Null 값을 가질 수 없고, 같은 값이 중복으로 저장될 수 없음

  • 후보키들을 조합하거나 그들 중 하나를 선택하여 기본키 만들기 가능

  • 후보키들 중 일부와 다른 Column을 조합하여 기본키 만들기 가능

 

대체키(보조키)

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지를 대체키라고 함

  • cust_num, cust_id, cust_birth에서 cust_num을 기본키로 정의하였다면 나머지 cust_id와 cust_birth가 대체키가 됨

 

슈퍼키

  • 한 테이블 내에 있는 Column들의 집합으로 구성된 키

  • 유일성 만족 / 최소성 불만족

  • 슈퍼키를 구성하는 Column들이 조합되어야 각 레코드 구별 가능

  • 흩어진 Column 몇몇으로는 각 레코드 구별 X

  • cust_id와 cust_country를 조합 > 키를 만들 시, 둘이 뭉쳐있어야만 테이블 각 레코드 유일하게 식별 가능 / cust_id가 떨어진 cust_country 혼자로는 테이블 레코드 유일하게 식별 X

 

외래키

  • 한 테이블이 다른 테이블 참조 > 그들의 관계를 표현하는 키

  • 외래키로 지정 > 참조 테이블의 기본키에 없는 값은 입력 X

 

[그림 2] 기본키와 외래키

 

customer_information의 테이블에서 데이터 중복이 없고 각 레코드를 고유하게 식별하는 Column은 customer_id으로 해당 테이블의 기본키가 된다.

 

order_information 테이블 경우 기본키가 될 수 있는 Column은 order_id이다.

 

두 테이블을 연결해주는 Column은 customer_information에서의 customer_id, order_information에서의 cust_id이다.

 

따라서 cust_id는 order_information의 외래키가 된다.

 

위와 같이 관계형 데이터베이스에서 각각의 테이블들은 외래키로 참조할 수 있다.

 

※ 관계형 모델이 지니는 위와 같은 특징으로 1대1 또는 다대다 관계의 데이터를 표현하기에 좋다.


1-2. 네트워크 모델

[그림 3] 네트워크 모델

  • 70년대에 주로 사용하였던 데이터 모델 > 계층적 데이터 모델과 비슷한 구조를 지님

  • 계층적 DBMS는 자식이 여러 부모를 갖는 것이 불가능 > 네트워크 모델은 가능

  • 좀 더 복잡한 다대다 데이터 관계를 다룰 수 있음

  • 계층적 DBMS가 트리구조면, 네트워크 모델은 그래프 구조

  • 데이터 독립성, 데이터 무결성, 데이터 조작면에서 보완


1-3. 계층적 모델

 

[그림 4] 계층적 모델

  • 데이터들이 트리 구조로 조직 > 부모-자식 관계 형성

  • IBM의 IMS(Information Management System)와 같은 초기 DBMS 메인 프레임 사용

  • 부모-자식 관계가 명확한 상황을 제외, 활용도가 높지 않음


1-4. 객체 지향형 모델

 

[그림 5] 오브젝트와 클래스

  • 객체 지향 프로그래밍(OOP, Object Oriented Programming)과 관계형 데이터베이스 특징을 결합한 형태

  • 데이터를 오브젝트와 클래스로 표현 > 오브젝트는 실세계의 개체, 클래스는 오브젝트의 집합

  • 객체 지향형 데이터베이스에서 모든 개체 > 오브젝트

  • 오브젝트는 property(상태)와 method(행위)로 구성, 각각의 오브젝트는 고유 식별자를 지님

 

Customer라는 오브젝트가 있을 때, 위 그림에서 Customer의 상태를 설명하는 Property에는 고객 ID, 이름, 주소, 이메일 주소가 있다.

 

그리고 Customer 오브젝트가 수행할 수 있는 행위, Behavior로는 아이템 검색, 선호 목록, 카트에 넣기, 지불하기 등이 있다.

 

Property와 Behavior를 아울러 오브젝트라 하고, 이 오브젝트 들이 여럿 모여 클래스를 이룬다.

 

오브젝트와 클래스 외에 상속, 캡슐화 등의 객체 지향 프로그래밍 특징을 지니고 있으며, 관계형 데이터베이스와 비교하면 널리 쓰이지 않는 모델이다.


# Reference

 

http://www.yes24.com/Product/Goods/87579830

'DB' 카테고리의 다른 글

[DataBase]DCL (데이터 제어어)  (0) 2020.03.20
[DataBase] DML (데이터 조작어)  (0) 2020.03.20
[DataBase] DDL (데이터 정의어)  (0) 2020.03.20
[DataBase] DBMS(Database Management System)  (0) 2020.03.18
[DataBase] 데이터베이스 기초  (0) 2020.03.06

+ Recent posts