Top 46 역 정규화 Best 109 Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 역 정규화 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.maxfit.vn team, along with other related topics such as: 역 정규화 역정규화란, 역정규화 예시, 역정규화 join, 역정규화 무결성, 역정규화 하는 이유, 역정규화 방법, 역정규화 반정규화, 비정규화 역정규화


관계형 데이터 모델링 – 7.2. 역정규화 소개
관계형 데이터 모델링 – 7.2. 역정규화 소개


[DB] 정규화(Normalization)와 역정규화(DeNormalization)

  • Article author: jaenjoy.tistory.com
  • Reviews from users: 22616 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [DB] 정규화(Normalization)와 역정규화(DeNormalization) 역정규화는 데이터베이스의 비용을 최소화하기 위해 중복을 허용하며 Entity를 다시 통합하거나 분할하여 정규화 과정을 통해 도출된 DB 구조를 … …
  • Most searched keywords: Whether you are looking for [DB] 정규화(Normalization)와 역정규화(DeNormalization) 역정규화는 데이터베이스의 비용을 최소화하기 위해 중복을 허용하며 Entity를 다시 통합하거나 분할하여 정규화 과정을 통해 도출된 DB 구조를 … 정규화 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. (출처 Wikipedia) Data Model 과정에서 Entity 사이의 관계(Level, Depth 등)를 분석..Jae Enjoy Dev Blog
  • Table of Contents:

태그

‘프로그래밍Database’ 관련글

티스토리툴바

[DB] 정규화(Normalization)와 역정규화(DeNormalization)
[DB] 정규화(Normalization)와 역정규화(DeNormalization)

Read More

역정규화 – 위키백과, 우리 모두의 백과사전

  • Article author: ko.wikipedia.org
  • Reviews from users: 38780 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 역정규화 – 위키백과, 우리 모두의 백과사전 역정규화(denormalization)는 이전에 정규화된 데이터베이스에서 성능을 개선하기 위해 사용되는 전략이다. 컴퓨팅에서 역정규화는 일부 쓰기 성능의 손실을 감수하고 … …
  • Most searched keywords: Whether you are looking for 역정규화 – 위키백과, 우리 모두의 백과사전 역정규화(denormalization)는 이전에 정규화된 데이터베이스에서 성능을 개선하기 위해 사용되는 전략이다. 컴퓨팅에서 역정규화는 일부 쓰기 성능의 손실을 감수하고 …
  • Table of Contents:

같이 보기[편집]

각주[편집]

역정규화 - 위키백과, 우리 모두의 백과사전
역정규화 – 위키백과, 우리 모두의 백과사전

Read More

[데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization)

  • Article author: junseokdev.tistory.com
  • Reviews from users: 5148 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization) 역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정이다. 정규화된 릴레이션은 하나의 … …
  • Most searched keywords: Whether you are looking for [데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization) 역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정이다. 정규화된 릴레이션은 하나의 … Junseok 님의 블로그입니다.
  • Table of Contents:
[데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization)

정규화

역정규화

[데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization)
[데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization)

Read More

[DB] 📚 제 1-2-3 정규화 & 역정규화 💯 정리

  • Article author: inpa.tistory.com
  • Reviews from users: 914 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [DB] 📚 제 1-2-3 정규화 & 역정규화 💯 정리 ​-> 논리적 정규화를 통해 만든 표를, 개발적 측면에서 성능이나 편의성을 위해서 되돌아가는 작업을 일컫는다. 그렇다고 정규화를 한다고 해서 반드시 … …
  • Most searched keywords: Whether you are looking for [DB] 📚 제 1-2-3 정규화 & 역정규화 💯 정리 ​-> 논리적 정규화를 통해 만든 표를, 개발적 측면에서 성능이나 편의성을 위해서 되돌아가는 작업을 일컫는다. 그렇다고 정규화를 한다고 해서 반드시 … 정규화란? ERD내에서 중복요소를 찾아 제거해 나가는 과정  – 중복된 데이터는 많은 문제를 일으킨다. ​ 3차 정규화 정도만 알면 설계하는데 무리가 없다. – 중복을 최소화 -> 완전히 없애는게 아니라 어느정도..
  • Table of Contents:

