Environment & Database (3) - Relational Database

2021. 5. 16. 17:34[AI]/Data Engineering

New Stuff

Key Points

  • Relational Database
    • Relational Database Types
    • Schema Design
    • Database Normalization

Learned Stuff

[Relational Database]

  • Table 로 이루어진 데이터를 의미
    • Key 와 Value의 관계로 나타남

 

Keywords

  • Field (or Column) : Table 의 열
  • Record (or Tuple) : Table 의 한 행에 저장된 정보
  • Key : Table 의 각 Record를 구분할 수 있느 값 (보통 ID 로 나타남)
    • Primary Key : 고유값
    • Foreign Key : 다른 Table 의 고유값을 참조하는 값

 

Relational Database Types

  1. 1:1 Relationship
  • 아이돌 그룹 이름이 담겨 있는 Idol_Group Table 과 그룹의 리더의 이름이 담겨 있는 Leader_of_Idol_Group Table을 예시로 들겠습니다.
    • 하나의 아이돌 그룹 당 리더의 이름을 나타내는 정보는 하나이고 그 반대도 동일하므로 1 대 1 관계를 가집니다.

 

Diagram

1 : 1 Relationship

 

  1. 1:N Relationship
  • 가수의 이름이 담겨 있는 Artist Table 과 노래 이름이 담겨있는 Songs Table을 예시로 들겠습니다.
    • 가수(또는 그룹/밴드) 한 명 당 여러 개의 노래 리스트를 가질 수 있으므로 1 대 다 관계를 가집니다.

 

Diagram

1 : N Relationship

 

  1. N:N Relationship
  • 가수의 이름이 담겨 있는 Artist Table & 장르가 담겨 있는 Genre Table & 노래 이름이 담겨있는 Songs Table을 예시로 들겠습니다.
    • 가수(또는 그룹/밴드) 한 명 당 여러 개의 노래 리스트를 가질 수 있고 노래마다 장르가 다양하므로 Artist Table 과 Genre Table을 묶을 수 있습니다.
    • Songs Table은 두 개 Table을 Join 한 형태입니다.

 

Diagram

N : N Relationship

 

  1. Self Referencing Relationship
  • 추천인과 추천 받는 사람에 관한 정보가 담겨 있는 Recommender Table을 예시로 들겠습니다.
    • Recommender_ID : 추천인 ID 정보
    • User_ID : 추천 받은 사람 ID 정보
      • 같은 Table의 Column 정보를 참조합니다.
      • 추천 받은 사람이 여러 명일 수 있으므로 1 : N 관계를 가진다고 볼 수 있습니다.

 

Diagram

Self Referencing Relationship

 

Schema Design

 

Database Normalization

  • Relational Database 설계 시 중복 (Redundancy)을 최소화하는 프로세스

 

Forms

 

  1. First Normal Form (1NF)
  • Table 에서 중복 Columns 및 중복 Rows (Record) 을 제거합니다.
    • Table에서의 Rows는 Unique 해야 합니다.

 

  • Table Cell 은 Single Value 여야 합니다.

 

  • Column 에 들어가는 Data Type 은 동일해야 합니다.
    • Ex) INT 형 Column 에는 INT 형 Data만 들어가야 합니다.

 

  • 관련된 데이터 집합에 대해 별도의 Table 을 만듭니다.
    • 이 때 Primary Key & Foreign Key 를 설정해줍니다.

 

  1. Second Normal Form (2NF)
  • 1NF을 만족해야 함

 

  • Partial Dependent Columns 제거하기
    • Partial Dependent Columns : Composite Key로 이루어진 Columns 중 일부분에 의해 영향을 받는 Columns
      • Composite Key : 2 개 이상의 Primary Key로 Column 이 이루어진 경우 Composite Key 라고 함

 

Example

  • Score Table
    • Score_ID : 점수를 나타내는 ID (Primary Key)
    • Student_ID : 학생을 나타내는 ID (Composite Primary Key)
    • Class_ID : 수업을 나타내는 ID (Composite Primary Key)
    • Score : 시험 점수
    • Teacher_NAME : 수업을 가르치는 선생님의 이름

Score Table

 

Analysis

  • Class_ID Column 의 데이터 값의 변화에 따라 Teacher_NAME Column 에도 영향을 주는 것을 알 수 있습니다.
    • Class_ID 는 Composite Key 중 하나이므로 Teacher_NAME Column 은 Partial Dependent Column 입니다.
    • 즉, 이 두 Column 은 같은 것을 의미합니다.

 

  • Redundancy 문제가 발생하므로 이를 해결하기 위해서는 아래 그림과 같이 별도의 Table을 만들어 주어야 합니다.
    • Teacher_NAME Column 삭제하기
    • Class Table 만들고 Teacher_NAME Column 추가하기

 

Solving Partial Dependency Issue

 

  1. Third Normal Form (3NF)
  • 2NF을 만족해야 함

 

  • Transitive Dependent Columns 제거하기
    • Transitive Dependent Columns : Composite Key 를 제외한 나머지 Column 들 중 서로 영향을 주는 Columns

 

Example

  • Score Table
    • Score_ID : 점수를 나타내는 ID (Primary Key)
    • Student_ID : 학생을 나타내는 ID (Composite Primary Key)
    • Score : 시험 점수
    • Exam_Name : 시험 과목 이름
    • Total_Marks : 시험 총점시험 총점

Score Table

 

Analysis

  • Exam_Name Column 의 데이터 값의 변화에 따라 Total_Marks Column 에도 영향을 주는 것을 알 수 있습니다.
    • Exam_NameTotal_Marks 는 Composite Key 가 아니므로 Total_Marks Column 은 Transitive Dependent Column 입니다.
    • 즉, 이 두 Column 은 같은 것을 의미합니다.

 

  • Redundancy 문제가 발생하므로 이를 해결하기 위해서는 아래 그림과 같이 별도의 Table을 만들어 주어야 합니다.
    • Total_Marks Column 삭제하기
    • Exam Table 만들고 Total_Marks Column 추가하기

 

Solving Transitive Dependency Issue

 

Conclusion

  • 1NF , 2NF , 3NF 뿐만 아니라 4NF 와 5NF 도 있습니다.
  • 보통 1NF , 2NF , 3NF 으로 Database Normalization 을 진행하므로 4NF 와 5NF 에 관한 설명은 하지 않겠습니다.
728x90