2월 2주차 스터디 발표자료
DB, DBMS, RDB 등에 대한 개념정리
데이터베이스란?
여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터의 집합
DBMS란?
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 데이터를 관리해주는 소프트웨어
RDBMS란?
DBMS의 한 종류로 관계형 데이터베이스를 이용한다.
관계형 데이터베이스?
RDB(관계형 데이터베이스)는 테이블, 행, 열의 정보를 구조화하고 테이블을 조인하여 정보 간 관계 또는 링크 설정을 통해 여러 데이터 포인트 간의 관계를 쉽게 얻을 수 있다.
관계형 데이터베이스의 모든 테이블에는 행에서 고유하게 식별가능 한 기본 키라는 속성이 있으며, 외래 키(다른 기존 테이블의 기본키를 참조)를 사용하여 각 행에서 서로 다른 테이블 간의 관계를 만드는데 사용할 수 있다.
데이터의 무결성, 트랜잭션 등 DBMS 기능을 구현
관계형 데이터베이스 용어
1. Relation(순서없음) ≒Table(순서있음)
열과 행으로 만들어진 정보를 구분하여 저장하는 기본 단위
2. 속성(Attribute)
하나의 릴레이션은 현실세계의 개체(entity)를 추상화해 저장하는데, 속성은 개체의 추상화할 항목에 해당한다.
3. 차수(Degree)
한 릴레이션에 들어있는 속성의 수
4. Tuple == Record
테이블의 각 행, 테이블에 나타내는 엔티티의 특정 인스턴스의 값들의 모임
5. Cardinality
릴레이션 튜플의 개수, 차수와 다르게 0을 가질 수 있고, 시간에 지남에 따라 변동됨
6. Domain
릴레이션에 포함된 각 속성들이 가질 수 있는 값들의 집합, 릴레이션에 저장되는 데이터 값들이 본래 의도했던 값만 저장 및 관리를 위해 필요함. 도메인의 이름은 속성 이름과 같을 수도, 다를 수도 있고 하나의 도메인을 여러 속성에서 공유할 수 있음
SQL
Structured Query Language의 약자로, RDBMS에 저장된 데이터를 관리하기 위해 설계된 프로그래밍 언어
DDL - 데이터베이스 스키마와 설명을 처리를 정의하는 언어. 데이터베이스나 테이블 생성/변경/삭제를 포함
DML - 데이터 검색, 삽입, 변경, 삭제를 수행하여 조작하는 언어
DCL - 데이터에 접근할 수 있는 권한을 관리하는 언어
TCL - 트랜잭션을 다루는 언어
스키마
데이버 베이스를 구성하는 개체, 속성, 관계 및 제약조건 등에 관해 전반적으로 정의한 메타데이터의 집합
Key
RDB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성
1. Candidate Key(후보키)
튜플의 유일성을 식별할 수 있는 모든 key
2. Primary Key(기본키)
튜플의 유일성 확보를 위해 후보키중 선택된 key
3. Alternate Key(대체키)
두 개 이상의 후보키가 있는 경우 기본키를 제외한 나머지 후보키
4. Foreign Key(외래키)
릴레이션 간의 참조 관계를 나타내기 위한 key
5. Super Key(슈퍼키)
릴레이션 내에 있는 속성들의 집합으로 구성된 최소성이 없는 Key
데이터 무결성
데이터의 정확성과 일관성을 유지하고 보증하는 것을 의미함
1. 개체 무결성
기본키 제약이라고도 하며, 모든 테이블은 기본 키를 가져야하며 무결성 원칙을 지켜야하는 조건
기본키에는 Null값이 올 수 없음
기본키는 테이블 내에 오직 하나의 값만 존재해야 함
2. 참조 무결성
외래키 제약이라고도 하며, 테이블 간의 참조 관계를 선언하는 제약조건
외리캐에는 Null이거나 참조된 기본 키 값과 동일해야함
외래 키 속성은 참조할 수 없는 값을 지닐 수 없음
3. 도메인 무결성
테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 도메인(속성의 값, 타입, 제약 사항 등에 대한 값의 범위)을 정의하고 적절한 데이터가 입력되었는지 확인하는 조건
관계형 데이터베이스의 특징
장점
명확하게 정의된 스키마로 데이터 관리, 다양한 키로 데이터 관리데이터 무결성 보장
관계를 통해 데이터를 중복없이 저장
복잡한 형태의 쿼리질의 가능
단점
스키마에 맞춰 데이터를 다뤄야해 속성추가 시엔 테이블을 변경시키거나 새롭게 만들어야 함
관계형 데이터베이스를 이용해 복잡한 관계 생성시 복잡한 쿼리가 만들어질 수 있음
Scale Out(수평적 확장)이 어려움
대량의 데이터를 입력할 경우 조회나 성능이 저하 될 수 있음
참조
https://cloud.google.com/learn/what-is-a-relational-database?hl=ko
https://jhnyang.tistory.com/108
https://blog.yena.io/studynote/2018/10/02/DBMS-SQL.html