데이터베이스 정규화를위한 단계 및 지침은 무엇입니까? 좋은 컴퓨터 및 논리 기술을 가진 많은 사람들이 있다면 데이터베이스 설계를 표준화하는 방법을 그들에게 어떻게 설명합니까? 속성 (필드) 목록을 가져 와서 그 목록을 1NF의 데이터베이스로 변환하는 과정은 무엇입니까? 2NF? 3NF?데이터베이스 정규화를 어떻게 가르치나요?
답변
체크 아웃이 자원의 일부 :에 의해
Database Design for Mere Mortals(R): A Hands-On Guide to Relational Database Design (2nd Edition) :
또는 당신의 사람들 나는 데이터베이스 디자인을 배우기 위해 찾은 최고의 책을 얻을 마이크 에르난데스
3nf로 이동하여 렌더링 데이터에 집중하면 모든 것이 훨씬 간단해질 것입니다. 아니면 완전히 잘못된 경로로 가서 E/R 다이어그램을 사용하여 지옥을 혼란에 빠뜨릴 수 있습니다!
내가 배웠던 방식은 1NF, 2NF 3NF BCNF 등에서 올린 역사 수업 유형의 여행으로 구성되었습니다.
정말 관객에 달려 있습니다. 곧 3NF로 곧장 뛰어갑니다.
첫 번째 교훈 중 하나 - 가장 중요한 것 중 하나는 일반 양식이 데이터베이스가 아닌 개별 테이블에 적용된다는 것입니다. "테이블 'wibble'은 BCNF에 있지만"이 데이터베이스는 3NF에 있습니다. "라고 말하는 것은 이치에 맞지 않습니다.
데이터베이스 개발자를 상대 할 때 두 가지 큰 문제가 자주 발생합니다.
- 대표적인 샘플 데이터가 아닌 열 이름을 기준으로 테이블을 표준화하려고합니다.
- 기능 종속성을 이해하지 못했습니다.
이 두 가지는 상호 관련되어 있으며, 기능적 종속성은 열 이름의 관점이 아닌 값으로 정의됩니다.
데이터베이스의 모든 관계가 BCNF에서 정규화되면 관계형 데이터베이스가 BCNF에서 정규화됩니다. 1NF, 2NF 등에서도 비슷하게 작동합니다. <데이터베이스 시스템 개념 - Silberschatz, Korth, Sudarshan, 7.3.2> – Rire1979
"이 데이터베이스의 모든 테이블은 3NF에 있습니다"라고 말하는 것이 합리적입니다. 그러나 그것은 당신이 여전히 테이블에 대해 이야기하고 있기 때문입니다. 데이터베이스에 적용하여 2NF에서 3NF로 변경할 수있는 논리적 인 정보 보존 프로세스가 없습니다. 테이블을 2NF에서 3NF로 변경하기 위해 적용 할 수있는 논리적이고 정보 보존적인 프로세스가 * 있습니다. 2NF와 3NF는 기능 종속성의 관점에서 정의됩니다. 테이블 수준에서만 데이터베이스 수준에서 기능적 종속성이 존재하지 않습니다. –
정규화 규칙이 장기 투자의 역할을하며 이러한 규칙이 비정규 화 된 데이터베이스를 유지해야하는 경험을 통해 작성되었음을 이해했는지 확인하십시오.
군대에서 우리는 말을했습니다. "좋은 판단은 경험에 따른다. 경험은 나쁜 판단에서 나온다." –
나는 그것이 훨씬 더 중요 좋은 디자인을 가르 칠 발견 (적절한 경우 테이블을 조인하여 널 (null)을 사용하는 경우, 알고, 대리 키를 사용하는 경우, ...) 그리고이 개념이 명확 할 때, 그들에게 : 당신이 무슨 짓을 왜냐하면 실제로 1,2,3, ... NF 때문입니다 ...
이 방법은 이론이 당신을 방해하지 않으며 나중에 데이터베이스를 설계하고 나중에 알 수 있습니다. 내가 좋아하는 참조
음, 그래서 당신은 그가 가르치는 것을 가르치기를 원하십니까? 잘 됐네. 선형 대수학 선생님에게 선행 대수학을 가르치라고 말씀 드리겠습니다. 다른 사람에게 현명한 가르침을 줄 수있는 사람은 누구인가. – stefan
하나는 BCNF로 시작 이미 기초 개념 (관계, 후보 키 및 기능 종속성)에 대해 알고 가정 Fundamentals of Relational Database Design
롤 - 무료입니다. 구매할 필요가 없습니다! 이미지는 오래되었을 수도 있지만 이미지 뒤에있는 철학은 여전히 유효하며 오랜 기간 동안 유효하다고 강조합니다. – Leslie
입니다. BCNF는 설명하기가 훨씬 쉬우 며이 단계에서 완전히 무시되는 2NF, 3NF가 훨씬 더 중요합니다. 그런 다음 Join Dependency와 5NF를 설명하십시오.
나는 1980 년대에이 물건을 프로그래머에게 가르쳐왔다. 많은 사람들이 COBOL, BASIC 또는 C 언어로 10 년 이상 프로그래밍했지만 데이터베이스를 사용하지 않았습니다.
데이터베이스 디자인에 들어가기 전에 먼저 데이터베이스 프로그래밍을 먼저 가르쳐주었습니다. 그리고 저는 데이터베이스 설계에 들어가기 전에 ER을 사용하여 개념적 데이터 모델링을 가르쳤습니다. 그런 다음, 테이블 구성을 가르 칠 때 정규화가 자연스럽게 일어났습니다. 1NF, 2NF 및 3NF 만 가르쳤습니다. 다시 돌아가서 다시 할 수만 있다면 BCNF를 포함 할 것입니다.
해자는 중요하게 말하자면, 일종의 종교처럼 가르쳐서는 안됩니다. 정규화 규칙을 따르지 않을 때 어떤 일이 일어나는지 가르쳐주고 표준화를 위반하는 것이 타당 할 수있는 상황을 엿볼 수 있습니다. 너무 많은 초보자는 위반 같은 일종의 필사적 인 죄악이 이런 것들을 가르칩니다. 그렇지 않습니다.
"초보자가 너무 많으면 위반과 같은 일종의 필멸의 죄가 있음을 알게됩니다. 그렇지 않습니다." 사실 나는 Rooks에 대해 악의로 투표 할 것입니다. 그것은 선택의 여지가없는 디자인에 대해 표준화되지 않은 데이터베이스에 대한 필사적 인 죄입니다. V02_max가 낮은 격렬한 태도와 프로그래머가있는 곳입니다. – stefan
- 1. 이 경우 정규화를 해제해야합니까?
- 2. 정규화를 유지하면서 ESRI/ArcGIS 데이터베이스 성능을 향상시키는 방법은 무엇입니까?
- 3. 어떻게 데이터베이스
- 4. 데이터베이스 정규화가 여전히 필요합니까?
- 5. 어떻게 가입 데이터베이스
- 6. 데이터베이스 다이어그램을 어떻게 변환합니까?
- 7. 데이터베이스 구조를 어떻게 문서화합니까?
- 8. 데이터베이스 프로젝트를 어떻게 배포합니까?
- 9. 데이터베이스 구조는 어떻게 될까요?
- 10. 어떻게 SQL Server 데이터베이스
- 11. nodejs와 데이터베이스 통신 - 어떻게?
- 12. 일반적인 데이터베이스 정규화 시나리오
- 13. 어떻게 장고 데이터베이스 스키마를 테스트합니까?
- 14. 데이터베이스 벤더는 어떻게 트랜잭션을 구현합니까?
- 15. 데이터베이스 변경 사항을 어떻게 추적합니까?
- 16. Java에서 데이터베이스 입력을 어떻게 정리해야합니까?
- 17. 엔티티를 데이터베이스 모델과 어떻게 분리합니까?
- 18. linq2sql은 데이터베이스 객체를 어떻게 추적합니까?
- 19. 데이터베이스 모델의 예외는 어떻게 처리합니까?
- 20. 어떻게 데이터베이스 드라이버를 IDE에 설치합니까?
- 21. 데이터베이스 보안은 어떻게 실패 했습니까?
- 22. 어떻게 데이터베이스 상호 운용성을 보장합니까
- 23. 이 데이터베이스 열을 어떻게 업데이트해야합니까?
- 24. 데이터베이스 쿼리 시간은 데이터베이스 크기에 따라 어떻게 다릅니 까?
- 25. 효율적인 데이터베이스 구축에 대한 접근 방식
- 26. 마크 업을 허용하는 데이터베이스 열을 어떻게 검색합니까?
- 27. 데이터베이스 풀링 - Spring3, Hibernate, MySQL을 어떻게 추가합니까?
- 28. PHP에서 데이터베이스 쿼리의 숫자 값을 어떻게 반환합니까?
- 29. 어떻게 장고에서이 데이터베이스 모델을 할 수 있습니까?
- 30. java 데이터베이스 바인딩 오류를 어떻게 수정합니까?
당신은 데이터베이스에서 특히 'E/R 다이어그램 주석'에 대한 대학 과정을 요약했습니다. – kjy112