첫 번째 정규 형태

First normal form

번째 정규 형태(1NF)는 관계형 데이터베이스에 있는 관계의 속성이다.관계는 속성 도메인이 요소로서 관계를 가지지 않는 경우에만 첫 번째 정상적인 형태다.[1]또는 비공식적으로 어떤 테이블 열도 값으로 테이블을 가질 수 없다(또는 반복 그룹이 없다).데이터베이스 표준화는 표준 정상 형태로 데이터베이스를 나타내는 과정이며, 여기서 첫 번째 정규식은 최소한의 요구 사항이다.SQL-92는 테이블 값 열 작성이나 사용을 지원하지 않으며, 이는 "전통적인 관계형 데이터베이스 기능"만 사용하는 것(나중에 표준화되었더라도 확장자를 제외함) 대부분의 관계형 데이터베이스는 필요에 따라 첫 번째 정상적인 형태가 될 것이라는 것을 의미한다.첫 번째 정상적인 형태가 필요하지 않은 데이터베이스 시스템을 no sql system이라고 부르는 경우가 많다.SQL:1999와 같은 새로운 SQL 표준은 복합 유형을 포함하는 소위 비원자 유형을 허용하기 시작했다.심지어 SQL:2016과 같은 새로운 버전도 json을 허용한다.

개요

IBM Information Management System과 같은 계층형 데이터베이스에서 레코드는 반복 그룹 또는 테이블 값 속성이라고 알려진 하위 레코드 집합을 포함할 수 있다.그러한 데이터 모델이 관계로 표현된다면, 반복 그룹은 값 자체가 관계인 속성이 될 것이다.첫 번째 정상적인 형태는 직접적인 봉쇄를 통해서가 아니라 외국의 키를 통해 부모 노선과 연관된 별도의 "상위 수준" 관계로 변화시킴으로써 중첩된 관계를 제거한다.

이 표준화의 목적은 유연성과 데이터 독립성을 높이고 데이터 언어를 단순화하는 것이다.또 중복과 이상 현상을 없애는 추가 정상화의 문을 열어준다.

대부분의 관계형 데이터베이스 관리 시스템은 중첩된 레코드를 지원하지 않으므로 테이블은 기본적으로 첫 번째 정상적인 형식이다.특히 SQL에는 중첩된 테이블을 생성하거나 악용할 수 있는 기능이 없다.따라서 데이터를 계층형 데이터베이스에서 관계형 데이터베이스로 이동할 때 첫 번째 정규화 작업이 필요한 단계가 될 수 있다.

이론적 근거

1NF로 정상화하는 근거:[2]

  • 정규 2차원 배열의 형태로 관계형 데이터를 표시, 저장 및 상호 교환할 수 있다.내포된 관계를 지원하려면 좀 더 복잡한 데이터 구조가 필요할 것이다.
  • 데이터 항목은 관계 이름, 속성 이름 및 키만으로 식별할 수 있으므로 데이터 언어를 단순화한다.중첩된 관계를 지원하려면 중첩된 데이터 항목을 다루기 위해 계층적 데이터 경로를 지원하는 보다 복잡한 언어가 필요할 것이다.
  • 외부 키를 사용하여 관계를 나타내는 것은 보다 유연하며, 계층적 모델은 일대다관계만을 나타낼 수 있다.
  • 데이터 항목을 찾는 것은 상위-하위 계층과 직접 연결되지 않기 때문에, 데이터베이스는 시간이 지남에 따라 구조 변화에 더 탄력적이다.
  • 데이터 중복 및 이상 징후를 제거하는 추가 표준화 수준 실현

단점과 비판

  • 특정 작업에 대한 성능.계층적 모델에서 내포된 레코드는 상위 레코드 뒤에 물리적으로 저장되며, 이는 전체 하위 트리를 단일 읽기 작업으로 검색할 수 있음을 의미한다.1NF 양식에서는 레코드 종류별로 조인 작업이 필요하며, 특히 복잡한 나무의 경우 비용이 많이 들 수 있다.이러한 이유로 문서 데이터베이스는 1NF를 준수한다.
  • 객체 지향 언어는 포인터나 참조에 의해 연결된 객체의 트리나 그래프로 런타임 상태를 나타낸다.이것은 1NF 관계형 데이터베이스에 깔끔하게 매핑되지 않으며, 때로는 개체-관계형 임피던스 불일치라고 불리는 문제, 그리고 어떤 ORM 라이브러리가 브리지하려고 하는지에 대한 문제가 있다.
  • 1NF는 값에 대해 복잡한 데이터 유형을 허용하지 않는 것으로 해석되었다.하지만 이것은 해석에 열려있다. 그리고 C.J.데일은 값이 임의로 복잡한 객체가 될 수 있다고 주장해 왔다.

