데이터 모델

이영주·2022년 2월 6일
0

데이터 모델

데이터 모델이란, 다양한 데이터 요소들을 이해하고 사용하기 편한 형태로 정리해놓은 모형을 의미한다.

우리가 데이터를 저장하려고 하는 대상: Entity(개체)
Entity에 대해서 저장하려고 하는 특징: Attribute(속성)
Entity들 사이 생기는 연결점: Relationship(관계)
여러 데이터 요소들에 있는 규칙: Constraint(제약 조건)

좋은 데이터베이스란?

좋은 데이터베이스란 중복되거나 비어있는 데이터는 없고 사용자가 최대한 빠르게 데이터를 다룰 수 있게 해주어 성능이 좋은 데이터베이스를 말한다.
데이터베이스가 이곳저곳에 중복되어 저장되거나 null이 많아서 용량을 차지한다거나 특정 연산들을 실행하는데 너무 오래걸리거나 원하는 데이터를 찾기 어렵다면 나쁜 데이터베이스이다. 데이터베이스 모델링을 어떻게 했느냐에 따라 달라질 수 있다.

모델링의 시작

데이터 모델링의 시작은 특정 조직이 운영되기 위해 따라야 하는 정책, 절차, 원칙인 비즈니스 룰에 따라 저장하고 싶은 Entity, Attribute, Relationship 을 파악하는것이다.

Entity, Relationship, Attribute 찾는법

모든 명사 Entity 후보이다.
모든 동사는 Relationship 후보이다.
하나의 "값"으로 표현할 수 있는 명사는 attribute의 후보이다.

이상현상이란?

주어진 데이터베이스에서 삽입, 업데이트, 삭제를 제대로 할 수 없는 경우를 의미한다.

새로운 데이터를 자연스럽게 추가할 수 없는 경우

데이터를 업데이트 했을 때 정확성을 지키기 어려워지는 경우

데이터를 삭제할 때 꼭 필요한 데이터까지 연쇄 삭제 해야하는 경우

-> 데이터 모델링을 제대로 하지 않았기 때문에 발생한다!

  1. 테이블이 잘 모델링 되었는지 판단하는 방법
  2. 잘못 만들었다면 어떻게 고쳐야 할까?

정규화

테이블이 잘 만들어졌는지 평가하고, 잘 만들지 못한 것을 고쳐나가는 과정
테이블 안에 있는 컬럼이 해당 테이블에 있는게 맞는지 판단해서 옮겨 이상현상을 없앨 수 있다.
새로운 종류의 데이터를 추가할 때 구조 수정을 많이 하지 않아도 된다.
데이터베이스 구조를 단순화해서 사용자가 더욱 쉽게 이해할 수 있다.
데이터베이스는 고치기 어렵기 때문에 반영하기 전에 고치는것이 좋다.

정규형
1NF, 2NF, 3NF

그외 등등
EKNF
BCNF
4NF
ETNF
5NF
DKNF
6NF

제1정규형 1NF

한 컬럼에 여러개의 값이 있으면 안된다.
모든 로우들이 나눌 수 없는 단일 값이어야 한다.
여러개의 값을 단일 값으로 넣으려면 컬럼을 여러개로 늘리면 된다고 생각하면 되지만 null이 많아지고 관리가 어려워짐

제2정규형 2NF

제1정규형에 부합한다.
하나의 테이블에는 그 목적에 맞는 데이터들이 들어가야 한다.

💡Candidate key
하나의 로우를 특정지을 수 있는 attribute 의 최소 집합을 말한다.
로우를 특정 짓는데 사용되지 않는 attribute는 캔디더트키가 아니게 되는것

💡 함수 종속성이란?
x의 값에 의해서 y의 값이 결정될 때 함수 종속성이 있다고 한다
하나이상의 attribute를 건너 함수 종속성이 있는 경우에 함수 종속성이 넘어갔다, 즉 이행되었다고 한다

제3정규형 3NF

제 2 정규형에 부합한다.
테이블 안에 있는 모든 attribute는 오직 프라이머리키에 대해서만 함수종속성이 있어야 한다. 그 외에 어트리뷰트에 대해서는 이행적 종속성이 없어야 한다.
좀 어렵게 들리지만 풀어서 설명하면 테이블의 모든 컬럼들은 직접적으로 테이블 엔티티에 대한 내용이어야만 한다는 것이다.

0개의 댓글