RDBMS

yboy·2022년 8월 9일
0

학습로그

목록 보기
14/29
post-thumbnail

학습동기

우아한테크코스 레벨3 프로젝트에서 JPA와 Mysql을 쓰고 있다. JPA는Transaction 단위로 동작한다. 따라서 JPA를 사용하는 입장에서 Transaction의 개념에 대해 잘 알아야 한다고 생각해 왔지만 그러지 못하고 있었기 때문에 학습을 다짐하게 됐다.(내가 아는 것이라고는 스프링에서 @Transcational을 붙이면 예외가 발생했을 때 Rollback해준다는 것 뿐...) 또한 Mysql을 예전 부터 써왔지만(그저 많이들 사용하는 것 같아서...) RDBMS의 개념도 모호한 것 같아서 곁들어 학습하기로 했다. 우선 이번 포스팅에선 RDBMS 부터 알아보는 걸로...

학습내용

우선 RDBMS에 대해 알아보자.

RDBMS(Relational DataBase Management System)

데이터를 테이블 단위로 관리하는 테이블 기반의 DBMS이다.(Table = Relation)

그럼 DBMS란 무엇일까?

DBMS

데이터베이스를 관리하는 시스템으로 데이터를 저장 및 유지 보수하고 이를 검색하는 시스템

우리가 DBMS를 사용하는 이유는
1. 데이터를 효율적으로 관리하기 위해
2. 데이터를 일회성이 아닌 영구적으로 보관하기 위해

서 이다.

위의 두가지 이유를 충족시키기 위해 테이블 기반의 DBMS인 RDBMS를 사용하는 것이라 정리할 수 있겠다. 또한 역사가 가장 오래되어, 신뢰성이 높고, 데이터의 분류, 정렬, 탐색 속도가 빠른 이유에서 많이 사용된다고 한다. RDBMS의 종류로는 Mysql, Postgresql, mariaDB등이 있다.

RDBMS이외에도 계층형, 네트워크형, 객체지향형, NoSql 기반의 DBMS가 존재한다. RDBMS가 가장 많이 사용되는 것은 사실이지만 그때 그때 처한 환경에 맞춰 적절한 DBMS를 선택해 보자.

그럼 본론으로 들어가 RDBMS의 특징에 대해 알아보자.

  • 2차원 테이블 형식을 이용하여 데이터를 정의하고 설명하는 데이터 모델
  • 하나의 테이블은 여러 개의 컬럼으로 구성
  • 여러 테이블을 합쳐 큰 테이블을 생성(JOIN 으로)해서 필요한 정보를 검색
  • 태이블과 테이블 간의 연관관계(foreign key)를 이용해 필요한 정보를 구하는 방식

용어

튜플(Tuple)

  • 튜플(Tuple) = 행(Row) = 레코드(Record)
  • 하나의 의미있는 데이터 덩어리라고 볼 수 있다.

속성(Attribute)

  • 속성(Attribute) = 열(Column) = 필드(Field)
  • 한 테이블을 구성하는 정보들
  • 속성의 수를 차수(Degree)라고 한다.

기본키(Primary Key)

  • 한 테이블의 각 Tuple(Row)를 유일하게 식별해주는 Attribute(Column)
  • 각 테이블마다 Primary Key가 존재해야 하며, Null 값을 허용하지 않고 각 Tuple마다 유일해야 한다.

외래키(Foreign Key)

  • 한 테이블의 column중 다른 테이블의 row를 식별할 수 있는 키
  • 외래키를 통해 테이블끼리 관계를 맺고 개발자가 원하는 정보를 탐색할 수 있다.
  • RDBMS를 사용하는 가장 큰 이유가 아닌가 싶다.

데이터베이스 스키마

스키마(Schema)

  • 데이터베이스의 구조와 제약 조건에 대한 정의
    • 관계형 데이터베이스를 사용하여 데이터를 저장할 때 가장 먼저 할 일은 데이터의 공통 속성을 식별하여 column으로 정의하고, 테이블을 만드는 것
    • 통상적으로 하나의 테이블이 아닌 여러 개의 테이블로 만들고, 각 테이블 구조, 형식, 관계를 정의한다. 이를 스키마라고 한다.
  • 데이터베이스마다 스키마를 만드는 언어가 존재하며, 해당 스키마만 있으면 동일한 구조의 데이터베이스를 만들 수 있다.
  • DBMS(데이터베이스 관리 시스템)가 주어진 설정에 따라 데이터 베이스 스키마를 생성하고, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터 베이스 스키마를 참조하여 명령을 수행한다.
  • 스키마 3계층이라는 개념이 있다.(추후에 추가 학습을 해봐야 겠다.)

마무리

이번에 데이터베이스의 기본인 RDBMS에 대해 간략하게 알아봤다. 이번 학습을 토대로 데이터베이스 정규화, 트랜젝션, 데이터베이스 인덱싱, 데이터베이스 락 등을 학습하여 데이터베이스에 대한 개념을 더욱 확고히 다져야겠다.

0개의 댓글