2011-01-27 3 views
6

데이터베이스 정규화를위한 단계 및 지침은 무엇입니까? 좋은 컴퓨터 및 논리 기술을 가진 많은 사람들이 있다면 데이터베이스 설계를 표준화하는 방법을 그들에게 어떻게 설명합니까? 속성 (필드) 목록을 가져 와서 그 목록을 1NF의 데이터베이스로 변환하는 과정은 무엇입니까? 2NF? 3NF?데이터베이스 정규화를 어떻게 가르치나요?

답변

0

3nf로 이동하여 렌더링 데이터에 집중하면 모든 것이 훨씬 간단해질 것입니다. 아니면 완전히 잘못된 경로로 가서 E/R 다이어그램을 사용하여 지옥을 혼란에 빠뜨릴 수 있습니다!

+2

당신은 데이터베이스에서 특히 'E/R 다이어그램 주석'에 대한 대학 과정을 요약했습니다. – kjy112

0

내가 배웠던 방식은 1NF, 2NF 3NF BCNF 등에서 올린 역사 수업 유형의 여행으로 구성되었습니다.

정말 관객에 달려 있습니다. 곧 3NF로 곧장 뛰어갑니다.

0

첫 번째 교훈 중 하나 - 가장 중요한 것 중 하나는 일반 양식이 데이터베이스가 아닌 개별 테이블에 적용된다는 것입니다. "테이블 'wibble'은 BCNF에 있지만"이 데이터베이스는 3NF에 있습니다. "라고 말하는 것은 이치에 맞지 않습니다.

데이터베이스 개발자를 상대 할 때 두 가지 큰 문제가 자주 발생합니다.

  1. 대표적인 샘플 데이터가 아닌 열 이름을 기준으로 테이블을 표준화하려고합니다.
  2. 기능 종속성을 이해하지 못했습니다.

이 두 가지는 상호 관련되어 있으며, 기능적 종속성은 열 이름의 관점이 아닌 값으로 정의됩니다.

+0

데이터베이스의 모든 관계가 BCNF에서 정규화되면 관계형 데이터베이스가 BCNF에서 정규화됩니다. 1NF, 2NF 등에서도 비슷하게 작동합니다. <데이터베이스 시스템 개념 - Silberschatz, Korth, Sudarshan, 7.3.2> – Rire1979

+0

"이 데이터베이스의 모든 테이블은 3NF에 있습니다"라고 말하는 것이 합리적입니다. 그러나 그것은 당신이 여전히 테이블에 대해 이야기하고 있기 때문입니다. 데이터베이스에 적용하여 2NF에서 3NF로 변경할 수있는 논리적 인 정보 보존 프로세스가 없습니다. 테이블을 2NF에서 3NF로 변경하기 위해 적용 할 수있는 논리적이고 정보 보존적인 프로세스가 * 있습니다. 2NF와 3NF는 기능 종속성의 관점에서 정의됩니다. 테이블 수준에서만 데이터베이스 수준에서 기능적 종속성이 존재하지 않습니다. –

0

정규화 규칙이 장기 투자의 역할을하며 이러한 규칙이 비정규 화 된 데이터베이스를 유지해야하는 경험을 통해 작성되었음을 이해했는지 확인하십시오.

+3

군대에서 우리는 말을했습니다. "좋은 판단은 경험에 따른다. 경험은 나쁜 판단에서 나온다." –

0

나는 그것이 훨씬 더 중요 좋은 디자인을 가르 칠 발견 (적절한 경우 테이블을 조인하여 널 (null)을 사용하는 경우, 알고, 대리 키를 사용하는 경우, ...) 그리고이 개념이 명확 할 때, 그들에게 : 당신이 무슨 짓을 왜냐하면 실제로 1,2,3, ... NF 때문입니다 ...

이 방법은 이론이 당신을 방해하지 않으며 나중에 데이터베이스를 설계하고 나중에 알 수 있습니다. 내가 좋아하는 참조

+1

음, 그래서 당신은 그가 가르치는 것을 가르치기를 원하십니까? 잘 됐네. 선형 대수학 선생님에게 선행 대수학을 가르치라고 말씀 드리겠습니다. 다른 사람에게 현명한 가르침을 줄 수있는 사람은 누구인가. – stefan

2

하나는 BCNF로 시작 이미 기초 개념 (관계, 후보 키 및 기능 종속성)에 대해 알고 가정 Fundamentals of Relational Database Design

+0

롤 - 무료입니다. 구매할 필요가 없습니다! 이미지는 오래되었을 수도 있지만 이미지 뒤에있는 철학은 여전히 ​​유효하며 오랜 기간 동안 유효하다고 강조합니다. – Leslie

1

입니다. BCNF는 설명하기가 훨씬 쉬우 며이 단계에서 완전히 무시되는 2NF, 3NF가 훨씬 더 중요합니다. 그런 다음 Join Dependency와 5NF를 설명하십시오.

1

나는 1980 년대에이 물건을 프로그래머에게 가르쳐왔다. 많은 사람들이 COBOL, BASIC 또는 C 언어로 10 년 이상 프로그래밍했지만 데이터베이스를 사용하지 않았습니다.

데이터베이스 디자인에 들어가기 전에 먼저 데이터베이스 프로그래밍을 먼저 가르쳐주었습니다. 그리고 저는 데이터베이스 설계에 들어가기 전에 ER을 사용하여 개념적 데이터 모델링을 가르쳤습니다. 그런 다음, 테이블 구성을 가르 칠 때 정규화가 자연스럽게 일어났습니다. 1NF, 2NF 및 3NF 만 가르쳤습니다. 다시 돌아가서 다시 할 수만 있다면 BCNF를 포함 할 것입니다.

해자는 중요하게 말하자면, 일종의 종교처럼 가르쳐서는 안됩니다. 정규화 규칙을 따르지 않을 때 어떤 일이 일어나는지 가르쳐주고 표준화를 위반하는 것이 타당 할 수있는 상황을 엿볼 수 있습니다. 너무 많은 초보자는 위반 같은 일종의 필사적 인 죄악이 이런 것들을 가르칩니다. 그렇지 않습니다.

+0

"초보자가 너무 많으면 위반과 같은 일종의 필멸의 죄가 있음을 알게됩니다. 그렇지 않습니다." 사실 나는 Rooks에 대해 악의로 투표 할 것입니다. 그것은 선택의 여지가없는 디자인에 대해 표준화되지 않은 데이터베이스에 대한 필사적 인 죄입니다. V02_max가 낮은 격렬한 태도와 프로그래머가있는 곳입니다. – stefan

관련 문제