데이터베이스

[데이터베이스] 데이터베이스의 기본

jooeun 2023. 3. 7. 15:59

DB(DataBase)

일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음

DBMS(DataBase Management System)

데이터베이스를 제어, 관리하는 통합 시스템

데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 가능

데이터베이스는 실시간 접근과 동시 공유가 가능


엔터티 Entity

사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사

ex) 회원 엔터티 → 이름, 아이디, 주소, 전화번호 등의 속성을 가질 수 있다

서비스의 요구 사항에 맞춰 속성이 정해짐

  • 강한 엔터티 vs 약한 엔터티ex) 건물 : 강한 엔터티, 방 : 약한 엔터티
  • A가 혼자서는 존재하지 못하고 B의 존재 여부에 따라 종속적이라면 A는 약한 엔터티, B는 강한 엔터티

릴레이션 Relation

데이터베이스에서 정보를 구분하여 저장하는 기본 단위

엔터티에 관한 데이터 ⇒ 릴레이션 하나에 담아서 관리

관계형 데이터베이스에서 릴레이션 = 테이블 (레코드가 쌓여서 테이블, 테이블이 쌓여서 데이터베이스)

NoSQL 데이터베이스에서 릴레이션 = 컬렉션 (도큐먼트가 쌓여서 컬렉션,컬렉션이 쌓여서 데이터베이스)

속성 Attribute

속성은 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보

ex) 차 : 차 넘버, 바퀴 수, 차 색깔, 차 종 ⇒ 이 중 서비스 요구사항에 필요한 속성들만 모아 엔티티 속성에 반영

도메인 Domain

릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합

ex) 성별 : {남, 여}

필드와 레코드

필드와 레코드로 구성된 테이블을 만들 수 있다

회원이란 엔터티 ⇒ member 테이블

회원의 속성(이름, 아이디, 주소) ⇒ name, Id, address 등의 필드

테이블에 행 단위로 쌓이는 데이터 ⇒ 레코드 or 튜플

모든 필드는 타입을 갖는다

  • 숫자 타입 : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

  • 날짜 타입

    DATE(1000-01-01~9999-12-31, 3byte)

    DATETIME(1000-01-01 00:00:00~9999-12-31 23:59:59, 8byte)

    TIMESTAMP(1970-01-01 00:00:01~2038-01-19 03:14:07, 4byte)

  • 문자 타입

    CHAR : 고정 길이 문자열 (0~255) ⇒ char(100) 선언 후 10글자 저장해도 100byte저장

    VARCHAR : 가변 길이 문자열 (0~65,535) ⇒ varchar(10000)선언해도 실제 저장되는 글자만큼 저장

    TEXT : 큰 문자열 저장, 주로 게시판의 본문 저장

    BLOB : 이미지, 동영상 등 큰 데이터 저장, 하지만 보통은 아마존 이미지 호스팅 서버인 S3 등 서버에 파일 올리고, 파일에 관한 경로를 VARCHAR로 저장

    ENUM : 문자열을 열거한 타입. ENUM(’x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’) 형태로 쓰이며, 이 중 하나만 선택하는 단일 선택만 가능, ENUM 리스트에 없는 값 삽입시 빈문자열 삽입. x-small 등이 0,1 등으로 매핑되어 메모리 적게 사용하는 이점, 최대 65535개 요소 삽입 가능

    SET : ENUM과 비슷하지만, 여러 개의 데이터를 선택할 수 있고 비트단위 연산 할 수 있으며 최대 64개 요소 삽입 가능

관계

데이터베이스에는 여러 개의 테이블이 있고 이러한 테이블은 서로의 관계가 정의되어 있다

1:1 관계 : 유저 - 유저 이메일

1:N 관계 : 유저 - 장바구니에 담을 수 있는 상품

N:M 관계 : 학생 - 강의 (학생도 강의를 많이 들을 수 있고, 강의도 여러 명의 학생을 포함)

주로 1:N, 1:M이라는 관계를 갖는 두 개의 테이블로 나눠서 설정

테이블 간의 관계를 조금 더 명확하게 하고, 테이블 자체의 인덱스를 위해 설정된 장치

기본기+대체키 = 후보키(최소성 만족 = 최소 필드만 사용)

후보키를 포함하는 슈퍼키(유일성 만족 = 중복되는 값 없다)

기본키

PK, 유일성과 최소성을 만족하는 키

  • 자연키 : 중복된 값들을 제외하며 중복되지 않는 것을 ‘자연스레’ 뽑다가 나오는 키
  • ex) 이름, 성별, 주민등록번호 ⇒ 주민등록번호
  • 인조키 : 인위적으로 생성한 키
  • ex) 이름, 성별, 주민등록번호 외에 sequence, auto increment 등으로 생성한 키

외래키

FK, 다른 테이블의 기본키를 그대로 참조하는 값. 개체와의 관계를 식별하는데 사용

후보키

기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족하는 키

슈퍼키

각 레코드를 식별할 수 있는 유일성을 갖춘 키(최소성은 만족하지 않을 수 있음)

대체키

후보키에서 기본키의 여집합

후보키가 두개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키