Logical Database Design (2)

꾸Jun·2023년 10월 23일
0

📚 Database

목록 보기
12/20

목차

  1. Well Struction relation
  2. Functional dependency
  3. Normalization


1. Well Struction relation

relation?

  • 이름이 있는 데이터를 저장하는 2차원의 테이블
  • ER Modeling -> Relational Modeling -> Normalization 과정

문제의 소지가 있는 경우

  • Anomaly: 데이터의 중복이 발생해서 데이터 불일치가 일어날 수 있음
  • Modification Anomaly
    • 데이터를 수정했을 때 발생
  • Insertion Anomaly
    • 새로운 데이터를 넣고 싶을 때 발생
  • Deletion Anomaly
    • 데이터를 지울 때 발생

Well Struction Relation?

하나의 relation은 2개 이상의 entity type의 정보를 가지면 안된다

  • 최소한의 데이터 중복을 포함하고, 3가지 anomaly들을 피하고 사용자가 데이터를 사용하고, 수정하고, 지우는 것이 가능한 relation
  • Logical database design의 목표는 well struction relation을 만드는 것임


2. Functional Dependency

  • 수학의 함수처럼 어떠한 값을 통해 종속 관계에 있는 다른 값을 유일하게 결정할 수 있다는 것
  • 정규화에서 Functional dependency 개념은 중요
  • X -> Y
    • X의 값 각각에 대해 시간에 관계없이 항상 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수 종속이라 하고, X → Y라고 표기
    • X는 결정자(determinant)
    • Y는 종속자(dependent)
  • Full functional dependency
    • Dependent가 determinant의 모든 attribute에 종속
    • determinant의 attribute 1개만 제거하더라도 종속이 안됨
    • Primary Key가 여러 속성으로 구성되어 있을경우 Primary Key를 구성하는 모든 속성이 포함된 Primary Key의 부분집합에 종속된 경우
    • Composite primary key일 경우도 가능함
  • Partial functional dependency
    • Dependent가 determinant의 모든 attribute에 종속되지 않을 때
  • Transitive functional dependency
    • A -> B, B -> C, A -> C의 경우
    • C는 A에 transitively dependent함
    • 여러가지 anomaly를 야기할 수 있음


3. Normalization

Normalization

  • Relational modeling에서 중복된 데이터가 최소화되도록 데이터베이스의 구조를 결정하는 것을 정규화(normalization)
  • Anomaly가 있는 한 개의 relation을 well struction relation 여러 개로 쪼개는 과정
  • 더욱 효율적으로 데이터에 대한 연산을 수행 가능
  • 여러 stage로 되어있고, normal form과 연관되어 있음
    • First normal form
    • Second normal form
    • Third normal form
    • Industry에서는 third normal form 정도까지 되면 well struction relation이라고 함
  • Normalization 목표
    • 데이터 중복을 최소화
    • 데이터 유지를 쉽게 해줌
    • referential integrity의 시행을 간단히 해줌

Unnormalized Form

  • 정규화가 진행되지 않은 form
  • 한 컬럼에 1개 이상의 값이 들어감
    • 이렇게 되면 relation 자체가 될 수 없음
    • relation의 속성: 이름이 unique, 모든 attribute는 쪼갤 수 없음, 모든 row, column의 이름은 unique,,,

First Normal Form

  • 모든 attribute에 값은 쪼갤 수 없어야 함
  • multi valued, composite이면 안됨
  • 한 컬럼에는 한 개의 값만 들어감
  • 모든 relation은 first normal form

<1NF 과정>
1. 여러 개의 값이 들어가 있는 컬럼을 쪼개줌


Second Normal Form

  • First Normal Form이어야 함
  • 모든 non-primary-key attribute는 fully functional dependcy
  • Partial funcional dependency가 없어야 함

<2NF 과정>
1. Partial functional dependency를 야기하는 primary key를 가지고 새로운 relation을 만듦
2. 새로운 relation의 primary key에 종속적인 attribute들을 가져옴

ex)
EMPLOYEE2(EMP_ID, Course_Title, Name, Dept_Name, Salary, Date_Completed)
-->
EMPLOYEE2(EMP_ID, Course_Title, Date_Completed)

Foreign Key(EMP_ID) references EMPLOYEE1(EMP_ID)

EMPLOYEE1(EMP_ID, Name, Dept_Name, Salary)


Third Normal Form

  • Second Normal Form이어야 함
  • primary key에 transitive functional dependency가 없어야 함
  • 즉, 아래와 같은 상황이면 안됨
    • primary key -> non-primary-key ayytubute A1
    • non-primary-key ayytubute A1 -> non-primary-key ayytubute A2

<3NF 과정>
R1(PK, A1, A2, ,,,) / PK -> A1 -> A2일때
1. A1을 primary key로 하는 새로운 R2를 만듦
2. A1을 R1에서 지우지 말고 남김(FK로 사용하기 위해)
3. R2에 R1에서 A1에 종속적인 relation들을 옮김

ex)
R1(PK, A1, A2, ,,,)
-->
R1(PK, A1, A2, ,,,)

Foreign Key(A1) references R1(A1)

R2(A1, A2)

profile
꾸준🐢

0개의 댓글