Home part2. CS 기초 지식 - 데이터베이스
Post
Cancel

part2. CS 기초 지식 - 데이터베이스

데이터베이스

데이터베이스와 DBMS

데이터의 사전상 의미는 ‘현실 세계에서 관찰하거나 측정해 얻은, 가공되지 않은 사실이나 값’이다.

데이터베이스는 데이터를 저장하는 일종의 거대한 창고이다.

그리고 이러한 데이터베이스를 관리하는 것이 DBMS(DataBase Management System)이라는 시스템이다.

데이터 저장 방식

엔티티와 속성

엔티티(entity)는 데이터 베이스에서 표현하려는 유,무형의 객체를 뜻한다. 예를 들어 사람, 장소, 물건, 사건, 개념 등과 같은 명사가 엔티티에 해당한다.

속성(attribute)은 엔티티의 성질을 나타내는 엔티티의 구성요소로, 어떤 사물의 성질이나 특징을 말한다.

릴레이션

릴레이션(relation)은 데이터베이스에서 데이터를 저장하는 기본 단위이다. 일반적으로 엔티티에 관한 데이터를 릴레이션 하나에 담아 관리한다.

데이터를 행과 열로 이뤄진 표 형태로 저장하는 관계형 데이터베이스에서는 릴레이션을 테이블(table)이라고 한다,

예시 : 회원 테이블 |회원번호|이름|나이|주소| |—|—|—|—| |1|김애용|21|종로구| |2|이길벗|23|종로구| |3|이길남|21|마포구|

도메인

도메인(domain)은 릴레이션 내의 각 속성이 가질 수 있는 값의 집합을 말한다. 예를 들어 회원 테이블의 이름 속성은 도메인이 {2~10글자 문자열} 형태의 집합이고, 나이 속성의 도메인은 {x ~ xxx}형태의 숫자 집합이다.

테이블 내 속성 간의 관계와 테이블 간의 관계를 좀 더 명확하게 하기 위해 지정된 특별한 속성을 키(key)라고 한다. 키에는 슈퍼키, 후보키, 대체키, 기본키, 외래키 등이 있다.

  • 기본키 : 기본적으로 키는 테이블을 구성하는 여러 속성 중 단일 속성 혹은 여러 속성의 집합으로 설정할 수 있다. 이는 곧 하나의 속성이 키가 될 수도 있고, 여러 속성이 합쳐져서 키가 될수도 있다는 뜻이다. 기본키(PK, Primary Key)는 유일성과 최소성을 충족하는 키를 말한다. 유일성(uniqueness)이란 속성 값이 중복되면 안 된다는 것이고, 최소성(minimality)이란 키가 최소한의 속성으로 구성돼야 한다는 것이다. 즉 기본키는 최소한의 속성으로 구성되며 중복되는 속성 값이 없다.
  • 외래키 : 외래키(FK, Foreign Key)는 다른 테이블의 기본키를 참조하는 키로, 두 테이블 간의 관계를 나타내기 위해 사용한다. 예를 들어 회원 테이블과 주문 테이블이 존재할 때 주문 테이블에는 어떤 회원이 어떤 상품을 주문했는지에 대한 정보가 필요하다. 이럴 때 회원 테이블을 참조할 때 사용되는 값을 외래키라고 한다.

데이터 베이스 설계

데이터베이스 설계는 사용자의 요구 사항을 기반으로 현실 세계를 반영한 데이터베이스의 구조를 만드는 과정을 말한다. 이는 곧 비효율적이곤 불필요한 상황을 방지하기 위해 설계한다는 것이다.

요구 사항 분석

최적의 데이터베이스 구조를 설계하기 위해선 필요한 요구 사항을 파악하고 분석해야 한다.

개념적 설계

