1️⃣ 데이터베이스의 기본

·2023년 2월 15일
0

CS_STUDY

목록 보기
1/6
post-thumbnail
💡 해당 게시글은 책 [면접을 위한 CS 전공지식 노트] 기반으로 작성하였습니다.

00. 데이터베이스란?

데이터베이스: 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되어 있는 데이터의 모음.

  • 데이터베이스 안의 테이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행
  • 실시간 접근과 동시 공유가 가능

DBMS(DataBase Management System): 해당 데이터베이스를 제어, 관리하는 통합 시스템

01. 엔티티

엔티티: 사람, 장소, 물건, 사건, 개념 등 “여러 개의 속성을 지닌 명사”

  • 예) 회원(엔티티) ← 이름, 아이디, 주소, 전화번호 (속성)

약한 엔티티와 강한 엔티티

약한 엔티티: 혼자 존재하지 못하고, 강한 엔티티의 존재 여부에 따라 종속적

  • 예) 방 = 약한 엔티티, 건물 = 강한 엔티티

02. 릴레이션

릴레이션: 데이터베이스에서 정보를 구분해 저장하는 기본 단위

→ 엔티티에 관한 데이터를 릴레이션 하나에 담아 저장함.

  • 관계형 데이터베이스: 릴레이션 == 테이블, 레코드 - 테이블 - 데이터베이스
  • NoSQL 데이터베이스: 릴레이션 == 컬렉션, 도큐먼트 - 컬렉션 - 데이터베이스

03. 속성

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

  • 예) 차 → 고유넘버, 바퀴수, 차색깔, 차종…

04. 도메인

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

  • 예) 성별(속성) → 여/남

05. 필드와 레코드

nameidphone_number
이진jinjin01000000000
최소은coso01022222222
박은수eunddu01011111111
  • 회원이란 엔티티는 member라는 테이블로 속성인 이름, 아이디, 등을 가지고 있음
  • name, ID, address 등의 필드를 가짐.

레코드: 테이블에 쌓이는 행 단위의 데이터, 튜플이라고도 함.

필드 타입

01. 숫자 타입

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

02. 날짜 타입

DATE(3), DATETIME(8), TIMESTAMP(4)

03. 문자 타입

CHAR, VARCHAR, TEXT, BLOB, ENUM, SET

  • CHAR: 테이블을 생성할 때 선언한 길이로 고정되어 저장됨.
  • VARCHAR: 가변 길이 문자열. 10글자의 이메일이면 10글자 바이트 + 길이기록용 1바이트로 저장. → VARCHAR(1000)으로 선언해도 마찬가지.
  • TEXT: 큰 문자열 저장. 게시판의 본문을 저장할 때 사용
  • BLOB: 이미지, 동영상 등 큰 데이터 저장에 씀. BUT 보통은 아마존 이미지 호스팅 서비스 = S3를 사용
  • ENUM: 문자열을 열거한 타입. 메모리를 적게 사용하는 이점. 약 6만 5천개의 요소 넣을 수 있음.
  • SET: ENUM과 비슷, 여러 개의 데이터를 선택 가능, 비트 단위의 연산 가능, 최대 64개의 요소

06. 관계

테이블은 서로의 관계가 정의되어 있고, 이를 관계화살표로 나타낸다.

01. 1:1 관계

유저당 장바구니는 1개씩. 장바구니도 1개의 유저만 담는다.

→ 테이블이 2개!

02. 1:N 관계

장바구니당 여러 개의 상품을 담을 수 있다.

하나도 넣지 않는 0개의 경우도 있으니 0도 포함되는 화살표를 통해 표현해야 한다.

03. N:M 관계

학생과 강의의 관계.

강의는 여러 명의 학생이 참여하기도 하고, 학생은 여러 개의 강의를 수강할 수 있다.

학생_강의 라는 테이블을 만들어서 각각 1:N, 1:M이라는 관계를 갖는 테이블 두개로 나누어서 설정.

07. 키

테이블 자체의 인덱스를 위해 설정된 장치 → 기본키, 외래키, 후보키, 슈퍼키, 대체키가 있음

  • 유일성: 중복되는 값이 없음.
  • 최소성: 필드를 조합하지 않고 최소 필드만 써서 키를 형성할 수 있는 것.

01. 기본키 PRIMARY KEY ⭐

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

자연키와 인조키 중 택(보통 인조키 택)

  • 자연키: 중복된 값들을 제외하며 중복되지 않는 것을 자연스레 뽑다가 나오는 키. 가변성
    • 예) 주민등록번호
  • 인조키: 인위적으로 생성한 키. 변하지 않음.
    • 예) 인위적으로 부여한 고유 식별자(auto increment, sequence 등으로 설정)

02. 외래키 ⭐

다른 테이블의 기본키를 그대로 참조하는 값으로 엔티티들간의 관계를 식별하는 데 사용

중복 가능.

03. 후보키

기본키가 될 수 있는 후보들

유일성, 최소성을 동시에 만족하는 키

04. 대체키

후보키가 두 개 이상인 경우 → 어느 한개를 기본키로 지정하고 “남은 후보키”들

05. 슈퍼키

각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키

profile
이것저것 개발하는 것 좋아하지만 서버 개발이 제일 좋더라구요..

0개의 댓글