[주제 16,17] 데이터베이스 기초
- [C861] RDBMS에서 스키마 디자인 중 필드값으로 배열을 넣어야 하는 경우가 발생했습니다. 선배 개발자에게 물어보니, 이 경우에는 정규화가 필요하다고 조언해줍니다. 다음은 사용자 정보가 담긴 user 테이블입니다. 사례를 통해 어떻게 테이블을 정규화할 지 고민해보세요.
1.hobby의 필드는 배열로 저장되어, 여러값을 가질 수 있습니다. 이는 데이터베이스 정규화의 1NF(제 1 정규 형식) 을 위반합니다.
2.테이블을 정규화 하기 위해 hobby용 새 테이블을 만들고, 외래키를 사용하여 사용자테이블과 연결 하여야 합니다.
3.
a. [id,name,age,email]을 속성로 가지고 있는 User엔터티을 생성합니다.
b. [id,hobby]을 속성로 가지고 있는 Hobby 엔터티을 생성합니다.
c. [user_id, hobby_id]을 속성으로 가지고 있는 User_Hobby엔터티를 생성하며, user_id,hobby_id는 각각 User,Hobby의 기본키를 참조하는 외래 키로 생성합니다.
데이터베이스 정규화 형식
첫 번째 정규 형식(1NF): 각 테이블 셀에는 단일 값이 있어야 하며 각 열에는 고유한 이름이 있어야 합니다. 즉, 테이블을 반복 그룹이나 배열 없이 행과 열로 구성해야 합니다.
두 번째 정규 형식(2NF): 각 테이블에는 각 행을 고유하게 식별하는 기본 키가 있어야 하며 키가 아닌 각 열은 기본 키에 종속되어야 합니다. 즉, 테이블은 일부 열이 기본 키의 일부에만 의존하는 부분 종속성이 없어야 합니다.
세 번째 정규 형식(3NF): 키가 아닌 각 열은 기본 키에만 종속되어야 하며 다른 키가 아닌 열에는 종속되지 않아야 합니다. 즉, 테이블에는 전이 종속성이 없어야 하며, 일부 열은 키가 아닌 다른 열에 종속됩니다.
네 번째 정규 형식(4NF): 테이블에는 다중 값 종속성이 없어야 합니다. 여기서 하나 이상의 열은 다른 열의 값 집합에 종속됩니다.
다섯 번째 정규 형식(5NF): 테이블은 조인 종속성이 없어야 하며, 테이블은 동일한 종속성을 가진 둘 이상의 테이블로 분해될 수 있습니다.
- [C862] 배치 작업의 예로는 어떤 것들이 있나요? 거래(트랜잭션), 리포트, 요금 계산은 배치 작업의 대표적인 예입니다. 이 키워드를 사용해 배치 작업을 설명해보세요.
- 배치작업은 사용자의 즉각적인 상호 작용 없이 작업 집합이 한번에 처리되는 컴퓨팅 작업 유형을 나타냅니다.
- 거래(트랜잭션)은 일정 기간 동안 수집된 다음 한번에 처리되는 금융 트랜잭션과 같이 일반적으로 일괄적으로 실행되는 데이터 처리 작업 집합 입니다.(일반적으로, 이러한 거래건은 한건씩 처리되어야 하지만 대규모 은행에서는 하루동안 발생한 모든 거래를 한꺼번에 처리하는 것이 효율적)
- 리포트는 미리 정의된 매개 변수를 기반으로 데이터 요약 및 상세 리포트를 생성하는 배치 작업 유형입니다.
- 요금 계산은 많은 수의 고객에 대한 송장 또는 청구서를 한번에 생성하는 일괄 작업이기 떄문에 배치 작업 유형입니다.