정규화란

데이터베이스 정규화 절차

역정규화

방문해 주셔서 감사드립니다

공지사항

최근 댓글 new

최근 글 new

인기 글 hot

티스토리툴바

[DB] 📚 제 1-2-3 정규화 & 역정규화 💯 정리
[DB] 📚 제 1-2-3 정규화 & 역정규화 💯 정리

Read More

역정규화 – 해시넷

  • Article author: wiki.hash.kr
  • Reviews from users: 48830 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 역정규화 – 해시넷 역정규화(逆正規化, denormalization)란 시스템의 속도를 향상시키기 위해 정규화(normalization)의 낮은 단계로 거꾸로 되돌리는 것을 말한다. …
  • Most searched keywords: Whether you are looking for 역정규화 – 해시넷 역정규화(逆正規化, denormalization)란 시스템의 속도를 향상시키기 위해 정규화(normalization)의 낮은 단계로 거꾸로 되돌리는 것을 말한다.
  • Table of Contents:

위키

같이 보기[편집]

역정규화 - 해시넷
역정규화 – 해시넷

Read More

역 정규화

  • Article author: dodo000.tistory.com
  • Reviews from users: 32076 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 역 정규화 역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정입니다. 정규화된 릴레이션은 … …
  • Most searched keywords: Whether you are looking for 역 정규화 역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정입니다. 정규화된 릴레이션은 … 1. 정규화(Normalization) 정규화란 논리적 데이터 모델링 단계에서 데이터의 중복과 종속으로 인한 이상 현상(anomaly)을 방지하기 위해, 속성들 간의 종속 관계를 분석하여 무결성을 유지하면서 다수의 릴레이션..공부하는것들 백업
  • Table of Contents:

11 데이터베이스 정규화(Normalization) 역정규화(DeNormalization)

티스토리툴바

역 정규화
역 정규화

Read More

[데이터베이스] 정규화(Normalization)와 역정규화(Denormalization)

  • Article author: bellog.tistory.com
  • Reviews from users: 34553 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [데이터베이스] 정규화(Normalization)와 역정규화(Denormalization) [데이터베이스] 정규화(Normalization)와 역정규화(Denormalization) … 정규화 된 정도를 정규형(Normal Form)으로 표현하는데, 정규형에는 1NF, … …
  • Most searched keywords: Whether you are looking for [데이터베이스] 정규화(Normalization)와 역정규화(Denormalization) [데이터베이스] 정규화(Normalization)와 역정규화(Denormalization) … 정규화 된 정도를 정규형(Normal Form)으로 표현하는데, 정규형에는 1NF, … 정규화(Normalization)란? 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스 (위키백과) 정규화의 필요성 불필요한 데이터를 제거, 데이터의 중복을 최소화 하기 위해서 데이터베..
  • Table of Contents:
[데이터베이스] 정규화(Normalization)와 역정규화(Denormalization)
[데이터베이스] 정규화(Normalization)와 역정규화(Denormalization)

Read More

[DB] 역정규화

  • Article author: colinch4.github.io
  • Reviews from users: 6946 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [DB] 역정규화 역정규화를 수행하기 위해서는 우선 정확한 업무 분석과 사용자들의 업무 프로세스를 분석해야 한다. 역정규화는 우선 데이터 사용량이 많은 테이블을 … …
  • Most searched keywords: Whether you are looking for [DB] 역정규화 역정규화를 수행하기 위해서는 우선 정확한 업무 분석과 사용자들의 업무 프로세스를 분석해야 한다. 역정규화는 우선 데이터 사용량이 많은 테이블을 … 개발 강좌 블로그
  • Table of Contents:
