배꼽파지 않도록 잘 개발해요

[엘리스sw] 프로젝트로 배우는 데이터베이스 본문

교육/엘리스 SW 학습 내용

[엘리스sw] 프로젝트로 배우는 데이터베이스

꼽파 2024. 5. 3. 14:51


◆ 데이터베이스 준비하기
◆ 정규화(Normalization)
◆ 뷰(View)


데이터베이스 준비하기

데이터베이스

관계형 데이터베이스 (RDB) 비관계형 데이터베이스 (NoSQL)
MySQL, MariaDB, postgreSQL JSON
각 테이블 간 관계 O 각 테이블 간 관계 X
스키마 O 스키마 X
구조적으로 안정적이나 유연하지 못함 유연성을 가지고 있으나 구조 결정이 어려움

상황과 조건에 맞춰 적절한 데이터베이스를 선택하는 것이 중요함.

 

데이터모델링

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

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

 

데이터베이스 네이밍 규칙

유지보수와 의미의 명확성을 전달하기 위해 네이밍 규칙을 설정

 

공통 규칙

줄임말 사용을 최소화한다. (단, 사용할 경우 범용적으로 사용되는 줄임말을 사용한다.)

  • kb_image (X) → kickboard_image (O)
  • tb_KickboardInfo (△) (Info: Information의 줄임말)

 

테이블 네이밍 규칙

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

  • kickboard_rental (X) → kickboardRental (O)
  • customer_info (X) → CustomerInfo (O)

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

  • tb_KickboardRental (킥보드 대여와 관련된 테이블)
  • v_KickboardInfoForAnalysis (데이터 분석을 위해 필요한 정보만 모아 둔 가상 테이블)

 

속성 네이밍 규칙

1. 속성 명을 작성할 때는 스네이크 표기법을 활용한다.

  • customerID (X) → customer_id (O)
  • CustomerTel (X) → customer_tel (O)

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

(단, 중복으로 설정되어 있는 경우 외래키 > 유일키 순으로 작성한다.)

  • pk_kickboard_id
  • fk_pk_customer_id

 

데이터 타입

  • varchar : 문자형 타입, 괄호 안 의미는 해당 문자열의 크기(byte) 
    - 영문자 기준 1글자 당 1byte를 사용함.
    - 한글은 한 글자 당 2byte가 필요함.
  • int : 정수형 타입, varchar과 달리 괄호로 크기를 작성해주지 않음.

 

유일키(Primary Key)

  • 데이터베이스에서 튜플(레코드, 행) 간 구분을 위한 값(속성)
  • 유일키, 복합키, 외래키 등 다양한 종류가 존재함.
  • 테이블에서 튜플(레코드, 행)을 구분지어주는 고유 식별 값(속성)
  • 유일키 값은 중복될 수 없으며, NULL 값 또한 불가능함.

 

복합키(Composite Key)

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

 

외래키(Foreign Key)

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


정규화(Normalization)

정규화

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

1차 정규화(1NF)

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

 

2차 정규화(2NF)

  • 복합키로 구성 되어있을 때 고려해야하며 모든 속성이 완전 함수 종속이 되도록 하는 작업

완전 함수 종속

  • A, B, C, D가 있을 때 B가 A에 의해 종속되는 경우
  • B는 다른 내용(C, D)에 의해 종속이 되지 않는 경우

 

 

3차 정규화(3NF)

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


뷰(View)

  • 하나 이상의 테이블에서 여러 정보를 토대로 만들어지는 가상의 테이블
  • 필요한 정보만 추출하여 하나의 뷰를 만들 수 있음.

 

View는 실제 존재하지 않는 가상의 테이블

해당 테이블을 삭제하더라도 원본 테이블에는 영향이 없음.

728x90