데이터 베이스 Database(DB) #5

이온·2023년 6월 24일
0

데이터베이스

목록 보기
5/7
post-thumbnail

1. 이상 현상과 정규화

이상 현상 (Anomaly)

: 잘못된 데이터베이스 설계로 발생하는 오류

• 삽입 이상: 데이터를 삽입할 때 불필요한 내용까지 삽입해야 하는 문제
• 갱신 이상: 중복된 데이터 중 일부만 갱신되어 발생하는 문제
• 삭제 이상: 어떤 데이터를 삭제할 때 다른 유용한 정보도 함께 삭제되는 문제

함수 종속성

: 속성들 간의 종속 관계

어떤 속성 X의 한 값이 다른 속성 Y에 속한 하나의 값에만 매핑되는 경우를 말하며, 여기서 X를 결정자, Y를 종속자라고 함 (ID → 이름)

완전 함수 종속, 부분 함수 종속, 이행 함수 종속 등이 있으며 함수 종속성에 대해 알아야 이상 현상을 제거하기 위한 정규화를 이해할 수 있음

2. 정규화 (Normalization)

: 이상 현상을 제거하기 위해 데이터베이스를 구조화하는 과정

• 데이터간의 종속성을 제거하여 중복되는 데이터를 줄임
• 데이터의 일관성과 무결성을 보장
• 1차 정규화, 2차 정규화, 3차 정규화, 보이스코드 정규화, 4차 정규화, 5차 정규화가 있음

1차 정규화(1NF)

: 테이블의 컬럼이 하나의 값만 갖도록 도메인을 원자값으로 설정하는 과정

정규화를 하기 전에

ERD를 통해 최종 형태의 데이터베이스를 설계하는 것이 아니라 지속해서 변경해 나가야 함

이상현상

2차 정규화

: 부분 함수 종속을 제거하고 완전 함수 종속이 되도록 테이블을 분해하는 과정

이상현상

부분함수종속

: 기본키를 구성하는 속성 중 일부가 결정자 역할을 하는 경우

  • 기본키가 복합키이거나 후보키가 결정자인 경우에 부분 함수 종속이 발생할 수 있음
  • 반대로 기본키를 구성하는 속성 모두가 결정자 역할을 하는 경우는 완전 함수 종속이라고 함


3차 정규화

:이행 함수 종속을 제거하도록 테이블을 분해하는 과정

이상현상


이행함수종속

: X → Y, Y → Z라는 종속 관계가 있을 때, X → Z가 성립하는 경우

즉 X라는 속성을 통해 Y를 알고, Y라는 속성을 통해 Z라는 속성을 알 수 있는 경우



정규화 정리


결정자이면서 후보키가 아닌 것

다치 종속

조인 종속

역정규화

: 정규화된 데이터베이스의 성능을 개선하기 위해 다시 통합하여 구조를 재구성

정규화를 통해 테이블을 분해하면 여러 테이블을 조인할 때 성능이 크게 떨어질 수 있음
따라서 자주 사용되는 쿼리를 고려하여, 데이터 중복을 감안해 역정규화를 하는 것이 효율적일 수 있음

3. 공유 킥보드 DB 완성

고객 테이블

• 회원 가입 시 입력 받는 데이터 추가
• 기본키를 회원의 ID 대신 고유 번호로 설정
• 비밀번호는 값을 그대로 넣으면 보안에 취약

대여 테이블

• 고객 번호를 외래키로 사용
• 대여 장소보다 정확하게 위도와 경도 데이터를 입력 받음
• 대여 상태를 입력 받아 킥보드를 대여하는 것인지 반납하는 것인지 기록
• 브랜드명과 연식을 함께 외래키로 사용하는 대신 킥보드 ID를 생성하여 외래키로 사용

킥보드 테이블

• 킥보드 ID를 기본키로 사용하고 테이블 명을 킥보드로 설정
• 브랜드 이름 대신 브랜드 고유 번호를 생성하여 외래키로 사용
• 가격을 계산하는 쿼리가 많이 사용되어 분당 가격 컬럼을 킥보드 테이블에 입력
• 기본료나 분당 가격이 변경되는 경우가 적기 때문에 데이터 불일치를 감안함

브랜드 테이블

• 브랜드 번호를 기본키로 사용하고 테이블 명을 브랜드로 설정
• 킥보드가 없더라도 새로운 브랜드를 등록할 수 있음

profile
👩🏻‍💻

0개의 댓글