[DB] 역정규화
[DB] 역정규화

Read More

정규형(normal form), 정규화(normalization)와 반(역)정규화(Denormalization)

  • Article author: spidyweb.tistory.com
  • Reviews from users: 18666 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 정규형(normal form), 정규화(normalization)와 반(역)정규화(Denormalization) 보통 BCNF 정규형까지 정규화하면 실제적인 이상현상은 없어진다. ○제 1 정규형. -릴레이션 R의 모든 속성 값이 원자값을 가지만 제 1정규형이라고 한다. …
  • Most searched keywords: Whether you are looking for 정규형(normal form), 정규화(normalization)와 반(역)정규화(Denormalization) 보통 BCNF 정규형까지 정규화하면 실제적인 이상현상은 없어진다. ○제 1 정규형. -릴레이션 R의 모든 속성 값이 원자값을 가지만 제 1정규형이라고 한다. -정규형(normal form) 이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분할 수 있다. 정규형이 높을수록 이상현상이 줄어든다. 보통 BCNF 정규형까지 정규화하면 실제적인..
  • Table of Contents:

관련글

댓글0

전체 방문자

공지사항

최근글

인기글

최근댓글

태그

티스토리툴바

정규형(normal form), 정규화(normalization)와 반(역)정규화(Denormalization)
정규형(normal form), 정규화(normalization)와 반(역)정규화(Denormalization)

Read More

NoSQL 데이터 모델링 역정규화(Denormalization)

  • Article author: velog.io
  • Reviews from users: 36638 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about NoSQL 데이터 모델링 역정규화(Denormalization) 푸드트럭 서비스를 만드는데 데이터 저장소로 엘라스틱서치(ElasticSearch)를 사용하고 있다.여러 엔티티(entity)들 중 트럭(truck)과 평가(rating) … …
  • Most searched keywords: Whether you are looking for NoSQL 데이터 모델링 역정규화(Denormalization) 푸드트럭 서비스를 만드는데 데이터 저장소로 엘라스틱서치(ElasticSearch)를 사용하고 있다.여러 엔티티(entity)들 중 트럭(truck)과 평가(rating) … 푸드트럭 서비스를 만드는데 데이터 저장소로 엘라스틱서치(ElasticSearch)를 사용하고 있다.여러 엔티티(entity)들 중 트럭(truck)과 평가(rating) 두 인덱스간의 관계는 아래와 같다. rating 개체가 truckId 필드를 통해 truck 개체를
  • Table of Contents:
NoSQL 데이터 모델링 역정규화(Denormalization)
NoSQL 데이터 모델링 역정규화(Denormalization)

Read More


See more articles in the same category here: toplist.maxfit.vn/blog.

[DB] 정규화(Normalization)와 역정규화(DeNormalization)

반응형

정규화

관계형 데이터베이스의 설계에서 중복을 최소화 하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. (출처 Wikipedia)

Data Model 과정에서 Entity 사이의 관계(Level, Depth 등)를 분석하여 다수의 Relation으로 분리하는 과정을 말한다.

정규화는 이렇게 함으로써 데이터의 일관성(Consistency)과 모델의 응집도(Cohesion)를 높이는 것을 지향한다.

정규화는 일관성(Consistency)을 향상시킨다.

정규화는 하나의 논리적 Database에서 여러 테이블에 동일한 데이터(column)가 관리되지 않도록 설계하는 과정이다.

만약, 여러 테이블에서 필요한 데이터라면 해당 Entity의 Level은 최상위 Level에 속하게 될 것이고, 데이터의 값(value)이 아닌 데이터의 구분자(일반적으로 index)로 관계를 맺어주면 된다.

즉, 데이터가 한 곳에서 관리되는 것은 데이터의 변경(INSERT / UPDATE / DELETE)이 있을 때, 특정 테이블의 특정 row만 수정하면 된다.

여러 곳에 데이터가 산재해 있을 경우, 해당 데이터의 값을 일관되게 관리하는

