DB

★ 데이터베이스의 특징

데이터베이스는 공통적으로 사용하기에 직접적으로 쓸 수 없는 특징이 있다.

직접적으로 사용하는 경우는 관리하는 목적으로 사용

간접적으로는 일반 사용자가 애플리케이션(웹, 앱 등)을 통해 데이터베이스의 기능을 이용

 

★ 데이터 모델

  • 계층형 : 데이터가 트리 구조, 부모-자식 관계를 지님
  • 네트워크형 : 계층형 모델의 한계를 극복,그래프 구조를 사용
  • 객체지향형 : 객체 지향 프로그래밍(OOP) 개념을 데이터베이스에 적용
  • 관계형 : 가장 많이 쓰고 있는 모델, 테이블(표) 형태로 저장하고 관리

데이터 참조

  1. 부모 테이블의 기본 키: 부모 테이블은 각 행을 고유하게 식별할 수 있는 기본 키(Primary Key)를 가지고 있다.
  2. 자식 테이블의 외래 키: 자식 테이블은 부모 테이블의 기본 키 값을 저장하는 외래 키(Foreign Key) 컬럼을 가지고 있다.
  3. 참조: 자식 테이블의 외래 키는 부모 테이블의 특정 행을 가리키면서, 해당 행의 데이터를 참조하게 돼.

★ 정규화 +

정규화란? (링크 참고)

https://ysh0129.tistory.com/99

 

멋사 부트캠프 프론트엔드 플러스 5기 - Next.js & DB (7일차)

Next.js ★ “use client” => 브라우저(클라이언트)에서 실행, 해당 코드를 미 적용 시 노드에서 실행(서버)에서 실행 노드에서 사용하는 이유 > 서버사이드 랜더링을 하기 위해서 > 구글에서 웹이 노

ysh0129.tistory.com

 

제 1 정규화(원자값= 한개의 값)

 

유형과 장단점

구문자 : 한 컬럼 안에 여러 값을 콤마(,) 같은 구분자로 이어서 저장

장점 : 테이블 수, 칼럼이 늘어나지 않음, join연산자 불 필요

단점 : 조작 어려움, 유지보수 어려움

 

컬럼수 늘리기 : 컬럼을 여러 개 만드는 방식

장점 : 테이블 수 변화 없음, Join연산자 불 필요

단점 : 컬럼 수가 늘어나서 용량이 늘고 속도가 느려진다.

 

자식테이블 : 새로운 테이블(하위 자식 테이블)로 분리하고, 부모 테이블과 외래 키로 연결하는 방식

장점 : 확장성, 효율적 검색, 조작

단점 : 테이블 수가 늘어날수록 Join연산자 남발

 

제 2 정규화(부분적 함수 종속을 제거)

(함수 종속 = 키로 식별되는 속성)

 

Key : 중복 없는 고유의 행, 종속된 관계를 찾는 수단

 

식별관계 : 부모 테이블의 기본키(Primary Key, PK)가 자식 테이블의 기본키 일부로 포함되는 관계

 

Key의 종류

기본키 : 후보키 중에서 선택된 대표 키. 유일성, 최소성, 그리고 NULL 값을 허용하지 않는다는 특징을 지님

후보키 : 유일하게 식별할 수 있는 최소한의 속성 집합

대체키 : 주키 대신 서브로 사용되는 키

대리키 : 테이블에는 없었다가 추가되는 식별자 키 (비식별관계)

슈퍼키 : 유일하게 식별할 수 있는 하나 이상의 속성(컬럼)들의 집합

(회원번호 경우 랜덤값으로 지정)

외래키 : 특정 컬럼(들)이 다른 테이블의 기본 키(Primary Key)를 참조하는 키

 

제 3 정규화(이행적 함수 종속을 제거)

(이행적 함수 종속 = 전이적 관계, 두번 거쳐서 참조되는 속성)

 

비식별관계 : 부모 테이블의 기본키가 자식 테이블의 기본키를 구성하는 데 참여하지 않는다

 

BCNF 정규화

제 3 정규화 이후 진행, 모든 결정자[속성(컬럼)의 값이 다른 속성의 값을 유일하게 결정]가 후보키가 되도록 테이블 분해

[결정자: 속성(컬럼)의 값이 다른 속성의 값을 유일하게 결정 ]

 

ex) 학생과 이메일이 있을 때,

이메일을 바꾸기 위해서 학생을 찾아야한다 여기서 학생은 결정자에 해당한다.

 

제 4 정규화

다치 종속 제거

다치 종속 : 한 속성이 복수의 값을 가질 때, 다른 속성과 곱 형태로 속성이 증식 현상

 

제 5 정규화

조인 종속성 제거를 목표

테이블을 더 이상 무손실 분해할 수 없을 때 만족

 

 

DB입력은 Supabase에서 ERD는 draw.io에서
draw.io에서 ERD 설계시 한글로 먼저 테이블을 만들어보고 복제해서 영문으로 수정해준다.

데이터의 타입은 AI로 뽑아내고

Supabase에서 new table에 각 해당하는  속성 값과 타입을 입력한다. 

 

 

회고 : 정규화에 대해서는 자격증 공부로 접해본 내용이였지만,

여전히 많이 헷갈리는 내용이였다.

프로젝트 진행하면서 많이 부딪히고 경험 쌓는 생각으로 하자 

+ Recent posts