첫 번째 정규 형태
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 |
| ||||||||||||
아이작 | 2 |
| ||||||||||||
제이콥 | 3 |
|
각 고객에게 트랜잭션의 '반복 그룹'에 대응한다.SQL은 중첩된 테이블을 지원하지 않기 때문에 이러한 설계는 계층형 데이터베이스로 나타낼 수 있지만 SQL 데이터베이스는 표시할 수 없다.
고객의 거래와 관련된 모든 질의에 대한 자동평가는 크게 두 가지 단계를 포함한다.
- 그룹 내 개별 트랜잭션을 검사할 수 있도록 하나 이상의 고객 트랜잭션 그룹의 압축을 풀고
- 첫 번째 단계 결과에 기반한 쿼리 결과 도출
예를 들어, 모든 고객에 대해 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]
- 행에 대한 상하의 순서가 없다.
- 기둥에 좌우를 주문할 순 없어
- 중복 행은 없다.
- 모든 행과 열 교차로에는 해당 도메인에서 정확히 하나의 값이 포함된다(다른 것은 없음).
- 모든 열은 정규 [즉, 행 ID, 객체 ID 또는 숨겨진 타임스탬프와 같은 숨겨진 구성요소가 행에 없음]이다.
이러한 조건 중 하나를 위반하면 테이블이 엄격하게 관계성이 없으며 따라서 테이블이 첫 번째 정상적인 형태가 아니라는 것을 의미한다.
첫 번째 정규 형식의 정의를 충족하지 못하는 표(또는 뷰)의 예는 다음과 같다.
- 고유한 키 제약 조건이 없는 테이블.그러한 테이블은 조건 3을 위반하여 중복 행을 수용할 수 있다.
- 정의에서 특정 순서로 결과를 반환해야 하므로 행 순서가 보기의 본질적이고 의미 있는 측면이 되도록 하는 보기입니다.(SQL:2003 표준을 준수하는 SQL을 사용하여 이러한 보기를 생성할 수 없음)이것은 조건 1을 위반한다.진정한 관계의 튜플은 서로에 대한 존중으로 주문되지 않는다.
- 하나 이상의 null 가능 속성이 있는 테이블.무효화 특성은 조건 4를 위반할 수 있으며, 이 경우 모든 열은 해당 열의 도메인에서 정확히 하나의 값을 포함해야 한다.조건 4의 이러한 측면은 논란의 여지가 있다.그것은 무효에 대한 명시적인 조항을 만든 관계형 모델에 대한 Codd의 나중의 비전에서 중요한 이탈을 나타낸다.[12][13]Chris Date에서 정의한 첫 번째 정규 형태는 관계 값 속성(테이블 내의 테이블)을 허용한다.다테는 테이블 안의 열이 테이블을 포함할 수 있는 방법으로 관계 값 속성이 드물게 유용하다고 주장한다.[14]
참조
- ^ Codd, E.F (1970년)"대규모 공유 데이터 뱅크의 데이터 관계 모델"ACM의 통신.고전. 13: 377–87. 페이지 380-381
- ^ Codd, E.F (1970년)"대규모 공유 데이터 뱅크의 데이터 관계 모델"ACM의 통신.고전. 13: 377–87.
- ^ Codd, E. F. (1971)관계 모델의 추가 표준화.R, 러스틴이 편집한 데이터 베이스 시스템의 Courant 컴퓨터 과학 심포지엄 6
- ^ Codd, E.F (1970년)"대규모 공유 데이터 뱅크의 데이터 관계 모델"ACM의 통신.고전. 13: 377–87. 페이지 381
- ^ Codd, E. F.데이터베이스 관리 버전 2를 위한 관계 모델(Addison-Wesley, 1990).
- ^ Codd, E. F.데이터베이스 관리 버전 2를 위한 관계 모델(Addison-Wesley, 1990), 페이지 6.
- ^ 다웬, 휴.C. J. Date와 Hugh Darwen, Relational Database Writes 1989-1991(Addison-Wesley, 1992년)에서 "관계 가치 속성(Relative-Value Attributes; 또는 "실제 첫 번째 정상 폼이 일어나 주시겠습니까?"
- ^ 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.'
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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
- ^ 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가지 규칙 중 세 번째 규칙) - ^ 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.
추가 읽기
- Date, C. J, & Lorenzos, N, & Darwen, H. (2002).시간 데이터 및 관계 모델(1차 개정)모건 카우프만ISBN 1-55860-855-9.
- 날짜, C. J.(1999년), 데이터베이스 시스템 소개(8차 개정판)애디슨 웨슬리 롱맨ISBN 0-321-19784-4.
- 켄트, W. (1983) ACM의 통신, ACM의 관계형 데이터베이스 이론에 있는 5가지 정상형식에 대한 간단한 안내서, 제26권, 페이지 120–125
- Codd, E.F. (1970년)데이터 관계 모델:대규모 공유 데이터 뱅크.캘리포니아 산호세의 IBM 연구실.
- Codd, E. F. (1971)관계 모델의 추가 표준화.R, 러스틴이 편집한 데이터 베이스 시스템의 Courant 컴퓨터 과학 심포지엄 6