개요와 목적
이번 시간에는 관계형 데이터에 대해서 알아본다.
관계형 데이터 베이스의 뿌리가 되는 데이터 베이스에 대해서 먼저 알아보고, 관계형 데이터 베이스 핵심인 테이블 연결 기능이 어떤 편리함을 주는 지 알아본다.
마지막으로 관계형 데이터 베이스의 구조도 알아본다.
데이터 베이스란, 필요성과 기능.
RDBMS전에, 기반이 되는 데이터베이스의 필요성과 데이터를 관리 하는 기능을 알아보자.
파일을 통해, 데이터를 관리하는 것이 얼마나 불편한 지 알게 되면, 데이터 베이스의 필요성과 기능을 파악할 수 있다.
텍스트 파일을 통해서, 제목, 내용, 날짜, 저자, 저자 프로필을 파일로 관리한다면 문제점이 무엇이 있을까? 이렇게 파일 형식으로 한다면, egoing이라는 저자가 작성한 데이터를 찾으려면 모든 파일을 열어봐야 한다. 또한 저자 egoing이라는 저자의 프로필 developer를 수정하려면, 모든 파일을 열어서 일일이 수정해야 하는 어려움이 있다.
데이터베이스 사용
데이터 베이스인 스프레드 시트를 활용하면, 위의 데이터를 테이블 형식으로 나타낼 수 있다.
데이터베이스의 장점과 기능
데이테 베이스 기능 중 하나인 READ를 사용해서, 저자가 egoing인 데이터들만 조회할 수 있다.
데이터 베이스를 기능을 활용하면, 수 많은 데이터가 있는 테이블에서도 CRUD를 순식간에 처리할 수 있다.
(C-추가 데이터 생성, R-원하는 데이터 검색, U-기존 데이터 업데이트, D-데이터 삭제)
관계형 데이터 베이스의 필요성과 기능
데이터베이스를 활용하면, 보기 좋은 테이블 형식을 사용하여, CRUD 처리를 빠르게 할 수 있음을 알아보았다. 이제, 데이터베이스 성능을 업그레이드한 관계형 데이터 베이스에 대해서 알아보자.
관계형 데이터베이스는 고유 값(Primary Key)을 참조하여 테이블들을 연결한다. 예를 들어, (핵심키-이름-나이-성별) 테이블과 (핵심키-글 목록-댓글목록)테이블을 핵심 키로 연결한다. 이렇게 연관된 테이블로 데이터베이스를 관리하면, 인적 사항과 글 목록이 연결은 되었지만, 분리 되었기 때문에, 각자 체계적으로 관리하기가 쉬워지는 장점이 있다.
예시를 통해서, 관계형 데이터 베이스의 장점을 더 알아보자.
<1번 예시- id1,2번과 5번 author가 같은 egoing이 아니라면?>
단순 문자열이 아니라 데이터마다 고유의 값을 가지고 있기 때문에, 데이터의 구분을 확실히 할 수 있고, 연결이 가능하다.
물론, 관계형 데이터 베이스를 관리하는 언어 SQL을 통해서 핵심 키를 기준으로 두 테이블을 합쳐서 볼 수 있다.(=JOIN이라고 한다.)
<2번 예시 - author를 기준으로 코멘트라는 새로운 테이블을 효율적으로 추가하고 싶을 때>
author를 핵심 키로 관계형 데이터베이스를 만들면, 핵심 키와 관련된 comment 테이블을 쉽게 만들 수 있다.
또한, author의 profile의 수정이 있을 때, author 테이블만 수정하면 된다는 장점이 있다.
관계형 데이터베이스 구조
관계형 데이터베이스의 구조는 위 사진과 같다. 먼저 테이블은 한 주제에 대한 데이터의 집합을 의미한다. 위 예시로는 코멘트의 집합, 저자들의 집합과 같다. 이러한 테이블 중에서 관계성이 있는 것을 모아 놓은 폴더가 데이터베이스(=스키마)라고 한다.(기능이 적은 MySql에서만 데이터 베이스와 스키마를 같다고 본다. Oracle이나 ProgreSQL의 경우 여러개의 스키마를 데이터베이스를 가지는 구조이다.) 위 예시를 보면, author id라는 핵심 키를 통해서 관계되어 있는 author테이블 topic테이블 comment테이블을 저장하는 폴더를 데이터 베이스라고 할 수 있다. 마지막으로 다양한 데이터 베이스를 모두 저장하는 곳이 데이터베이스 서버이다.
Reference
'Web Sever 개발과 CS 기초 > DB 지식' 카테고리의 다른 글
DB Isolation Level 격리 수준 이해하기 (0) | 2022.10.01 |
---|---|
데이터베이스 구성 요소와 키(PK, FK)에 대한 이해 (0) | 2022.10.01 |
DB Index 이해하기 (0) | 2022.10.01 |
Transaction과 ACID 쉽게 이해하기(+MySQL transaction 설정 방법) (0) | 2022.10.01 |
SQL 언어 DML, DDL, DCL, TCL 이해하기 (0) | 2022.09.24 |