즉, 데이터의 Sync 이슈를 최소화 시킬 수 있기 위해서는 정규화 과정이 중요하다.

정규화는 데이터 조회의 비용을 향상시킨다.

정규화를 통해 데이터를 Entity 단위로 분리하고, 각 데이터 간의 Relation을 만들었다면, 필요한 데이터가 하나의 테이블에 있지 않은 경우가 많다.

즉 필요한 정보가 해당 테이블에 없기 때문에 다른 테이블과 JOIN을 통해 정보를 가져와야 하며, 이는 연산 시간과 비용을 증가시킬 수 있다.

역정규화

정규화된 데이터베이스에서 성능을 개선 하기 위해 사용되는 전략을 역정규화(Denormalization)라고 한다. (출처 Wikipedia)

정규화의 단점으로 언급되었던 것이 ‘비용(Cost)’이다.

역정규화는 데이터베이스의 비용을 최소화하기 위해 중복을 허용하며 Entity를 다시 통합하거나 분할하여 정규화 과정을 통해 도출된 DB 구조를 재조정하는 과정이다.

Join이 너무 많아지는 DB 설계와 쿼리는 요청을 처리하는 시간을 증가시키는 문제가 있기 때문에 모든 주요 Entity를 분리하는 것이 좋은 것이 아니라 DB의 전반적인 성능을 향상시킬 수 있는 구조화 과정을 거치는 것이 필요하다.

포스팅을 시작한 첫 단어가 ‘Data Model’이다.

“좋은 개발자”에 대한 정의는 개개인마다, 회사와 조직마다 생각하는 바와 그 기준이 다르겠지만 필자는 Modeling을 잘 할 줄 아는 개발자가 좋은 개발자라는 생각을 갖고있다.

아무리 Modeling을 잘하는 사람이라 할지라도 처음부터 훌륭한 마스터피스와 같은 DDL을 만들어내기란 쉽지 않다고 생각한다.

DB 구조를 설계한다는 것은 서비스 요구사항에 기반하여 구조를 마련하는 것이지 실제 서비스에서 어떤 동작 방식이 있을 지 예측하기는 어렵기 때문에 처음부터 완벽한 구조로 시작하기란 불가능하다.

데이터의 일관성과 관리상의 이점을 목표로 정규화 과정을 거친 이후, 운영상의 문제나 비용상의 문제로 역정규화 과정을 거치는 것과 같이

큰 설계 자체에서도 구조의 변화가 언제든 있을 수 있다는 것을 생각하는 것이 필요하다고 본다.

반응형

[데이터베이스] 정규화(Normalization)와 역정규화(DeNormalization)

Junseok

정규화

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다.

논리적 데이터 모델링 단계에서 데이터의 중복과 종속으로 인한 이상 현상을 방지하기 위해, 속성들 간의 종속 관계를 분석하여 무결성을 유지하면서 다수의 릴레이션으로 분리하는 과정이다.

이상(anomaly) 현상

불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용

이상 현상의 종류

삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

정규화를 통해 분해된 결과를 정규형이라 하며, 이 정규형의 종류는 제1정규형, 제2정규형, 제3정규형, BCNF, 제4정규형, 제5정규형 등이 있다.

1. 함수 종속

함수 종속(FD, Functional Dependency)은 정규화 이론의 핵심이다.

“‘X’가 ‘Y’를 함수적으로 결정한다.” (X는 결정자, Y는 종속자)

1.1. 함수 종속 관계 예시 : 고객 릴레이션

고객아이디 고객이름 등급 apple 정소화 gold banana 김선우 vip carrot 신준석 silver

고객아이디 -> 고객이름

고객아이디 -> 등급

또는,

고객아이디 -> (고객이름, 등급)

해당 표에서, 각 고객아이디 속성 값에 대응되는 고객이름 속성과 등급 속성 값이 단 하나이다. (원자값)

