본문 바로가기

Web Development/CommonSense

[6장] 데이터베이스

지난 운영체제 시간은 어떠셨나요? 머리가 지끈지끈하더라구요...ㅠㅠ

이번시간에는 정보화사회, 빅데이터 등 데이터의 중요성이 각광받고 있는 가운데,

컴퓨터에서는 이러한 데이터를 어떻게 관리하고 운영하는지 관련해서 개론적으로 알아보려합니다.

 

 

바로 시작하겠습니다.

 

☞ 본 포스팅은 공부 내용을 바탕으로 정리하는 것입니다. 주관적이며 정확하지 않은 내용이 포함 되어있을 수 있습니다.

☞본 포스팅은 한빛출판사의 '컴퓨터사이언스'책을 공부한 내용을 토대로 요약한 내용입니다.

 

 

 

1. 데이터베이스란?

우선, 데이터베이스가 무엇인지 간략히 살펴보도록 하겠습니다.

데이터베이스는 '데이터를 효율적으로 관리하기위해 컴퓨터에 저장한 것'이라고 정의됩니다.

그리고 이런 데이터베이스를 관리하는 '데이터관리시스템(DBMS, Database Management System)이 있습니다.

DBMS를 통해 우리는 데이터베이스를 손쉽게 관리하고 이용할 수 있는 것이지요.

 

컴퓨터에서 데이터라하면 무엇이 있을까요?

파일(File) 입니다. 파일의 기본 구성요소는 레코드(Record)와 필드(Field)로 구성됩니다.

'레코드(Record)'는 자료표현의 기본단위이며,

'필드(Field)'는 레코드의 속성을 나타내는 정보의 최소단위 입니다.

글로만 보면 어려우니 아래 그림으로 예시를 살펴보세요 !

내가만든그림..

위 그림에서는 '레코드'와 '필드'가 어떤 것인지 이해할 수 있을 것 입니다.

다음으로 DATABASE와 DBMS는 어떤지 살펴볼께요.

DATABASE는 데이터보관소이며,

DBMS는 DATABASE를 관리하는 도구이며 동시에 응용프로그램과 연결해주는 도구입니다.

그림으로 나타내면 다음과 같습니다.

내가만든그림..

이처럼 데이터베이스와 응용프로그램을 분리하고, 그것을 DBMS로 연결해 놓음으로 인해서

응용프로그램을 새로 만들거나 혹은 변경하여도 데이터베이스는 그것과 별개로 유지할 수 있는 것입니다.

이로 인해 데이터의 독립성(Program-data Independence)를 유지할 수 있습니다.

 

 

2. 데이터 모델

데이터 모델은 데이터베이스를 설계할 때, 데이터와 데이터간 논리 구조를 표현하는 것 입니다.

'계층형 데이터 모델', '네트워크형 데이터 모델', '관계형 데이터 모델', '객체지향형 데이터 모델' 등이 있습니다.

 

① 계층형 데이터 모델(Hierarchical Data Model)

계층형 데이터모델은 가장 역사가 오래된 데이터베이스 역사상 초창기 모델입니다.

자료를 표현하는 '레코드(Record)'와 레코드를 연결하는 '링크(Link)'로 구성된 트리형태로 되어있습니다.

부모 레코드는 여러 자식을 가질 수 있지만, 자식 레코드는 한개의 부모 레코드만을 가질 수 있습니다.

즉, 부모와 자식 레코드의 관계는 '1 대 다 (1:N)' 형태 입니다.

계층형데이터모델

 

② 네트워크형 데이터 모델(Network Data Model)

네트워크형 데이터 모델은 '레코드'와 '레코드'간을 연결하는 '간선(edge)'로 나타냅니다.

위 '계층형 데이터 모델'과 다르게 '레코드'와 '레코드'의 관계가 '다 대 다(N:M)' 형태 입니다.

다만 네트워크형 데이터모델은, 구조를 변겨키 어려워 확장성이 다소 떨어진다는 문제점이 있습니다.

(크게 중요한 개념이 아니기에 그림 생략하고 다음으로 넘어가겠습니다.)

 

③ 관계형 데이터모델 (Relational Data Model)

소개드린 데이터 모델중 가장 중요한 개념입니다. 1970년 IBM에서 제안한 모델로,

비교적 그 개념이 단순하여 현재까지도 가장 범용화된 데이터모델입니다.

관계형 데이터모델은 엑셀 표와 같이 행과 열로 구성된 2차원 테이블 형태에 데이터를 저장합니다.

(그냥 엑셀을 상상하시면 가장 편합니다.)

각 테이블은 고유 명칭을 가지며, 실제 고유하게 식별가능한 '엔티티(Entity)'에 관련한 정보를 저장합니다.

