1NF를 파악하려고하는데 다음 테이블이 1NF인지 아닌지 궁금합니다. first_name, last_name 및 full_name 열이 반복 될 수 있으므로 user_id 및 first_name, last_name 및 full_name 열이있는 새 테이블로 이동해야하므로 no로 가정 할 것입니다. 아래 그림은 참조 용 데이터베이스의 스크린 샷입니다.첫 번째 정규형과 성과 이름
답변
확실히 될 수 있습니다.
현재 디자인에서 말하는 것은 1 등분 인 경우 하나의 "엔터티"(사람이라고 부르기 만 함)가 하나의 사용자 레코드에만 연결된다는 것입니다.
이름 필드를 별도의 테이블로 이동하면 기본적으로 하나의 "사람"이 하나 이상의 사용자 레코드와 연결될 수 있으며 이름을 업데이트 할 때 이름 필드를 변경해야한다는 것을 의미합니다. 그들의 "사용자"모두에게 동일하게 변경
이 같은 구조가 필요한 경우, 테이블이 보일 것 같이 더 많은 :
user_id|username|password|email|person_id
하고 각 "사람"
에 대해 별도의 테이블을 것person_id|first_name|last_name|full_name
첫 번째 법선은 데이터를 복제하지 않습니다. 그냥 이름을보고, 당신은 아주 잘 "Bob"또는 "앨리스"라는 이름을 가진 많은 사람들이있을 수 있습니다. 그 데이터가 반복해서 반복되기 때문에 테이블에 중복 데이터가 있다고 말하는 것과 같지 않습니다. 요점은 각 레코드가 원자 적이어야한다는 것입니다.
신난다, 고마워! 테이블에 대한 제안은 그것을 이해하는 데 도움이 될 것입니다. – jason328
1NF는 중복성이 아니라 원 자성에 대한 것입니다 (이것이 더 높은 정상적인 형태에 관한 것입니다). 본질적으로 모든 속성이 원자 일 경우 테이블은 1NF입니다.
분명히 테이블이 1NF에 있는지 여부는 "원자"로 정의하는 것에 따라 다릅니다. "원 자성"이 실제로 의미하는 것은 논쟁의 여지가 있지만 실용적인 사례 별 접근법을 사용하여 간단히 묻습니다.
문제의 맥락에서 나는 풀려고 노력하고 있습니다. 값의 일부에 액세스하는 것이 의미가 있습니까? 아니면 항상 전체 값에 액세스합니까?
나는 항상 전체 내용에 액세스하면 그 특정 상황에서 원자 적입니다.
예를 들어, first_name
과 last_name
을 별도로 액세스하려고하므로 full_name
은 1NF를 위반 한 이유가 될 수 있습니다. 그러나 이름과 성을 따로 따로 액세스 할 필요가 없다는 것을 알고 있다면 은이고 full_name
은 여전히 1NF를 위반하지 않을 수 있습니다.
"액세스"
는 값 널리 여기 상당히 이해되어야한다. 그것은 분명히 데이터베이스에서 읽는 것을 의미 할 수도 있지만 제약 조건에서 사용하거나 인덱싱하는 것을 의미 할 수도 있습니다 ...
- 1. OpenMP 공유 대 첫 번째 개인 성과 성능 향상
- 2. 장고 등록, 성과 이름, 사용자 이름 없음
- 3. 성과 이름 변형 검색을위한 이름 일치 사전
- 4. 전체 이름 열에서 성과 이름을 파싱합니다.
- 5. 이름의 첫 번째 문자를 기준으로 필터링 이름
- 6. html로 첫 번째 이름 이니셜을 표시
- 7. 클릭 후 첫 번째 클래스 이름 찾기
- 8. xslt의 첫 번째 자식 노드 이름
- 9. .Net 회원 제공 업체 및 성과 이름
- 10. 등록시 성과 이름 업데이트 - Django CMS
- 11. 첫 번째
- 12. Regex로 문자열의 첫 번째 단어와 첫 번째 글자
- 13. 첫 번째 테이블
- 14. UITableView는 첫 번째 행만 표시합니다.
- 15. 코드 첫 번째 및 모델 같은 프로젝트의 첫 번째?
- 16. 첫 번째 및 성명 정규식
- 17. 첫 번째 프로젝트 무엇을보아야합니까?
- 18. 루프가 첫 번째 반복
- 19. Entity Framework 코드 첫 번째 및 잘못된 개체 이름 오류
- 20. 열 이름 난의 열 이름을 얻을 필요가 첫 번째 행
- 21. 파일 [] 배열의 첫 번째 파일 이름 가져 오기
- 22. 첫 번째 클래스 이름 요소 위로 초점 맞추기
- 23. EF 모델 첫 번째 엔터티 키 속성 이름 중복
- 24. DictReader 필드 이름 vs csv 판독기 첫 번째 행
- 25. PE 파일 가져 오기 테이블의 첫 번째 항목 이름 인쇄
- 26. 첫 번째 줄에 파일 이름 쓰기 일괄 파일
- 27. OleDbConnection을 사용하여 첫 번째 Excel 시트 이름 가져 오기
- 28. 첫 번째 응답을 어떻게 설정합니까?
- 29. MYSQL - 첫 번째 문자로 정렬
- 30. 첫 번째 열의 MySQL 업데이트
1NF 일 수 있지만 데이터에 따라 적용 할 수없는 경우도 있습니다.모든 xxxx_name 필드는 Nullable이 아니며 일부 culture는 * firstname/lastname을 가질 수 없습니다. 또한 : Ludwig van Beethoven은 무엇을 채워야합니까? – wildplasser
이것은 내가 최근에 발견 한 것입니다. 알림 주셔서 감사. – jason328
그것은 당신이 가고 싶은 깊이에 달려 있습니다. 이름은 실제로 이름 구성 요소가 혼합되어 있으며 시간이 지남에 따라 바뀔 수 있습니다. 어떤 사람들은 성을 가지고 있고, 어떤 이들은 성을 가지고 있으며, 어떤 이들은 성을 바꿉니다. –