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가 논의하는 래빗 홀없이 :
값은 다음과 같은 경우에만 첫 번째 정규형을위한 원자 적입니다.
- 값이 집합이 아닙니다 (예, 날짜가 동의하지 않음) 및
- 필드의 하위 부분에 대한 외래 키 참조가 없습니다.
특히 값의 표현은 원 자성을 결정할 수 없습니다. IP 주소를 “10.0.0.1”vs ARRAY [10,0,0,1] vs 167772161로 표시하는 것은 세 가지 모두 동일한 원자 값을 참조하기 때문에 1NF 분석에 중요하지 않습니다.
특히 공통 (때로는 유용 할 수도 있습니다!) 원자성에 관한 1NF 위반에는 다음이 포함됩니다.
- 블로그 게시물이나 댓글에 태그 배열 저장
- 테이블 내에 테이블 저장, 내부 테이블 다른 관계에 대한 참조 무결성 요구 사항이 있습니다.
이러한 문제는 거의 동일한 데이터 이상을 생성합니다.
답변
지구상의 위치를 고려합니다. (경도, 위도) 쌍 또는 HTM (Hierarchical Triangular Mesh) 코드로 찾을 수 있습니다. 둘 다 동일한 데이터를 측정하기 때문입니다. 이것은 우리가 휴대 전화로 측정 할 수있는 물리적 인 사실입니다. 그리드 번호를 [경도, 위도]로 변환합니다. 둘 다 모델에서 원자 또는 복합이어야합니다.
데이터를 표시하는 데 사용되는 측정 및 표기법에 사용되는 배율 을 데이터의 특성.
댓글
- 이 게시물을 몇 가지 오타로 편집했습니다. 저는 '이 사용자가 진짜 Joe Celko라고 생각하지 않지만 meta.stackexchange.com에서 명의 도용을 검색 한 결과 스레드 . Stackexchange의 창립자 인 Messrs.Atwood와 Spolsky의 답변을 확인하세요. 허용되는 것으로 보입니다.
답변
원자 키는 분해 할 수없는 기본 키입니다. 이 키는 Student_ID, Employee_ID와 같이 더 이상 나뉘 지 않음을 의미합니다.