함수 종속 관계 판단 시 유의 사항 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단해야 한다. 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정한다. (일반적으로 결정자의 역할을 가진다) 기본키나 후보키가 아니여도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있다.

함수 종속은 제2정규형부터 BCNF까지 적용된다.

1.2. 부분 함수 종속 예시 : 고객 릴레이션

고객아이디 이벤트번호 당첨여부 고객이름 apple E001 Y 정소화 apple E004 N 정소화 banana E002 N 김선우 carrot E003 N 신준석

고객아이디 -> 고객이름

{고객아이디, 이벤트번호} -> 당첨번호

{고객아이디, 이벤트번호} -> 고객이름

해당 표에서, 고객이름은 {고객아이디, 이벤트번호}에서의 일부분인 고객아이디에 종속되어 있다.

즉, 고객이름은 {고객아이디, 이벤트번호}에 부분 함수 종속

부분 함수 종속

1.3. 완전 함수 종속(FFD, Full Functional Dependency)

릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음을 의미한다.

일반적으로 함수 종속은 완전 함수 종속을 의미한다.

위 예시에서, 당첨여부는 {고객아이디, 이벤트번호}에 완전 함수 종속된다.

1.4. 고려할 필요가 없는 함수 종속 관계

결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속 관계는 고려하지 않는다. 고객아이디 -> 고객아이디 {고객아이디, 이벤트번호} -> 이벤트번호

2. 기본 정규형과 정규화 과정

2.1. 정규화의 개념

정규화(Normalization) 함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어 가는 과정 관련이 없는 함수 종속성은 별개의 릴레이션으로 분리한다.

주의 사항 정규화를 통해 릴레이션은 무손실 분해(nonloss decomposition)되어야 한다. 릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고, 분해로 인한 정보 손실이 발생하지 않아야 한다. 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 한다.

2.2. 정규화의 종류

정규형(NF, Normal Form) 릴레이션이 정규화된 정도 각 정규형마다 제약조건이 존재 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다. 릴레이션의 특성을 고려해서 적합한 정규형을 선택한다.

정규형의 종류

2.2.1. 제1정규형 (1NF, First Normal Form)

제1정규형을 만족해야 관계형 데이터베이스의 릴레이션이 될 자격이 있다.

릴레이션에 속한 모든 속성의 도메인이 원자 값(atomic value)으로만 구성되어 있으면 제1정규형에 속한다.

바로위의 표는 제1정규형을 만족하지만 이상 현상이 발생하는 릴레이션의 예시이다. 고객아이디 -> 등급 고객아이디 -> 할인율 등급 -> 할인율 {고객아이디, 이벤트번호} -> 당첨여부 이상 현상의 발생 이유 기본키인 {고객아이디, 이벤트번호}에 완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문이다. (등급, 할인율은 {고객아이디, 이벤트번호} 집합에서 고객아이디 속성에 부분 함수 종속된다) 문제 해결 방법 부분 함수 종속이 제거되도록 이벤트 참여 릴레이션을 분해한다. 분해된 릴레이션은 제2정규형에 속하게 된다.

2.2.2 제2정규형 (2NF, Second Normal Form)

제1정규형에 속하는 릴레이션이 제2정규형을 만족하기 위해서는 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 분해해야 한다.

릴레이션이 제1정규형이 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2정규형에 속한다.

제2정규형을 만족하지만 이상 현상이 발생한다. 이상 현상의 발생 이유 이행적 함수 종속이 존재하기 때문이다. 고객아이디(X) -> 등급(Y)

등급(Y) -> 할인율(Z)

고객아이디(X) -> 할인율(Z) 이행적 함수 종속(transitive FD) 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X->Y와 Y->Z가 존재하면 논리적으로 X->Z가 성립되는데, 이때 Z가 X에 이행적으로 함수 종속되었다고 한다. 문제 해결 방법 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해한다. 분해된 릴레이션은 제3정규형에 속하게 된다.

