RDBMS의 정규화에 대해 설명해주세요

RDBMS(관계형 데이터베이스 관리 시스템)의 정규화는 데이터베이스 설계에서 중복을 제거하고
데이터 중복을 최소화하여 데이터베이스를 보다 효율적으로 설계하는 과정입니다.

이를 통해 데이터의 일관성, 유지보수성, 확장성 등을 개선할 수 있습니다.

정규화는 1,2,3,BXNF 단계로 이루어 집니다.

  • 1 단계는(1NF) : 각 열에 중복 되는 필드가 없어야 합니다.
  • 2 단계는(2NF) : 부분 함수 종석 제거, 기본 키가 아닌 모든 속성이 기본 키에 완전 함수 종속되어야 합니다.
  • 3 단계는(3NF) : 이행적 함수 종속을 제거, 모든 비 기본 속성이 기본 키에 이행적을 종속되지 않아야 합니다.
  • BCNF(Boyce-Codd 정규화 형태) : 모든 결정자가 후보키, 제 3 정규화에서 발생할 수 있는 이상 현상을 방지합니다.

이외에 4,5 단계 등 있으나 일반적으로 3단계 또는 BCNF까지 정규화를 수행하는 경우가 많습니다.

정규화 과정을 통해 중복된 데이터를 제거하고 이상현상을 방지하며 데이터베이스의 구조를 최적화 할수 있습니다.
하지만 너무 과도한 정규화는 성능 저하를 일으킬 수 있어 적절한 수준에서의 정규화가 필요합니다.


Primary Key, Foreign Key에 대해 설명해주세요.

Primary Key는 관계형 데이터베이스 테이블에서
각 레코드를 고유하게 식별하기 위해 사용되는 필드 또는 필드의 집합입니다.

  • 테이블 내에서는 각 레코드는 오직 하나의 Primary Key 값을 가져야 합니다.
  • Primary Key는 테이블에서 기본적인 식별자 역할을 하며, 빠른 검색을 가능하게 합니다.
  • 주로 테이블 생성 시 지정되며, 후에 변경이 어렵거나 비용이 많이 드는 경우가 많습니다.
  • 빈 값으로 지정하여 사용할 수 없습니다.

Foreign Key는 관계형 데이터베이스에서 한 테이블의 필드로 다른 테이블의 Primary Key 값을 가리키는데 사용되는 필드입니다.
이를 통해 한 테이블의 데이터가 다른 테이블과 관련되어 있는 관계를 맺을 수 있습니다.

  • 1:1 관계, 1:N, N:M 관계 연결 시 Foreign Key를 사용하여 여러 테이블을 서로 연결하고 데이터 간의 관계를 정의할 수 있습니다.
    이를 통해 데이터의 무결성을 유지하고 참조 무결성을 강제할 수 있습니다.

예를 들어, 주문 테이블에서 각 주문이 어떤 사용자에 의해 생성되었는지를 나타내기 위해
사용자 테이블의 Primary Key를 참조하는 Foreign Key를 사용할 수 있습니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글