프로젝트로 배우는 데이터베이스

.·2022년 2월 7일

시작하기 전에

DDL

DDL은 데이터베이스를 정의하는 언어로 데이터베이스 생성, 수정, 삭제를 할 때 사용하는 언어

  • CREATE
CREATE DATABASE 'EliceRabbit';
USE EliceRabbit; // 위에서 만든 데이터베이스를 사용하기 위해선 USE문을 활용
CREATE TABLE 'tb_Rabbit'{
	'속성명' 타입,
    '속성명2' 타입,
    ...
}
SHOW DATABASE; // 데이터베이스 목록 조회
SHOW TABLES; // 테이블 목록 조회

ALTER

  • 컬럼 추가
    ALTER TABLE '추가하고자 하는 테이블 명' ADD COLUMN '추가하고자 하는 컬럼 명' '속성 값';
  • 컬럼 삭제
    ALTER TABLE '삭제하고자 하는 테이블 명' DROP COLUMN '삭제하고자 하는 컬럼 명';
  • 컬럼 변경

    ALTER TABLE '변경하고자 하는 컬럼이 있는 테이블 명' MODIFY COLUMN `변경하고자 하는 컬럼 명` 변경하고자 하는 속성 값;
  • 컬럼 명도 함께 변경

    ALTER TABLE `변경하고자 하는 컬럼이 있는 테이블 명` CHANGE COLUMN `변경하고자 하는 컬럼 명` `새로운 컬럼 명` 변경하고자 하는 속성 값;
  • 테이블 이름 변경

    ALTER TABLE `변경하려는 하는 테이블 명` RENAME `새로운 테이블 명`;

DROP

데이터베이스, 테이블을 삭제하는 쿼리문

  • 데이터 베이스 삭제
    DROP DATABASE `테이블 명`
  • 테이블 삭제
    DROP TABLE `테이블 명`

데이터베이스 준비하기

데이터베이스란?

데이터베이스란?

  • 관계형 데이터베이스(RDB)

    각 테이블 간 관계 O
    스키마 O
    구조적으로 안정적이나 유연하지 못함

  • 비관계형 ㅔㄷ이터베이스(NoSQL)

    각 테이블 간 관계 X
    스키마 X
    유연성을 가지고 있으나 구조 결정이 어려움


데이터모델링이란?

데이터모델링이란?

효율적으로 데이터베이스를 구축하기 위해 데이터베이스의 뼈대를 세우는 작업

  • 요구 사항 정리 : 데이터가 어떠한 형태, 어떤 목적을 가지고 있는지 정리
  • 개념적 데이터 모델 설계 : 핵심 개체를 찾고, 각 개체 간의 관계를 정리
  • 논리적 데이터 모델 설계 : 실제 데이터베이스로 구현하기 위한 모델링
  • 물리적 데이터 모델 설계 : 데이터가 어떻게 컴퓨터에 저장될 지 설계

데이터베이스 네이밍 규칙

테이블 네이밍 규칙

  • 테이블 명을 작성할 때는 파스칼 표기법을 사용한다.

    kickboard_rental(X) -> KickboardRental(O)

  • 테이블, 뷰(View)임을 한 눈에 확인 할 수 있도록 테이블 명 앞에는 'tb', 'v'를 붙인다.


속성 네이밍 규칙

  • 스네이크 표기법을 활용

    customerID(x) -> customer_id(O)
    CustomerTel(X) -> customer_tel(O)

  • 유일키, 외래키 등은 한 눈에 알아 볼 수 있도록 속성 명 앞에 'pk', 'fk'를 붙인다.


유일키란?

키(Key)

  • 데이터베이스에서 튜플(레코드, 행) 간 구분을 위한 값(속성)

유일키(Primary Key)

  • 테이블에서 튜플(레코드, 행)을 구분지어주는 고유 식별 값(속성)
  • 유일키 값은 중복 될 수 없으며, NULL 값 또한 불가능

유일키 선언하기

(')이 아닌 (`)임


복합키(Compsite Key)란?

이런 문제를 해결하기 위해 필요한 것이 복합키

  • 두 개 이상의 속성을 활용하여 튜플(레코드, 행)을 구분지어주는 방법

복합키 선언하기


외래키란?

외래키를 활용해 이러한 문제를 해결할 수 있음

  • 다른 테이블의 키와 연결을 해주는 키이며, 참조의 무결성을 유지하기 위해 활용
  • 참조 무결성: 외래키 값이 참조 중인 테이블의 값과 일관성을 가지는 것을 의미

외래키 선언하기


정규화(Nomarlization)

1차 정규화

정규화란?

  • 테이블 간 데이터 조작(삽입, 수정, 삭제) 시 발생 할 수 있는 이상 현상을 줄이기 위해 하는 작업
  • 다양한 정규화가 있지만 1~3차 정규화까지 진행하면 대부분의 이상현상을 없앨 수 있음

1차 정규화

  • 각 속성 마다 값이 1개씩 존재하도록 하는 과정(원자화)


2차 정규화

  • 복합키로 구성 되어있을 때 고려해야하며 모든 속성이 완전 함수 종속이 되도록 하는 작업
  • 완전 함수 종속 : A, B, C, D가 있을 때 B가 A에 의해 종속되는 경우
    B는 다른 내용(C,D)에 의해 종속이 되지 않는 경우


3차 정규화

  • 테이블 내에서 이행적 요소를 제거하는 작업


뷰(VIEW)

VIEW란?

  • 하나 이상의 테이블에서 여러 정보를 토대로 만들어지는 가상의 테이블
  • 보안성과 속도를 높일 수 있음

뷰(VIEW) 생성 방법

CREATE VIEW '테이블 명' AS
SELECT 가져오고자 할 속셩 명, 속성 명2...
FROM 가져오고자 할 속성이 있는 테이블
(WHERE 등 사용 가능)

여러 테이블에서 뷰(VIEW) 활용

  • 여러 테이블에서 필요한 정보들만 뽑아 뷰를 생성

여러 테이블에서 뷰 생성 방법

CREATE VIEW '테이블 명' AS
SELECT 가져오고자 할 속셩 명, 속성 명2 ...
FROM 가져오고자 할 속성이 있는 테이블, 테이블2 ...
(WHERE 등 사용 가능)

뷰(VIEW) 삭제

  • 뷰를 삭제하더라도 원본 테이블에는 영향 X
    DROP VIEW 삭제하고자하는 VIEW


이미지 출처 - Elice

0개의 댓글