2.2.3. 제3정규형 (3NF, Third Normal Form)

제2정규형에 속하는 릴레이션이 제3정규형을 만족하게 하려면 모든 속성이 기본키에 이행적 함수 종속이 되지 않도록 분해한다.

릴레이션이 제2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3정규형에 속한다.

2.2.4. 보이스/코드 정규형(BCNF, Boyce/Codd Normal Form)

하나의 릴레이션에 여러 개의 후보키가 존재하는 경우, 제3정규형까지 모두 만족해도 이상 현상이 발생할 수 있다.

강한 제3정규형(strong 3NF), 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 제3정규형보다 좀 더 엄격한 제약조건을 제시한다.

보이스/코드 정규형에 속하는 모든 릴레이션은 제3정규형에 속하지만, 제3정규형에 속하는 모든 릴레이션이 보이스/코드 정규형에 속하는 것은 아니다.

릴레이션의 함수 종속 관계에서 모든 결정권자가 후보키이면 보이스/코드 정규형에 속한다.

2.2.5. 제4정규형과 제5정규형

제4정규형 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속(MVC, Multi Valued Dependecy)을 제거하면 제4정규형에 속한다.

제5정규형 릴레이션이 제4정규형을 만족하면서, 후보키를 통하지 않는 조인 종속(JD, Join Dependency)을 제거하면 제5정규형에 속한다.

2.2.6 정규화 시 주의 사항

모든 릴레이션이 제5정규형에 속해야만 바람직한 것은 아니다.

일반적으로 제3정규형이나, 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상현상을 해결하는 경우가 많다.

2.2.7 정규화 과정 정리

역정규화

역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정이다.

정규화된 릴레이션은 하나의 릴레이션을 분해하기 때문에 원하는 자료가 하나의 릴레이션에 존재하지 않아 조인을 해서 참조해야하는 상황이 잦다.

이는 데이터베이스에 저장된 자료를 검색하는 시간을 증가시키며 성능을 저하시킬 수 있다.

따라서, 데이터베이스의 물리적 설계 과정에서 성능을 향상시키기위해 역정규화를 실행한다.

역정규화의 종류로는 릴레이션 역정규화와 속성 역정규화가 있다.

릴레이션 역정규화 릴레이션의 역정규화에는 릴레이션을 병합하는 방법과 분할하는 방법이 있다. 릴레이션 병합 : 두 릴레이션 간의 잦은 참조로 성능이 저하될 경우 이 문제점을 해결하기 위해 병합한다. 릴레이션 분할 : 릴레이션의 데이터를 검색할때는 목록중의 데이터를 순차적으로 조사하여 원하는 자료를 찾는다.

그래서 자주 사용하지 않는 속성이나 튜플이 릴레이션에 있을 경우 검색시 성능을 저하하게 만든다.

이 경우에는 자주 사용하는 속성이나 튜플을 분해하여 성능을 향상시킨다.

이 분할에는 수직 분할 (자주 사용하는 속성과 그렇지 않는 속성을 구분해서 분할) 과

수평 분할 (자주 사용하는 튜플과 그렇지 않는 튜플을 구분해서 분할) 이 있다.

속성 역정규화 릴레이션의 성능을 향상시키기 위해 속성 또는 파생속성을 추가한다. ※파생 속성(Delivered Attribute): 현재 릴레이션에는 없는 속성이지만 작업의 효율을 위해 힌 속성으로부터의 계산이나 가공에 의해 파생되는 속성.

https://dodo000.tistory.com/21

https://jaenjoy.tistory.com/15

[DB] 📚 제 1-2-3 정규화 & 역정규화 💯 정리

정규화란?

ERD내에서 중복요소를 찾아 제거해 나가는 과정

– 중복된 데이터는 많은 문제를 일으킨다.

3차 정규화 정도만 알면 설계하는데 무리가 없다.

– 중복을 최소화 -> 완전히 없애는게 아니라 어느정도는 인정하겠다

