이번엔 전체적인 데이터베이스의 개념적인 내용에 대해서 정리해보려고 한다.
기본 용어 정리
DB : 실시간 접근, 동시 접속 가능한 데이터 저장소
DBMS : 데이터 베이스안에 있는 데이터를 관리하는 통합 시스템
Query Language : DBMS를 통해 DB에 데이터를 삽입, 삭제, 수정, 조회 등을 수행하는 언어.
1. 엔터티
정의) 현실세상의 여러개의 속성을 가진 하나의 명사.
예시) 회원, 상품 등
약한 엔터티 : 다른 엔터티에 종속적인 엔터티
강한 엔터티 : 다른 엔터티에 종속적이지 않고 혼자서도 성립가능한 엔터티
2. 릴레이션
정의) 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위, 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다.
테이블 : 관계형 데이터베이스에서 릴레이션을 부르는 이름
컬렉션 : NoSQL 데이터베이스에서 릴레이션을 부르는 이름
데이터베이스의 종류
- 관계형 데이터베이스(RDBMS) : MySQL, Oracle 등 (레코드(튜플)-테이블-데이터베이스 구조)
- NoSQL 데이터 베이스 : MongoDB 등 (도큐먼트-컬렉션-데이터베이스 구조)
정리
1. 현실에서 여러가지 속성을 갖는 하나의 명사는 엔터티라고 표현한다.
2. 이를 DB세상에 표현하면 하나의 릴레이션이라고 한다.
3. 릴레이션을 DB에서 테이블 또는 컬렉션이라고 한다.
4. 이러한 릴레이션을 갖는 하나의 객체를 레코드(튜플) 또는 도큐먼트라고 한다.
"즉, 여러가지의 레코드 또는 도큐먼트가 모여 하나의 테이블 또는 컬렉션을 이룬다."
3. 속성
정의) 속성은 엔터티가 가진 특징들로 DB에 저장시 엔터티에서 관리해야할 필요가 있는 속성들만 DB에 릴레이션안에 들어간다.
4. 도메인
정의) 각 속성들이 가질 수 있는 각자의 범위
5. 필드
정의) 하나의 속성
타입)
- 숫자 타입(용량) : INT(4), TINYINT(1), SMALLINT(2), MEDIUMINT(2), BIGINT(8)
-> 용량이 클수록 범위가 더 넓은 형태.
- 날짜 타입(용량) : DATE(3), DATETIME(8), TIMESTAMP(4)
- DATE : 2023-4-2
- DATETIME : 2023-4-2 17:27:47
- TIMESTAMP : 2023-4-2 17:27:47
-> TIMESTAMP는 좀 더 현대시간 범위안에서만 사용가능해 용량을 아끼는 방식이다.
- 문자타입 : CHAR, VARCHAR, TEXT, BLOB, ENUM, SET
- CHAR : 선언한 길이만큼 용량 고정
- VARCHAR : 입력된 문자의 크기만큼 가변적으로 용량 고정
- TEXT : 게시판과 같은 큰 문자열에 사용
- BLOB : 이미지, 동영상 등 큰 데이터 저장에 사용
- ENUM : 문자열 열거에 사용, SET보다 더 많은 경우를 생성가능.
- 예시 : ENUM("A", "B", "C") -> "A"선택시 (1, 0, 0)
- SET : 문자열 열거에 사용, 여러개의 문자열 선택 가능, 비트 단위의 연산 가능
6. 관계
정의) 테이블간의 관계를 의미.
종류)
- 1:1 관계 : 테이블 A,B 가 있을때, A가 3개 있으면 B도 3개 있어야 하는 관계
- 1:N 관계 : 테이블 A는 관련된 여러개의 테이블 B를 가질 수 있는 관계 (유저-찜목록)
- N:M 관계 : 양쪽 테이블 다 수에 상관없이 여러개 존재 가능 (학생-강의)
-> N:M은 테이블을 직접 구축하지않고 가운데에 한 테이블을 통해 구축되는 관계 (학생 - 학생들의 수강목록 - 강의)
7. 키
정의) 테이블간의 관계를 좀 더 명확하게 하기 위한 존재
종류)
- 기본키 : PK, 유일성과 최소성을 만족, 자연키 또는 인조키 중에 사용
- 자연키 : 자연적인 엔터티의 속성에 의해서 유일성, 최소성을 가질 수 있는 키 (주민번호)
- 인조키 : 인조적으로 만들어 유일성, 최소성을 가지는 키를 만드는 경우 (ID)
- 외래키 : FK, 다른 테이블의 있는 기본키를 가져와 사용, 외래키는 해당 테이블에서는 중복 가능
- 후보키 : 유일성, 최소성을 만족하는 기본키가 될 후보들
- 슈퍼키 : 유일성만을 갖춘 키
- 대체키 : 유일성, 최소성을 만족하지만 기본키에 안뽑힌 키.
유일성 - 레코드간 구별을 가능하게 해주는 성질
최소성 - 레코드간 구별을 위해 여러가지 속성을 조합해서 키를 생성한다고 가정할때, 그 조합의 수가 가장 최소인 경우를 만족.
'CS Knowledge > DataBase' 카테고리의 다른 글
DataBase - Join (0) | 2023.04.27 |
---|---|
DataBase - Index (0) | 2023.04.26 |
DataBase - Type (1) | 2023.04.25 |
DataBase - Transaction and Integrity (0) | 2023.04.25 |
DataBase - ERD, 정규화 (0) | 2023.04.05 |