관계형 데이터모델을 적용한 DBMS로는 MySQL, Oracle, MS-SQL 등이 대표적입니다.

아래 엑셀표와 같은 형식입니다.

학번 학과 이름
2022030 컴퓨터공학과 현빈
B402010 블록체인학과 손예진

 

④ 객체지향형 데이터모델(Object-Oriented Data Model)

객체지향형 데이터모델은 '데이터'와 '메소드'를 하나의 객체로 다루는 모델로, 쉬운 사용접근성을 가지고 있습니다.

 

 

3. 관계형 데이터베이스

위 데이터 모델 중 '관계형 데이터 모델'을 적용한 가장 보편적으로 활용되는

데이터베이스인 관계형 데이터베이스에 대해 자세히 소개드리겠습니다.

관계형 데이터베이스는 위 표에서도 보셨다싶히, 엑셀과 유사한 형태로 데이터를 저장합니다.

테이블의 고유한 이름인 '릴레이션', 하나의 객체를 의미하는 '엔티티',

릴레이션의 각 행을 표현하는 '튜플', 또는 '레코드'

릴레이션의 각 열을 표현하는 '속성' 등 다양한 기본용어들이 존재하는데 그림으로 살펴보겠습니다.

 

릴레이션/엔티티/속성/레코드/튜플

그 외 알아야 할 용어로는...

 

도메인 : 하나의 속성이 가질수 있는 값 가짓수 입니다. (EX : 학년 속성은 4개의 도메인을 가집니다.)

차수 : 튜플(레코드)를 구성하는 속성 갯수 입니다. (위에서는 학번,이름,학년,연락처 네개이므로 차수는 4입니다.)

카디널리티 : 튜플의 갯수 입니다. (학생 릴레이션에서 튜플의 갯수는 4개이므로 카디널리티는 4입니다.)

Null값 : 속성값이 없는 경우 NULL 값을 통해 표현합니다.

키 : 각 튜플을 구별할 수 있게 해주는 고유한 값(속성)의 모임입니다. 후보키, 기본키, 대체키, 외래키 등이 있습니다.

 

ⓐ 후보키

유일하게 구별할 수 있는 최소한의 정보(속성)으로 구성된 키(학번, 이름, 연락처)

ⓑ 기본키

후보키가 여러개면 대표키가 필요하다. 이를 기본키라고 칭합니다.

ⓒ 대체키

기본키를 제외한 나머지 후보키

ⓓ외래키

릴레이션과 릴레이션 사이의 관계를 나타내는 키

(예를들어, 학번/학과를 표현한 '학과' 릴레이션이 하나 더 있다고 가정해보면,

그럼 위 '학생' 릴레이션과 '학과'릴레이션의 외래키는 '학번'이라는 연결해주는 키입니다.)

 

 

 

마지막으로 SQL에 대한 소개와 실습 관련한 좋은 강의를 하나 소개해드리고 마무리하도록하겠습니다.

 

 

4. SQL(Structured Query Language)

SQL은 1970년 IBM에서 최초로 사용한 관계형 데이터베이스를 관리하는 DBMS 언어입니다.

SQL은 크게 '정의 기능(릴레이션 생성/제거, 속성 추가/삭제)',

'조작 기능(데이터 검색/삽입/수정/삭제)', '제어기능(시작/철회/완료)'등을 수행합니다.

 

My-SQL(MariaDB), Oracle 등 유명한 관계형데이터베이스를 배우기전에 기초적으로 꼭 배우고 가면 좋을 것 같습니다.

 

아래 링크된 사이트에서, 'DATABASE1' , 'SQL Join', '관계형데이터 베이스', 'My-SQL' 까지의 강의를

들어보시면서 한번 살펴보시면 데이터베이스의 실습부분을 보충 할 수 있을 것 입니다.

 

https://opentutorials.org/course/3162

 

DATABASE1 - 생활코딩

수업소개 이 수업은 정보기술의 심장인 데이터베이스에 대한 포괄적인 소개를 담고 있습니다. 수업대상 이 수업은 구체적인 데이터베이스 제품을 다루지 않습니다. 데이터베이스라는 복잡한 ��

opentutorials.org

 

 

- E N D -

'Web Development > CommonSense' 카테고리의 다른 글

[8장] 정보보안  (0) 2020.07.13
[7장] 네트워크와 인터넷  (0) 2020.07.12
[5장] 운영체제  (0) 2020.07.10
[4장] 프로그래밍 언어(개요/절차지향/객체지향)  (0) 2020.07.06
[3장] 컴퓨터 구조  (0) 2020.07.04