[CS] 데이터베이스

현톨·2023년 2월 19일
0

CS

목록 보기
4/6
post-thumbnail

데이터베이스란?

일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음이며, 이것을 제어 및 관리하는 통합 시스템을 DBMS(Database Management System)라고 한다.

위 이미지와 같이 응용 프로그램에서 DBMS에 요청을 보내 DB 안의 데이터를 처리할 수 있다.

엔터티

엔터티는 사람, 장소, 물건, 사건, 개념 등 여러 속성을 지닌 명사를 의미한다.
ex) 회원이라는 엔터티에는 이름, 아이디, 주소 등의 속성을 가짐

혼자서는 존재하지 못하고 다른 엔터티의 존재 여부에 따라 종속정이라면 약한 엔터티, 반대의 경우 강한 엔터티라고 한다.
ex) 방은 건물 안에만 존재하기에 약한 엔터티, 건물은 강한 엔터티이다.

릴레이션

데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.
데이터베이스는 엔터티에 관한 데이터를 릴레이션 하나에 담아 관리한다.

위 이미지는 회원이라는 엔터티가 데이터베이스로 관리될 때 릴레이션으로 변화된 형태이다.

릴레이션은 RDBMS에선 테이블, NoSQL에선 컬렉션이라고 부른다.
ex) MySQL의 구조는 레코드-테이블-데이터베이스로 이루어져있고,
MongoDB에서는 도큐먼트-컬렉션-데이터베이스로 이루어져있다.

속성

속성(attribute)은 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보이다. 엔터티에서 요구사항을 기반으로 관리할 필요가 있는 요소들만 엔터티의 속성이 된다.

도메인

도메인(domain)이란 릴레이션에 포함된 각가그이 속성들이 가질 수 있는 값의 집합을 말한다.
ex) 성별이라는 속성이 가질 수 있는 값의 집합은 {남,여}이다.

필드와 레코드

위의 첨부된 이미지와 같이 테이블의 쌓이는 행의 단위를 레코드라고 하며 튜플이라고도 부른다.

필드 타입

필드의 타입에는 숫자, 날짜, 문자 등이 있다.

숫자타입: TINIYINT, SMALLINT, MEDIUMINT, INT, BIGINT

날짜타입:

문자타입:
ㅇㄴ 중간에 날라갔다.
... 따라서 고정된 길이를 가진 데이터의 경우 char, 유동적인 길이를 가진 데이터는 varchar로 저장하는 것이 효율적이다.

TEXT와 BLOB은 큰 데이터를 저장할 때 쓰는 타입이다.

  • TEXT는 큰 문자열 저장에 쓰이며 주로 게시판의 본문을 저장할 때 쓴다.
  • BLOB은 이미지, 동영상 등 큰 데이터에 쓴다. 그러나 보통은 서버에 파일을 올리고, 파일에 관한 경로를 VARCHAR로 저장한다.

ENUM과 SET은 문자열을 열거한 타입이다.

  • ENUM은 (x-small, small, medium, large, x-large) 형태로 쓰이며,

ㄴㅁㅇㅁㄴㅇㄴㅁㅇ

관계

1:1 관계

유저와 ID 의 관계

1:N 관계

유저와 유저가 장바구니에 담은 상품들의 관계

N:M 관계

학생과 강의의 관계 (한명의 학생은 여러개의 강의를 들을 수 있고, 한개의 강의는 여러명의 학생이 수강할 수 있다)

N:M은 테이블 두개를 직접적으로 연결해서 구축하지는 않고, 1:N, 1:M이라는 관계를 갖는 테이블 두개로 나눠 설정한다.

테이블 간의 관계를 조금 더 명확하게 하고, 테이블 자체의 인덱스를 위해 설정된 장치로, 기본키, 후보키, 외래키, 대체키가 있다.

  • 기본키: 프라이머리 키(Primary Key), 줄여서 PK라고도 부르며, 유일성과 최소성을 만족하는 키이다. 이는 고유하게 존재하는 속성이며, 기본키에 해당하는 데이터는 중복되어선 안된다.
    - 자연키 : 여러 속성에서 중복되지 않는 것을 자연스레 뽑아낸 것으로 언젠가는 변하는 속성을 가짐
    - 인조키 : 여러 속성을 관리할 때, 인위적으로 고유식별자를 부여한다(유저ID등) 이렇게 인위적으로 생성한 키를 인조키라고 하며 자연키와는 달리 변하지 않는다. 보통 기본키는 인조키로 설정한다.

  • 외래키: 외래키(Foreign Key)는 FK라고도 하며, 다른 테이블의 기본키를 그대로 참조하는 값으로, 개체와의 관계를 식별하는 데 사용한다.
    외래키는 중복되어도 괜찮음

  • 후보키: 후보키(candidate key)는 기본키가 될 수 있는 후보들이며, 유일성과 최소성를 동시에 만족하는 키이다.

  • 대체키: 대체키(alternate key)는 후보키가 두 개 이상일 경우, 어느 하나를 기본키로 지정하고 남은 후보키, 즉 기본키가 되지 못한 후보키이다.

  • 슈퍼키: 슈퍼키(super key)는 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키이다.

profile
기록하는 습관 들이기

0개의 댓글