개념적 설계는 크게 엔티티와 속성 추출, 관계 추출로 나뉜다.

  • 엔티티와 속성 추출 요구 사항 분석으로 얻은 의미 있는 명사와 그 성질을 추출하는 작업이다. 따라서 해당 서비스의 요구 사항을 충족하기 위해 무엇을 엔티티로 정할지 고민해야 한다.
  • 관계 추출 엔티티와 엔티티의 관계를 표현하는 동사를 추출하는 과정이다. 예를 들어 회원과 상품이라는 엔티티로 있을 때 두 엔티티를 주문이라는 관계로 엮을 수 있다. 이러한 관계는 ERD(Entity Relation Diagram)로 나타낼 수 있다.(ERD는 엔티티와 엔티티의 관계를 나타내는 다이어그램이다.)
  • 논리적 설계 개념적 설계 단계에서 만든 ERD를 바탕으로 각 속성의 도메인과 제약 조건등을 결정하고 문서화 한다. 예시 :
    • 회원 엔티티의 이름 속성은 문자열의 길이가 2~10이고, 반드시 String 타입이어야 한다.
    • 회원 엔티티 하나는 여러 개의 상품을 구매할 수 있어야 한다.

물리적 설계

개념적 설계와 논리적 설계를 통핵 구성한 데이터베이스 구조를 실제로 우리가 사용하는 컴퓨터 안에서 구현할 수 있도록 설계하는 단계이다. 데이터베이스의 데이터를 하드디스크 등의 물리적 저장 장치에 담을 수 있도록 데이터의 저장 방식, 접근 경로, 탐색 기법 등을 설계한다.

데이터베이스 정규화

데이터베이스 설계 과정을 통해 여러 엔티티와 관계를 추출했더라도 완벽을 보장할 수 없다. 이상 현상(anomaly)이 발생할 수 있기 때문이다.

  • 삽입 이상(insertion anomaly) : 새로운 데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상이다.
  • 갱신 이상(update anomaly) : 중복된 데이터 값 중 일부 값만 변경함으로써 데이터가 불일치되는 현상이다.
  • 삭제 이상(delete anomaly) : 특정 데이터를 삭제할 때 다른 데이터까지 삭제되는 현상이다. 이러한 현상을 방지하기 위해선 정규화(normalization)를 수행해야 한다. 이를 통해 한 테이블에 필요 없는 속성이 저장되는 것을 최대한 막아 저장 공간을 효율적으로 사용하고, 각종 수정으로 인해 데이터가 불일치되는 위험을 줄임으로써 데이터가 항상 일관된 값을 유지할 수 있도록 해야 한다.

정규화 방법

정규화는 제 1정규화(1NF), 제 2정규화(1NF), 제 3정규화(1NF), BCNF, 제 4정규화(1NF), 제 5정규화(1NF)와 같이 여러 단계를 거치며 하나의 테이블을 분해해 이상 현상이 발생하지 않게 한다. 정규화 과정을 거치며 더 이상 이상 현상이 발생하지 않으면 테이블 분해를 멈춘다.

정규화 방법은 따로 분리하여 게시글을 작성할 예정이다.

트랜잭션

트랜잭션(transaction)은 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행돼야 할 일련의 연산을 의미한다. 일반적으로 데이터베이스에서 데이터를 조작하는 연산을 할 때 트랜잭션 단위로 묶어 수행한다.

트랜잭션이 정상적으로 처리됐다면 커밋(commit)을 수행해 작업을 완료하고, 트랜잭션 단위로 작업을 수행하다가 오류가 발생하면 작업을 하기 전 상황으로 되돌리는 롤백(rollback)을 한다.

데이터 베이스 정리

데이터베이스는 웹 애플리케이션의 데이터를 효과적으로 관리하고 웹 애플리케이션과 사용자의 정보 교환을 최적화하는 데 필요한 기술과 원칙을 제공한다. 데이터베이스를 깊게 이해하면 백엔드 개발자로서의 능력을 다각도로 확장하고 웹 애플리케이션의 성능과 신뢰성을 향상할 수 있다.

DBMS는 크게 RDBMS와 NoSQL로 나뉜다. 이는 추후에 자세히 기술할 예정이다.

This post is licensed under CC BY 4.0 by the author.

part2. CS 기초 지식 - 운영체제

part3. DBMS