– 시간을 줄이기 위해 (데이터베이스 안에 1억개의 튜플이 들어있다고생각해봐라)

몇가지 원칙만 지키면 정규화가 필요 없는 ERD를 설계할 수 있다.

데이터베이스 정규화 절차

​함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되 도록 분해해서 이상현상이 발생하지 않도록 Step By Step Approach 로 수행

기본 정규형으로는 제 1‧2‧3‧보이스/코드 정규형이 있으며, 제 4‧5 정규형 은 고급 정규형으로 분류

제 1 정규화

-> 제1차 정규화는 같은 성격과 내용의 컬럼이 연속적으로 나타나는 컬럼이 존재할 때, 해당 컬럼을 제거하고 기본테이블의 PK를 추가해 새로운 테이블을 생성하고, 기존의 테이블과 1:N 관계를 형성하는 것이다.

tag필드를 보면, 값들이 여러개가 있다. 하나의 필드에 값들이 여러개 있으면 안된다.

이를 정규화 시키보자.

1. 우선 하나의 title은 여러개의 tag를 같는다. 또한 하나의 tag(rdb)는 여러개의 title(mySQL, Oracle)을 같는다.

2. 그러면 title과 tag를 테이블 두개로 분리했을때 이들의 관계는 M:N이 된다.

3. M:N을 표현하기 위해선 테이블 3개를 만들어야 한다.

4. title과 topic테이블을 분단시키고 그 중간경로 테이블인 topic_tag_relation을 만든다. 그리고 각 테이블을 이어울 새로운 태그 tag_id속성을 만든다.

5. 그리고 각각 1:N 관계를 연결해주면 정규화가 완료한 것이다.

제 2정규화

-> 제2정규화는 PK가 여러 키로 구성된 복합키(Composite Primary Key)로 구성된 경우가 2차 정규화의 대상이 되며, 복합키 전체에 의존하지 않고 복합키의 일부분에만 종속되는 속성들이 존재할 경우 (즉, 부분적 함수 종속 관계) 이를 분리하는 것이다.

1. 제 1정규화를 마친 테이블을 보면, 중복되는 레코드(적갈색)가 보인다.

2. 저 부분이 중복되어 나타나는 이유는 type와 price 필드 값이 각기 다르기 때문이다.

3. 그러면 각기 다른 부분을 테이블로 나누고 중복부분을 하나로 표현되게 해보자.

4. 먼저 중복이 나타나게 한 원인 필드인 type와 price 필드를 따로 빼서 topic_type테이블을 만든다.

5. 그리고 topic_type에서 식별할수있는 외래키 title을 등록해준다.

6. 이렇게 하면, 중복되는 것 없이 title이 mySQL이냐 아니냐에 따라 topic 테이블에선 저자정보, topic_type테이블에선 가격과 타입을 각각 나타낼수있게 된다.

제 3정규화

-> 테이블의 키가 아닌 컬럼들은 기본키에 의존해야 하는데 겉으로는 그런 것처럼 보이지만 실제로는 기본키가 아닌 다른 일반 컬럼에 의존하는 컬럼들이 있을 수 있다.

이를 (이전적 함수 종속 관계)라고 한다.

제 3정규화는 PK에 의존하지 않고 일반컬럼에 의존하는 컬럼들을 분리한다.

1. 제 2정규화를 마쳤지만 여전히 중복된 값(노란색) 이 보인다.

2. 저 레코드는 author_id에 의존하는 컬럼들이다. 언뜻보면 title에 의존하는것처럼 보이지만 아닌것이다.

3. 그럼 PK(title)에 의존하지 않는 컬럼들을 분단시키자.

4. author라는 테이블을 만들고 중복되는 컬럼들 3개를 그대로 따온다. 그리고 topic테이블과 author_id로 외래키 관계를 맺어준다. 그러면 중복이 사라지는것을 볼 수 있다.

