일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- VIM
- 프로그래머스
- Algorithm
- vscode
- 백준
- git
- Data Structure
- BFS
- 알고리즘
- DFS
- TypeScript
- network
- 다이나믹 프로그래밍
- db
- 자바
- LeetCode
- react
- Redux
- Graph
- java
- DP
- 안드로이드
- frontend
- CS
- 동적 계획법
- 리트코드
- 그레이들
- Database
- Javascript
- Today
- Total
늘 겸손하게
CS - Database - Database 본문
Database
일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음
데이터베이스는 실시간 접근과 동시 공유가 가능
DBMS (DataBase Management System)
데이터베이스를 제어, 관리하는 통합 시스템
데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있습니다.
Entity (엔티티)
사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미. 하나의 엔터티는 다른 엔터티와 구분된다.
강한 엔터티와 약한 엔터티
A가 혼자서 존재하지 못하고 B에 종속적이라면 A는 약한 엔터티이고 B는 강한 엔터티가 됩니다.
예로 방은 건물 안에만 존재하기 때문에 방은 약한 엔터티라고 할 수 있고 건물은 강한 엔터티라고 할 수 있습니다.
릴레이션 (Relation)
데이터베이스에서 정보를 구분하여 저장하는 기본 단위.
엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리.
릴레이션은 관계형 데이터베이스에서는 '테이블'이라고 부르며 NoSQL 데이터베이스에서는 '컬렉션'이라고 합니다.
MySQL의 구조는 레코드 - 테이블 - 데이터베이스로 이루어져 있고
MongoDB 구조는 도큐먼트 - 컬렉션 - 데이터베이스로 이루어져 있습니다.
즉, 레코드가 쌓여서 테이블이 되고 테이블이 쌓여서 데이터베이스가 되는 것.
[ 속성 (attribute) ]
'차'라는 엔터티의 속성은 바퀴 수, 차종, 차 색깔 등이 있을것.
속성은 릴레이션에서 관리하는 구제척이며 고유한 이름을 갖는 정보
[ 도메인 (domain) ]
릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합.
예로, '성별'이라는 속성의 도메인은 {'남', '여'} 두 가지 뿐입니다.
[ 필드와 레코드 ]
엔터티의 속성을 테이블에 기록했을 때 -> 필드
테이블에 쌓이는 각각의 Row가 -> 레코드
레코드를 튜플이라고 부르기도 함.
필드 타입
엔터티의 속성을 테이블에 기록한것이 필드. 이러한 필드도 타입이 존재.
숫자 타입
=> TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
날짜 타입
=> DATE, DATETIME, TIMESTAMP
DATE : 날짜 0, 시간 X, 3 바이트
DATETIME : 날짜 0, 시간 0, 8 바이트, 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP : 날짜 0, 시간 0, 4바이트, 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07
문자 타입
=> CHAR, VARCHAR, TEXT, BLOB, ENUM, SET
CHAR, VARCHAR
고정된 길이의 문자열은 CHAR, 가변 길이 문자열은 VARCHAR
CHAR 길이 : 0 ~ 255
VARCHAR 길이 : 0 ~ 65,535
TEXT, BLOB
TEXT : 큰 문자열 저장에 쓰며 주로 게시판의 본문을 저장할 때 사용
BLOB : 이미지, 동영상 등 큰 데이터 저장에 사용. 그러나 보통은 아마존의 이미지 호스팅 서비스인 S3를 이용하는 등 서버에 파일을 올리고 파일에 관한 경로를 VARCHAR로 저장
ENUM, SET
ENUM, SET 모두 문자열을 열거한 타입.
ENUM은 ('x-small', 'small', 'medium', 'large', 'x-large') 형태로 쓰이며 이 중에서 하나만 선택하는 단일 선택만 가능하며 ENUM 리스트에 없는 잘못된 값을 삽입하면 빈 문자열이 대신 삽입됩니다. ENUM을 이용하면 x-small 등이 0, 1 등으로 매핑되어 메모리를 적게 사용하는 이점을 얻습니다. ENUM은 최대 65,535개의 요소들을 넣을 수 있습니다.
SET 은 ENUM과 비슷하지만 여러 개의 데이터를 선택할 수 있고 비트 단위의 연산을 할 수 있으며 최대 64개의 요소를 집어넣을 수 있다는 점이 다릅니다.
ENUM이나 SET을 사용할 경우 공간적 이점을 볼 수 있지만 앱이 수정되면 그에 따라 DB의 ENUM, SET의 목록 또한 수정해야 한다는 단점이 있습니다.
관계 - Relation
데이터베이스의 테이블은 관계로 표현될 수 있음.
1 : 1 관계 : 말 그대로 1 대 1 관계
1 : N 관계 : 한 개체가 다른 많은 개체를 포함하는 경우 (유저와 장바구니)
N : M 관계 : 학생과 강의 관계와 같이 모든 개체가 다른 많은 개체 포함 가능
'Computer Science > Database' 카테고리의 다른 글
CS - Database - 트랜잭션과 무결성 (0) | 2023.05.06 |
---|---|
CS - Database - ERD (0) | 2023.05.06 |
CS - Database - Index(인덱스) (0) | 2022.10.10 |
CS - Database - Anomaly (0) | 2022.10.10 |
CS - Database - 정규화 (Normalization) (0) | 2022.10.10 |