첫 번째 정규형의 원자 관계는 무엇인가

1NF의 정의 인 “관계의 각 속성이 원자 적이라면”을 읽었습니다. Atomic이 무엇인지 알려주세요.

댓글

Answer

1NF에서는 모든 관계의 모든 튜플에있는 모든 속성 위치에 적절한 유형의 단일 값이 포함되어야합니다. . 유형은 임의로 복잡 할 수 있습니다. 실제로 유형은 관계 일 수 있습니다. (CJ Date의 저서 데이터베이스 심층 : 실무자를위한 관계형 이론 은이 문제를 “아주 이해하기 쉬운 방식으로 다루고 있습니다.)”

“원자”는 결코 의미가 없습니다. “보이지 않는”, 이것이 그 용어가 마침내 호의적으로 떨어지는 이유입니다. 간단히 말해서 “원자”는 값에 구성 요소 부분이있는 경우 dbms가 해당 부분의 존재를 무시하거나이를 조작하는 기능을 제공함을 의미합니다. 예를 들어 타임 스탬프 값에는 이러한 부분이 있습니다.

  • 연도
  • 시간
  • 밀리 초

이러한 종류의 값은 분명히 나눌 수 있으며 모든 데이터베이스 관리 시스템은 이러한 부분을 조작하는 기능을 제공합니다. 또한 타임 스탬프를 단일 값으로 선택하는 방법을 제공합니다. (물론 그렇습니다.)

Answer

“Atomic”은 1969 년의 Codd “의 원래 개념을 관계 내 각 튜플의 각 속성은 단일 값으로 구성되어야하며 CODASYL 모델과 같은 데이터베이스에서 지원되는 종류의 다중 값 구조를 허용하지 않아야합니다.

현대 SQL DBMS에서 원자 성은 실제로 문제가되지 않습니다. SQL 테이블은 다중 값 열을 허용하지 않으며 값은 항상 “원자 적”입니다.

주석

  • 기술적으로는 사실이지만 SQL 테이블은 큰 문자열을 값으로 허용합니다. , 이는 실제로 허점입니다. 여러 개의 쉼표로 구분 된 10 진수 정수, ASCII 날짜 등을 포함하는 문자열 필드는 문자 다음에 오는지 여부에 관계없이 원자 성의 의도를 위반하는 것처럼 보입니다 ….

답변

원자는 더 이상 나눌 수없는 데이터를 의미합니다.

원 자성 규칙 :

  • 규칙 1 : 원자 데이터가있는 열은 동일한 열에 동일한 유형의 데이터 값을 여러 개 가질 수 없습니다.
  • 규칙 2 : 원자 데이터가있는 테이블은 데이터 유형이 동일한 여러 열을 가질 수 없습니다.

전체 이름 열처럼 “성, 이름으로 더 나눌 수 있기 때문에 원자적일 수 있다고 말할 수 없습니다. 관심이있는 열도 더 나눌 수 있으므로 열 수 있습니다.” t be split을 atomic이라고합니다.

Answer

키를 분해 할 수 없음을 의미합니다. 이름, 성, 전화 번호라는 세 개의 열이있는 테이블이 있다고 가정 해 보겠습니다. (이름, 성)에 복합 기본 키를 선언합니다. 기본 키는 원 자성이 아닙니다 . 두 개의 열로 구성됩니다. 이제 full_name의 기본 키를 사용하여 테이블을 full_name 및 telephone_number의 두 열로 변경한다고 가정 해 보겠습니다. 이제 핵심이 원 자성입니까? 아니요, 응용 프로그램에서 이름과 성으로 분할 할 수 있기 때문입니다. 이제 테이블 id, full_name 및 telephone_number, id의 기본 키 (정수)를 만들어 보겠습니다. 는 정수가 의미있게 분해 될 수 없기 때문에 원자 적입니다.

주석

  • 그러나 귀하의 예는 원 자성 "이 키를 분해 할 수 없다는 것을 의미합니다. ". '이 의미가 아닙니다. 이는 속성 이 단일 값으로 구성된다는 것을 의미합니다. 비원 자적 " 여러 속성으로 구성된 키에 대해.

답변

Codd는 원래 값 그 자체가 집합이라는 것을 의미하는 것으로 보입니다. 이것은 유용한 시작점이지만 “원자”는 데이터베이스와 관련하여 존재 론적 의미가 없습니다 (CJ Date가 맞습니다. Codd는 사양 외부에서 더 이상 분해 될 수없는 것으로 정의를 공식화하려고했습니다. ial 데이터베이스 작업 (예 : 연도를 추출하는 것은 특별한 데이터베이스 작업이기 때문에 타임 스탬프는 원자 적입니다.) 즉, 데이터베이스가 하위 값을 나눌 수 있다면 괜찮습니다. 그러나 응용 프로그램 논리를 분해하는 데 필요한 집합 (순서가없는 목록)이나 개체는 없어야합니다.

시간이 지남에 따라 운영 환경에서이 문제로 어려움을 겪으면서 저는 Codd보다 엄격한 원자성에 대한 중간 정의를 제안 할 것입니다. 그리고 Date가 논의하는 래빗 홀없이 :

값은 다음과 같은 경우에만 첫 번째 정규형을위한 원자 적입니다.

  1. 값이 집합이 아닙니다 (예, 날짜가 동의하지 않음) 및
  2. 필드의 하위 부분에 대한 외래 키 참조가 없습니다.

특히 값의 표현은 원 자성을 결정할 수 없습니다. IP 주소를 “10.0.0.1”vs ARRAY [10,0,0,1] vs 167772161로 표시하는 것은 세 가지 모두 동일한 원자 값을 참조하기 때문에 1NF 분석에 중요하지 않습니다.

특히 공통 (때로는 유용 할 수도 있습니다!) 원자성에 관한 1NF 위반에는 다음이 포함됩니다.

  1. 블로그 게시물이나 댓글에 태그 배열 저장
  2. 테이블 내에 테이블 저장, 내부 테이블 다른 관계에 대한 참조 무결성 요구 사항이 있습니다.

이러한 문제는 거의 동일한 데이터 이상을 생성합니다.

답변

지구상의 위치를 고려합니다. (경도, 위도) 쌍 또는 HTM (Hierarchical Triangular Mesh) 코드로 찾을 수 있습니다. 둘 다 동일한 데이터를 측정하기 때문입니다. 이것은 우리가 휴대 전화로 측정 할 수있는 물리적 인 사실입니다. 그리드 번호를 [경도, 위도]로 변환합니다. 둘 다 모델에서 원자 또는 복합이어야합니다.

데이터를 표시하는 데 사용되는 측정 및 표기법에 사용되는 배율 데이터의 특성.

댓글

  • 이 게시물을 몇 가지 오타로 편집했습니다. 저는 '이 사용자가 진짜 Joe Celko라고 생각하지 않지만 meta.stackexchange.com에서 명의 도용을 검색 한 결과 스레드 . Stackexchange의 창립자 인 Messrs.Atwood와 Spolsky의 답변을 확인하세요. 허용되는 것으로 보입니다.

답변

원자 키는 분해 할 수없는 기본 키입니다. 이 키는 Student_ID, Employee_ID와 같이 더 이상 나뉘 지 않음을 의미합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다