역사

첫 번째 정상적인 형태는 E.F.에 의해 도입되었다.Codd는 "대규모 공유 데이터 뱅크의 데이터 관계 모델"이라는 논문에서 처음에는 "정상 형식"이라고 불렸지만,관계 모델의 추가 정규화 논문에서 정규화 양식이 추가 소개되면서 "최초 정규화 양식"으로 명칭이 변경되었다.

다음 시나리오는 먼저 데이터베이스 설계가 첫 번째 정규 형식을 위반할 수 있는 방법을 설명하고, 그 다음에 준수하는 예를 제시한다.

1NF를 위반하는 설계

고객의 신용카드 거래에 대한 이 표는 첫 번째 정상적인 형태와 일치하지 않는다.

고객 고객ID 트랜잭션
아브라함 1
트랜잭션 ID 날짜 금액
12890 2003년 10월 14일 −87
12904 2003년 10월 15일 −50
아이작 2
트랜잭션 ID 날짜 금액
12898 2003년 10월 14일 −21
제이콥 3
트랜잭션 ID 날짜 금액
12907 2003년 10월 15일 −18
14920 2003년 11월 20일 −70
15003 2003년 11월 27일 −60

각 고객에게 트랜잭션의 '반복 그룹'에 대응한다.SQL은 중첩된 테이블을 지원하지 않기 때문에 이러한 설계는 계층형 데이터베이스로 나타낼 수 있지만 SQL 데이터베이스는 표시할 수 없다.

고객의 거래와 관련된 모든 질의에 대한 자동평가는 크게 두 가지 단계를 포함한다.

  1. 그룹 내 개별 트랜잭션을 검사할 수 있도록 하나 이상의 고객 트랜잭션 그룹의 압축을 풀고
  2. 첫 번째 단계 결과에 기반한 쿼리 결과 도출

예를 들어, 모든 고객에 대해 2003년 10월에 발생한 모든 거래의 금전적 총액을 알아내기 위해, 시스템은 먼저 각 고객의 거래 그룹을 푼 다음, 2003년 10월에 거래 일자가 있는 곳에서 얻은 모든 거래의 금액을 합산해야 한다는 것을 알아야 할 것이다.

Codd의 중요한 통찰 중 하나는 구조적 복잡성을 줄일 수 있다는 것이었다.구조적 복잡성 감소는 사용자, 애플리케이션 및 DBMS가 쿼리를 공식화하고 평가할 수 있는 더 많은 힘과 유연성을 제공한다.위의 구조물과 더 정규화된 등가물이 다음과 같이 보일 수 있다.

1NF를 준수하는 설계

모형을 첫 번째 정규 형태로 만들기 위해 정규화를 수행할 수 있다.정규화(첫 번째 정규형태로)는 단순하지 않은 도메인을 가진 속성을 추출하여 독립적 관계를 분리하는 과정이다.추출된 관계는 포함된 관계의 주요 키를 참조하는 외국 키로 수정된다.이 프로세스는 여러 레벨에 중첩된 단순하지 않은 도메인에 반복적으로 적용될 수 있다.[4]

이 예에서 고객 ID는 포함된 관계의 주요 키이므로 새로운 관계에 외래 키로 추가된다.

고객 고객ID
아브라함 1
아이작 2
제이콥 3
고객ID 트랜잭션 ID 날짜 금액
1 12890 2003년 10월 14일 −87
1 12904 2003년 10월 15일 −50
2 12898 2003년 10월 14일 −21
3 12907 2003년 10월 15일 −18
3 14920 2003년 11월 20일 −70
3 15003 2003년 11월 27일 −60

수정된 구조에서 기본 키는 첫 번째 관계에서는 {Customer ID}, 두 번째 관계에서는 {Customer ID, Transaction ID}입니다.

