위키 피 디아의 Database Normalization 2NF에 대한 기사를 Wikipedia에서 연구했습니다. 마지막 예제를 통해 토너먼트 우승자를 만났습니다. 표에는 전이 의존성이 있기 때문에 2NF에 포함되어 있지 않으며 3NF로 복원하고 데이터 손상 가능성을 제거하기 위해 추가 최적화가 필요합니다 (추가 테이블로 분할하는 것과 같은). 다른 사람이 다른 기록에 다른 생년월일로 표시되는 것을 같은 사람에게 보여주기 위해 어떤 유형의 '부패'가 일어날 수 있는지 말해 줄 수 있습니까?RDBMS에서 전이 종속성의 문제점은 무엇입니까?
1
A
답변
3
이 행 삽입 한 번 상상해
Indiana Invitational 1998 Al Fredrickson 21 July 1975
를하고 나중에이 (예를 들어, 실수로) 삽입 :
Des Moines Masters 1999 Al Fredrickson 20 June 1985
당신이 볼 수 있듯이, 같은 사람이 다른 생일에있다 이 테이블. 그 Wikipedia 기사가 말하는 것은 생일이 기본 키가 아닌 사람에 달려 있다는 것입니다. 즉, 그 사람은 반복 할 수 있으며주의를 기울이지 않으면 종속 속성 (예 : 생년월일)이 변경 될 수 있습니다.
당신이해야 할 일은 사람 이름이 기본 속성으로 다른 테이블을 만들고 그 테이블 (예 : 사람의 생년월일)로 종속 데이터를 이동하는 것입니다. 이 방법을 사용하면 여분의 (name, birthday)
튜플을 피할 수 있으며 손상을 방지하고 메모리를 절약 할 수 있습니다.
관련 문제
- 1. RDBMS에서 "스키마 공급자"란 무엇입니까?
- 2. 전이
- 3. Maven 기반 종속성의 전이 종속성을 Maven 프로젝트가 아닌 클래스 경로로 수집 중
- 4. 내 플러그인 내에서 Maven 2와의 전이 종속성
- 5. RDBMS에서 작동하는 동안 LINQ와 SQL
- 6. rdbms에서 자체 관계를 어떻게 표현합니까?
- 7. RDBMS에서 WCF로 ASP.NET DataProvider 스와핑
- 8. 스프링 컨텍스트와 스프링 코어 종속성의 차이점은 무엇입니까?
- 9. gradle 종속성의 종속성에 분류기를 지정하는 방법은 무엇입니까?
- 10. 집합, 구성 및 종속성의 차이점은 무엇입니까?
- 11. 종속성의 경우 정적 초기화
- 12. 유니티 종속성의 해상도
- 13. ForEach 루프의 문제점은 무엇입니까?
- 14. 이 RelativeLayout의 문제점은 무엇입니까?
- 15. DCOM의 문제점은 무엇입니까?
- 16. 이 코드의 문제점은 무엇입니까?
- 17. 뒤에 오는 문제점은 무엇입니까?
- 18. JSpinner.DateEditor의 문제점은 무엇입니까?
- 19. 이 코드의 문제점은 무엇입니까?
- 20. XPath/XML의 문제점은 무엇입니까?
- 21. 이 HQL의 문제점은 무엇입니까?
- 22. reduce()의 문제점은 무엇입니까?
- 23. 이 코드의 문제점은 무엇입니까?
- 24. iPad에서 groupTableViewBackgroundColor의 문제점은 무엇입니까?
- 25. 이 코드의 문제점은 무엇입니까?
- 26. 내 코드의 문제점은 무엇입니까?
- 27. MATLAB의 문제점은 무엇입니까?
- 28. Regex 함수의 문제점은 무엇입니까?
- 29. XMLHttpRequest 요청의 문제점은 무엇입니까?
- 30. 이 xsd의 문제점은 무엇입니까?
글쎄, 그게 핵심이야. 두 개의 토너먼트는 Al Fredrickson이라는 이름을 가진 두 명의 다른 사람들이 이길 수 있습니다. 맞습니까? 그렇다면 왜 그것이 오류가되어야합니까? 둘째, 사용자 입력 데이터가 백만 가지 방법으로 손상 될 수 있습니다. 왜 각자 NF를 고안해야합니까? 중복 레코드를 삽입하는 것은 치명적이므로 첫 번째 1NF는이를 금지합니다. 하지만 사용자 데이터가 부정확한지 확인하기 위해 NF가 있어야하는 이유는 무엇입니까? – SexyBeast
정규화가 수행하는 작업 - 데이터의 중복성 및 종속성 제거. 서로 다른 생년월일의 Al Fredricksons가 2 명일 수도 있지만, 승자와 함께 테이블에 보관하는지 알 수는 없습니다. 우승자 테이블에서 사용할 수있는'PERSON' 엔티티를 갖는 것이 더 좋습니다. –
정확히 N 서쪽이 말합니다. 더 나은 설계 (더 높은 일반 형식)로 중복을 제거하면 사용자 입력을 수동으로 확인하는 대신 RDBMS에 남겨 두는 것을 의미합니다. 아마도 더 중요한 효과는 성능입니다. 사람들과 소지품의 거대한 데이터베이스를 상상해보십시오. 'Person','Thing'과'BelongsTo' 테이블을 구별하지 않는다면 많은 비용과 시간을 절약 할 수있는 반복 된 데이터를 가질 수 있습니다. – Shahbaz