Q. 그런데 만일 author_id가 없고 author 논리적 정규화를 통해 만든 표를, 개발적 측면에서 성능이나 편의성을 위해서 되돌아가는 작업을 일컫는다.

그렇다고 정규화를 한다고 해서 반드시 성능을 떨어뜨리는 것이 아니기 때문에 일반화 하지는 말자.

다음과 같은 정규화를 마친 논리적 테이블들이 있다고 하자.

원본 테이블

역정규화 – JOIN을 줄이기

1. 만일 topic_tag_relation의 topic_title필드를 가지고 tagName을 알아야된다고 해보자.

2. 그러면 topic_tag_relation과 tag테이블을 조인해서 조건에 부합하는 name컬럼 값을 가져오면 된다.

3. 하지만 만일 저러한 쿼리가 서버내에서 많이 일어날 경우, join은 많은 부하가 일어나길 마련이다.

4. 이때 그냥 테이블을 하나로 합쳐버리는 것이다.

5. 제 1정규화를 통해 나눴던 걸 성능과 편의를 위해서 역으로 되돌아가버린 것이다.

역정규화 – 계산 작업을 줄이기

이번에는 데이터를 처리하는 비용을 줄이기 위한 역정규화 이다.

1. 만일 count 값이 필요하다고 가정하자. group by를 통해 컬럼을 묶고 조회하면 된다.

2. 하지만 만일 이러한 쿼리가 빈번하게 이러난다면 역시 부하가 일어난다.

3. 따라서 그룹핑해서 내장함수를 쓰는게 아닌 아예 topic_count데이터를 컬럼 추가하는 것이다. topic_count 필드를 추가하고 데이터를 준다.

4. 하지만 유효한 데이터를 유지하기 위해서는 글이 추가될때마다 지속적으로 데이터를 업데이트해야 하는 관리를 해야 한다.

5. 트리거를 쓰던지 서버 사이드에서 처리하던지 하면 된다.

6. 관건은 group by 부하를 줄이는 것이기 때문이다.

역정규화 – 테이블 분리

하나의 표를 성능을 위해서 여러개로 쪼개는 경우이다.

만일 topic테이블에 description의 용량이 엄청많을때 만일 topic테이블을 자주 조회했을 경우 약간 부하가 올수도 있다.

그래서 표의 성능을 위해 용량이 큰 테이블을 따로 분리하는 것이다.

테이블을 나누면 여러대의 서버에서 각기 다르게 접근해서 처리할수 있으니 성능이 좋다.

행을 기준으로 분리하는것은

만일 author_id 회원이 몇만명일때, 하나의 테이블에 접근해서 처리하는것보다, 테이블을 분담해서 author_id가 1000이하일 경우 1500이상일 경우 각기 다른 테이블로 접근해서 부하를 줄이는 것이다.

mySQL에는 파티션 기법 이 있는데, 바로 이걸 말하는 것이다.

역정규화 – 외래키 줄이기

join을 줄여서 지름길을 만드는 테크닉이다.

처음에 배웠던 역정규화 – JOIN을 줄이기 방법에서 외래키를 통해서 줄이는 방법이라 보면 된다.

어느 저자의 태그아이디와 태그명을 조회한다고 가정 했을때,

우리는 세가지 필드 어느 저자인지(autor_id), tag_id, tagName 이 필요하다

이들을 조회 하기 위해선 3개의 테이블을 join하고 불러오면 되지만, join을 많이 쓰면 성능이 안좋아진다.

그래서 topic_tag_relation테이블에 author_id컬럼을 추가하면, join을 한번만 하면 원하는 결과를 얻을 수 있다.

Reference

https://myeonguni.tistory.com/210

So you have finished reading the 역 정규화 topic article, if you find this article useful, please share it. Thank you very much. See more: 역정규화란, 역정규화 예시, 역정규화 join, 역정규화 무결성, 역정규화 하는 이유, 역정규화 방법, 역정규화 반정규화, 비정규화 역정규화

Leave a Comment