이제 각 행은 개별 신용카드 거래를 나타내며, DBMS는 단순히 10월에 해당하는 날짜가 있는 모든 행을 찾아 그들의 금액을 합하면 관심의 답을 얻을 수 있다.데이터 구조는 모든 값을 동일한 기준으로 배치하여 각 값을 DBMS에 직접 노출하므로 각 값은 잠재적으로 쿼리에 직접 참여할 수 있는 반면, 이전 상황에서는 일부 값이 특별히 취급되어야 하는 하위 수준 구조에 내장되어 있었다.따라서 표준화된 설계는 범용 쿼리 처리에 그 자체를 빌려주는 반면, 비표준화된 설계는 그렇지 않다.

이 설계는 두 번째 및 세 번째 정규 형태에 대한 추가 요건을 충족한다는 점에 유의할 필요가 있다.

원자성

에드가 F. Codd의 1NF 정의는 '원자성'의 개념을 참조한다.Codd 보고서는"각각의 관계가 정의되어 있는 영역에서 값은 DBMS에 대하여 원잘 필요가 있다."[5]커든 칼럼 부분으로 다 이상의 한 종류로 나뉠 수 없음을 의미하"DBMS은에 의해 작은 조각들로 분해할 수 없(제외하고 특수한 기능)"[6]로 원자 값을 규정한다.분명에한 부분이 DBMS에 의미하는 것은 동일한 열의 다른 부분에 의존한다.

휴 다웬크리스 다테는 Codd의 '원자 가치' 개념은 모호하며, 이러한 모호성으로 인해 1NF를 어떻게 이해해야 하는지에 대한 혼란이 널리 퍼졌다고 제안했다.[7][8]특히, "분해될 수 없는 가치"라는 개념은 문제가 있는데, 이는 소수의 데이터 유형만 원자적이더라도 이를 암시하는 것처럼 보이기 때문이다.

  • RDBMS는 일반적으로 운영자에게 문자열을 하위 문자열로 분해하도록 제공하기 때문에 문자열이 원자 문자열이 아닌 것 같다.
  • RDBMS는 일반적으로 운영자에게 정수와 분수 성분으로 분해하도록 제공하기 때문에 고정점수는 원자점이 아닌 것 같다.
  • ISBN은 언어와 출판사 식별자를 포함하기 때문에 원자성이 아닌 것처럼 보인다.

날짜는 "원자성의 개념은 절대적인 의미를 가지고 있지 않다"[9][10]는 것을 암시한다: 값은 어떤 목적에서는 원자적인 것으로 간주될 수 있지만, 다른 목적에서는 더 기본적인 요소들의 집합으로 간주될 수도 있다.이 위치가 허용되면 원자성을 기준으로 1NF를 정의할 수 없다.상상할 수 있는 모든 데이터 유형(현열 유형과 숫자 유형에서 배열 유형 및 테이블 유형까지)의 열은 1NF 표에서 허용된다. 예를 들어, 고객 이름 열을 이름, 성으로 구분하여 두 개의 별도 열로 구분하는 것이 더 바람직할 수 있다.

관계를 나타내는 1NF 표

다테의 정의에 따르면, 표는 "어떤 관계와 이형성"인 경우에만 첫 번째 정상적인 형태로, 구체적으로 다음과 같은 다섯 가지 조건을 만족한다는 것을 의미한다.[11]

  1. 행에 대한 상하의 순서가 없다.
  2. 기둥에 좌우를 주문할 순 없어
  3. 중복 행은 없다.
  4. 모든 행과 열 교차로에는 해당 도메인에서 정확히 하나의 값이 포함된다(다른 것은 없음).
  5. 모든 열은 정규 [즉, 행 ID, 객체 ID 또는 숨겨진 타임스탬프와 같은 숨겨진 구성요소가 행에 없음]이다.

이러한 조건 중 하나를 위반하면 테이블이 엄격하게 관계성이 없으며 따라서 테이블이 첫 번째 정상적인 형태가 아니라는 것을 의미한다.

