Database - Relational Database

Joshua Song / 송성현·2020년 5월 17일
1

데이터베이스

목록 보기
4/4
post-custom-banner

Introduction

SQL vs NoSQL 이라는 주제로 포스팅을 과거에 진행한 적이 있는데, NoSQL 데이터베이스는 그런 항목이 따로 있지만 오히려 관계형 데이터 베이스의 특징 중 하나인 SQL로만 파고 들어가 공부를 한 것 같아 조금 더 포괄적으로 관계형 데이터베이스를 커버하고 싶어서 작성을 한다.

데이터 베이스라 함은 체계화된 데이터의 모임으로 여러 시스템들의 정보를 운영하고 처리할 수 있도록 데이터를 구조화 해 저장하는 것이다. 우리가 흔히 말하는 DBMS (Database Management System)은 이러한 데이터베이스를 관리하는 시스템이다.

Relational Database

관계형 데이터 베이스는 데이터 베이스의 한 종류로 가장 많이 사용되고 또 신뢰성이 높다. SQL (Structured Query Lanaguage)을 사용하기 때문에 SQL 데이터베이스라고도 할 수 있다.

관계형 데이터베이스는 2차원 테이블 형식을 이용해 데이터를 속성과 값으로 구조화 해 정의하고 또 저장한다. 데이터 항목 간에 정의된 관계 또한 정의해 정리할 수 있다. 열과 행으로 이루어진 테이블은 데이터베이스에 표시할 객체들의 정보를 수록하고 기본키라는 고유 식별자를 통해 행을 표시하고 외래 키를 사용해 행간의 관계를 표시할 수 있다.

Important Terms


데이터의 속성을 표시하는 행은 필드, 혹은 컬럼이라는 이름을 쓸 수 있고 데이터의 값을 정리해 놓는 열은 로우, 레코드 아니면 튜플 이라는 이름으로 정리할 수 있다.

Primary Key (기본키) : 기본키는 테이블의 각 로우를 식별해주는 키로 각 로우의 유일한 값이고 또 null 이 될 수 없다. 각 테이블 마다 무조건 있어야 한다.
Foreign Key (외래키) : 외래키 / 외부키는 테이블의 열중 다른 테이블의 기본키를 참조할 수 있는 키이다. 이미지를 예를 들어 본다면 선수 테이블의 팀코드는 외래 키인데, 구단 테이블의 기본키의 값을 지니고 있어 팀 코드라는 필드를 기반으로 구단 테이블의 해당 로우 정보를 접근하고 또 가져올 수 있다.

Schema: 데이터베이스의 테이블 구조 및 형식, 관계 등의 정보를 형식 언어로 기술한 메타 데이터의 집합. 데이터 개체, 속성, 관계 및 데이터 값들의 제약 조건 같은 정보를 바탕으로 일종의 설계도를 만든다고 생각하면 된다.

Relationship(관계): 테이블 간의 맺는 관계. 일대일, 일대다, 다대다 관계를 외래 키를 통해 정의할 수 있다.

특징

큰 특징들로 들어가기 전, 세부적인 특징들은,
1. 데이터의 분류, 정렬, 탐색 속도가 빠르다.
2. 신뢰성이 높고 데이터의 무결성을 보장한다.
3. 기존의 작성된 스키마 수정이 어렵다.
4. 데이터베이스의 부하를 분석하는 것이 어렵다.

이제 관계형 데이터베이스의 굵직한 특징들을 보자.

SQL
관계형 데이터베이스는 구조화 질의 언어 (Structured Query Language)를 통해 데이터베이스와의 통신을 한다. SQL은 관계형 데이터베이스의 기본 인터페이스며 데이터의 행을 추가, 업데이트 그리고 삭제 등 트랜스액션 처리 및 분석을 하고 또 데이터베이스 자체를 관리하는데 사용된다. SQL은 1986년 미국표준협회(ANSI)의 표준이 되었다. 모든 관계형 데이터베이스 엔진에서는 표준 ANSI SQL을 지원하고, 일부는 해당 엔진의 고유 기능을 지원하는 확장 ANSI SQL을 보유하고 있다.

SQL의 종류는 다른 포스팅에서 커버했으니 넘어간다.

데이터 무결성
데이터 무결성은 데이터의 전체적인 완전성, 정확성 및 일관성을 의미한다. 관계형 데이터베이스는 기본 키, 외래 키, Not Null 제약 조건, Unique 제약 조건, Default 제약 조건, Check 제약 조건 같은 일련의 제약 조건을 사용해 데이터 무결성을 적용한다. 정확성과 안정성을 보장하기 위한 이러한 제약 조건들은 데이터 무결성이라는 특징을 지원한다.

트랜스액션
트랜스액션은 하나의 논리적 작업 단위를 구성하는 데이터베이스 작업으로 실행되는 하나 이상의 SQL 문이다. 트랜스액션은 ACID 규정을 준수하기에 무조건 전부 아니면 무라는 원리로, 실행되면 기록이 되거나 아니면 아예 개별 구성 요소도 통과되지 않는다.

ACID 규정 준수
모든 데이터 베이스는 데이터 무결성을 위해 ACID 규정을 준수해야 한다.
원자성 (Atomicity) 을 위해서는 트랜스액션이 모두 성공적으로 실행되거나 일부가 실패할 경우 전체가 무효회 된다. 일관성 (Consistency) 을 위해서는 트랜스액션의 일부로 데이터베이스에 작성된 데이터가 모든 정의된 규칙 및 제한 사항을 준수해야 한다. 격리 (Isolation) 을 위해서는 각 트랜스액션이 다른 트랜스액션과 상관없이 일관적이고 독립적으로 실행되어야 한다. 내구성 (Durability) 를 위해서는 트랜스액션이 성공적으로 완료되면 데이터베이스에 대한 모든 변경 사항을 영구적으로 보존해야 한다.

Conclusion

그리 길지는 않지만 그래도 관계형 데이터베이스의 기본만 커버했다. 수많은 관계형 데이터베이스가 있는데, 그걸 사용하고 누가 혹시나 물어본다면 그래도 대답할 정도는 알아야 하지 않겠는가...? Hohoho 이 정도면...간략하게 알 수 있다.

출처
https://www.fun-coding.org/mysql_basic1.html
http://database.sarang.net/?inc=read&aid=578&criteria=dbms&subcrit=&id=&limit=20&keyword=&page=2
http://tcpschool.com/mysql/mysql_intro_relationalDB
https://aws.amazon.com/ko/relational-database/

profile
Grow Joshua, Grow!
post-custom-banner

0개의 댓글