[F-Lab 66해빗 페이백 챌린지 ]

[F-Lab 페이백 모각코 53일차] (SQL) 데이터 모델과 SQL

everydeveloper 2023. 9. 9. 23:30

정규화

  • 제 1정규형
    • 제 1정규형은 관계형 데이터베이스에서 중복을 제거하기 위한 정규화 과정 중 첫 번째로, 모든 필드가 원자값(Atomic Value)을 가지도록 분리하는 것을 의미합니다.
  • 제 2정규형
    • 제 2정규형은 데이터베이스에서 관계형 모델이 제 2정규형을 만족하는 상태를 말합니다. 이는 모든 비주요 속성이 주요 속성에 완전 함수적 종속 관계를 가져야 한다는 것을 의미합니다.
  • 제 3정규형
    • 제 3정규형은 데이터베이스에서 중복을 제거하고 모든 테이블이 기본 키를 가져야하는 정규화 과정 중 하나입니다.
  • 주의사항
    • 회원의 배송상태를 조회하려면 여러 번의 JOIN을 해야합니다.
    • 회원 엔터티와 배송 엔터티 간의 관계를 생성하여 성능 개선해야합니다.
    • 정규화를 지나치게 수행하면 성능 저하가 발생할 수 있습니다. 적절한 정규화 단계를 선택해야합니다.

반정규화

  • 테이블 반정규화
    • 테이블 병합
      • 테이블 병합은 관련된 둘 이상의 테이블을 하나의 테이블로 합치는 데이터베이스 작업입니다.
    • 1:1 관계 테이블 병합
      • 1:1 관계 테이블 병합은 데이터베이스에서 두 개의 테이블 간의 관계를 설정할 때 사용하는 기술 중 하나입니다. 이 기술은 두 테이블의 공통 열을 사용하여 새로운 테이블을 만들고, 이를 기존 테이블 대신 사용하는 방법으로 구현됩니다.
    • 1:M 관계 테이블 병합
      • 1:M 관계 테이블 병합은 한 쪽 테이블의 레코드가 다른 쪽 테이블의 하나 이상의 레코드와 연관되는 경우, 두 테이블을 하나로 병합하는 데이터베이스 디자인 기술입니다.
  • 테이블 분할
    • 테이블 수직 분할
      • 테이블 수직 분할이란 데이터베이스에서 한 개의 테이블을 논리적으로 나누어 두 개 이상의 테이블로 분할하는 것을 말합니다.
    • 테이블 수평 분할
      • 테이블 수평 분할은 표의 열을 여러 개의 열로 분할하는 것을 말합니다. 이를 통해 표의 가독성을 높일 수 있습니다.
    • 테이블 추가
    • 이력 테이블 추가
    • 부분 테이블 추가
  • 컬럼 반정규화
    • 중복 컬럼 추가
      • 중복 컬럼 추가는 데이터베이스에서 기존에 존재하는 컬럼과 동일한 내용을 가진 새로운 컬럼을 추가하는 것을 의미합니다.
    • 파생 컬럼 추가
      • 파생 컬럼 추가는 기존의 데이터에 새로운 컬럼을 추가하여 파생 변수를 만드는 것을 말합니다.
    • 이력 테이블 컬럼 추가
      • 이력 테이블 컬럼 추가란 데이터베이스에서 특정 테이블에 새로운 컬럼을 추가하는 작업을 의미합니다.
  • 관계 반정규화(중복관계 추가)
    • 관계 반정규화는 데이터베이스에서 중복 관계를 추가하여 성능을 향상시키는 방법입니다.

트랜잭션 (Transaction)

  • 트랜잭션은 데이터베이스에서 상태를 변화시키기 위해 수행하는 작업 단위를 의미합니다. 이 작업 단위는 데이터베이스에서 실행하는 일련의 연산들을 하나의 논리적인 작업으로 묶은 것을 말합니다. 예를 들어, 고객의 주문을 처리하는 작업에서는 상품 정보를 조회하고, 재고를 감소시키고, 주문 내역을 등록하는 등의 다양한 작업이 수행됩니다. 이러한 작업들은 모두 하나의 트랜잭션으로 묶여서, 모두 성공하거나 모두 실패할 때만 처리가 완료됩니다.
  • 트랜잭션은 ACID라는 특성을 가지고 있습니다. 이는 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 약자로, 각각 트랜잭션이 하나의 논리적인 작업 단위로 실행되며 성공 또는 실패에 따라 모든 작업이 취소되거나 모두 완료된 상태로 유지되는 것을 보장하며, 병행성 제어와 같은 기능을 통해 여러 사용자가 동시에 데이터를 변경해도 데이터의 일관성이 유지되고, 트랜잭션이 완료된 이후에도 그 결과가 지속적으로 유지되는 것을 보장합니다.
  • 따라서, 데이터베이스에서 중요한 역할을 수행하는 트랜잭션은 데이터의 무결성과 일관성을 유지하고, 데이터베이스의 안정성과 신뢰성을 보장하는 데 매우 중요한 역할을 합니다.

NULL

  • Null이란?
    • Null은 아무 값도 가지지 않은 상태를 의미합니다. 프로그래밍에서는 변수가 아직 값을 할당받지 않았을 때 Null 값을 가질 수 있습니다.
  • SELECT 수입 - 지출 FROM 테이블
  • SELECT SUM(수입) FROM 테이블