첫 번째 정규 형식의 정의를 충족하지 못하는 표(또는 )의 예는 다음과 같다.

  • 고유한 키 제약 조건이 없는 테이블.그러한 테이블은 조건 3을 위반하여 중복 행을 수용할 수 있다.
  • 정의에서 특정 순서로 결과를 반환해야 하므로 행 순서가 보기의 본질적이고 의미 있는 측면이 되도록 하는 보기입니다.(SQL:2003 표준을 준수하는 SQL을 사용하여 이러한 보기를 생성할 수 없음)이것은 조건 1을 위반한다.진정한 관계의 튜플은 서로에 대한 존중으로 주문되지 않는다.
  • 하나 이상의 null 가능 속성이 있는 테이블.무효화 특성은 조건 4를 위반할 수 있으며, 이 경우 모든 열은 해당 열의 도메인에서 정확히 하나의 값을 포함해야 한다.조건 4의 이러한 측면은 논란의 여지가 있다.그것은 무효에 대한 명시적인 조항을 만든 관계형 모델에 대한 Codd의 나중의 비전에서 중요한 이탈을 나타낸다.[12][13]Chris Date에서 정의한 첫 번째 정규 형태는 관계 값 속성(테이블 내의 테이블)을 허용한다.다테는 테이블 안의 열이 테이블을 포함할 수 있는 방법으로 관계 값 속성이 드물게 유용하다고 주장한다.[14]

참조

  1. ^ Codd, E.F (1970년)"대규모 공유 데이터 뱅크의 데이터 관계 모델"ACM의 통신.고전. 13: 377–87. 페이지 380-381
  2. ^ Codd, E.F (1970년)"대규모 공유 데이터 뱅크의 데이터 관계 모델"ACM의 통신.고전. 13: 377–87.
  3. ^ Codd, E. F. (1971)관계 모델의 추가 표준화.R, 러스틴이 편집한 데이터 베이스 시스템의 Courant 컴퓨터 과학 심포지엄 6
  4. ^ Codd, E.F (1970년)"대규모 공유 데이터 뱅크의 데이터 관계 모델"ACM의 통신.고전. 13: 377–87. 페이지 381
  5. ^ Codd, E. F.데이터베이스 관리 버전 2를 위한 관계 모델(Addison-Wesley, 1990).
  6. ^ Codd, E. F.데이터베이스 관리 버전 2를 위한 관계 모델(Addison-Wesley, 1990), 페이지 6.
  7. ^ 다웬, 휴.C. J. Date와 Hugh Darwen, Relational Database Writes 1989-1991(Addison-Wesley, 1992년)에서 "관계 가치 속성(Relative-Value Attributes; 또는 "실제 첫 번째 정상 폼이 일어나 주시겠습니까?"
  8. ^ Date, C. J. (2007). What First Normal Form Really Means. Date on Database: Writings 2000–2006. Apress. p. 108. ISBN 978-1-4842-2029-0. '[F]or many years,' writes Date, 'I was as confused as anyone else. What's worse, I did my best (worst?) to spread that confusion through my writings, seminars, and other presentations.'
  9. ^ Date, C. J. (2007). What First Normal Form Really Means. Date on Database: Writings 2000–2006. Apress. p. 112. ISBN 978-1-4842-2029-0.
  10. ^ Date, C. J. (6 November 2015). SQL and Relational Theory: How to Write Accurate SQL Code. O'Reilly Media. pp. 50–. ISBN 978-1-4919-4115-7. Retrieved 31 October 2018.
  11. ^ Date, C. J. (2007). What First Normal Form Really Means. Date on Database: Writings 2000–2006. Apress. pp. 127–128. ISBN 978-1-4842-2029-0.
  12. ^ Date, C. J. (2009). "Appendix A.2". SQL and Relational Theory. O'Reilly. Codd first defined the relational model in 1969 and didn't introduce nulls until 1979
  13. ^ Date, C. J. (October 14, 1985). "Is Your DBMS Really Relational?". Computerworld. Null values ... [must be] supported in a fully relational DBMS for representing missing information and inapplicable information in a systematic way, independent of data type. (Codd의 12가지 규칙 중 세 번째 규칙)
  14. ^ Date, C. J. (2007). What First Normal Form Really Means. Date on Database: Writings 2000–2006. Apress. pp. 121–126. ISBN 978-1-4842-2029-0.

추가 읽기