2010-02-10 5 views
4

데이터베이스 정규화에 신입생을 돕는 도구 또는 온라인 리소스 (FREX 자습서)가 있습니까?데이터베이스 정규화에 도움이되는 도구 또는 웹 사이트

+1

정규화에는 도구가 필요하지 않습니다. –

+2

@ 밀 브라운 : 왜? –

+0

@ The Machine Charmer : 데이터베이스 설계자는 도메인과 관련하여 모델링 대상을 이해해야하기 때문에. –

답변

7

An Introduction to Database Normalization

위키 :

Database Normalization Tips

관계형 데이터베이스 설계 이론적으로 잘 설계된 데이터베이스을 달성, 정규화 규칙은 잘 설계된 데이터베이스에 또는 결석해야하는 특정 속성을 식별합니다. 테이블이 식별자을 가져야한다

  • : 는 당신이 소리 데이터베이스 설계를 달성하는 데 도움이 할 수있는 몇 가지 규칙이 있습니다. 데이터베이스 디자인 이론의 기본 규칙은 각각의 테이블 이 고유 한 행 식별자 열 또는 테이블의 다른 모든 레코드를 구별하는 데 사용되는 열 집합을 사용해야합니다. 각 테이블에는 ID 열이 있어야하며 두 개의 레코드가 동일한 ID 값을 공유 할 수 없습니다. 을 테이블의 고유 한 행 식별자로 사용하는 열은 테이블의 기본 키입니다. AdventureWorks 데이터베이스에서 각 테이블에는 기본 키 열로 ID 열 이 포함되어 있습니다. 의 경우 VendorID는 Purchasing.Vendor 테이블의 기본 키입니다.

  • 테이블에는 단일 유형의 엔터티에 대한 데이터 만 저장해야합니다. 테이블에 너무 많은 정보를 저장하려고 시도하면 테이블의 데이터를 효율적이고 안정적으로 관리 할 수 ​​없습니다. AdventureWorks 예제 데이터베이스에서 판매 주문과 고객 정보는 별도의 테이블에 저장됩니다. 판매 주문과 고객 모두에 대한 정보가 단일 테이블에 포함될 수 있지만이 디자인은 몇 가지 문제를 발생시킵니다.고객 판매 주문마다 정보, 이름 및 주소가 중복되어 추가되고 이어야합니다. 데이터베이스에 추가로 저장 공간을 사용합니다. 고객 주소가 인 경우 각 판매 주문에 대해 변경을해야합니다. 고객의 마지막 판매 주문이 Sales.SalesOrderHeader 테이블에서 제거 된 경우 해당 고객에 대한 정보가 손실됩니다.

  • 테이블은 nullable 열을 피하려고합니다. 테이블에는 null 값을 허용하도록 정의 된 열 이있을 수 있습니다. A null 값은 값이 없음을 나타냅니다. 격리 된 경우에 null 값을 허용하는 것이 유용 할 수 있지만, 드물게 사용해야합니다. 처리가 필요하기 때문에 데이터 작업이 복잡해질 수 있습니다. 여러 개의 null 입력 가능 열이있는 테이블의 경우 행에 null 값이 인 경우 테이블에 연결된 다른 테이블에이 열을 넣어야합니다. 개의 별도 테이블에 데이터를 저장하면 기본 테이블은 으로 단순 할 수 있으며이 정보를 저장해야하는 경우가 종종 있습니다. .

  • 표에는 반복되는 값이나 열이 있어서는 안됩니다. 데이터베이스에있는 항목의 표는 특정 정보에 대한 값 목록이 포함되어 있지 않아야합니다 ( ). 예제의 경우 AdventureWorks 데이터베이스의 제품은 여러 공급 업체에서 구입 한 일 수 있습니다. Production.Product 테이블에 공급 업체의 이름이 인 열이 있으면 문제가 발생합니다. 한 솔루션은 모든 공급 업체의 이름을 열에 저장하는 것입니다. 그러나 때문에 개별 공급 업체의 목록을 표시하기가 어렵습니다. 다른 솔루션은 테이블의 구조를 변경하여 의 다른 열을 두 번째 공급 업체의 이름으로 추가합니다. 그러나 이렇게하면 두 개의 공급 업체 만 허용됩니다. 또한 책에 개의 공급 업체가있는 경우 다른 열 을 추가해야합니다. 당신은 당신이 하나의 열에 저장소에 값 목록이 있거나 단일 데이터의 조각, 등 TelephoneNumber1로하고, TelephoneNumber2에 대해 여러 열이있는 경우, 당신은 중복 된 데이터를 넣어 을 고려해야 찾을 경우 다른 테이블에 링크가 기본 테이블로 돌아갑니다. AdventureWorks 데이터베이스에는 제품에 대한 Production.Product 테이블 정보, Purchasing.Vendor 테이블 공급 업체 정보 테이블 및 세 번째 Purchasing.ProductVendor 테이블 정보가 있습니다. 이 세 번째 테이블은 제품의 ID 값 과 제품의 ID 만 저장합니다.이 디자인은 테이블의 정의를 수정하지 않고 단일 공급 업체에 제품에 할당하지 않고도 제품에 대해 여러 공급 업체를 허용합니다.

Ref.

2

가장 좋은 해결책은 형식을 정규화하는 방법,이 작업을 수행하는 데 필요한 도구에 얼마나 오래 의존 하는지를 완전히 이해할 수 있어야한다는 것입니다. study a bit about it으로 제안하여 최상의 솔루션을 스스로 찾아 낼 수 있습니다. 개발자로서, 지금 당장이 문제에 직면하게 될 것입니다. 면접은 어떨까요?

http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html

출처 : : 그리고 미치 밀 말했듯이, 정상화 도구 : 여기

할 필요가 없습니다 당신이 응시 얻기 위해 좀 더 많은 자원입니다 MySQL은 웹 사이트 (공식)은

2

초보자로서 나는 Relational Database Design을 사용했습니다.

큰 저를 믿으십시오! (이는 작동하며 초보자에게 필수적인 전제 조건을 요구하지 않기 때문에). 4 페이지에서 정규화를 다룹니다.

+0

oops my mistake! –

4

저는 개념 데이터베이스 설계에 NORMA을 사용합니다. 한 가지 부작용은 적절히 표준화 된 데이터베이스에 대한 스키마를 생성한다는 것입니다.

+1

+1 ... 일반 영어로 관계, 카디널리티 등을 포착하고 비 기술자가 이해할 수 있습니다. – gbn

+0

Open Office와 호환되는 버전이 있다고 생각하지 않습니까? – aslum

+1

@aslum : 어떤 방식 으로든 호환 가능합니까? NORMA는 Visual Studio 확장 프로그램입니다. 소스 코드는 SourceForge에서 사용할 수 있습니다. 특수한 출력 형식을 원하면 사용자 정의 할 수 있습니다. 특히 Open Office에서 XML 형식을 사용하는 경우 출력이 XSLT에 의해 결정된다는 것을 알고 있습니다. –

5

도구를 사용하지 않아야한다는 아이디어는 단지 사려없는 이데올로기입니다. 수학자들은 계산을 모두 할 수 있지만 계산기를 사용합니다. 노마가 좋다, 나는 그걸로 시작하겠다.

0

1 : 사람이하는 그런 코멘트를 만드는 사람 때문에 도구가 필요하지 않습니다 당신이 정상화를 알려줍니다 사람 말 듣지 마 문제를 이해하지 못한다.

2 : "일반 형식"은 데이터베이스 디자인의 품질 측정 값으로 가장 잘 나타납니다. 예를 들어, 더 높은 표준 형식의 데이터 스키마는 데이터 중복성이 적고 업데이트 이상이 발생하지 않아 프로그램 코드가 적게 든다는 것을 의미합니다.

3 : 정규화가 필수적이라면 어떻게해야할까요?

이것에 대해 많은 이야기는 그래서 난 그냥 언급 할 것이다이 두 :

방법 1 : 기능 분해 (FD) 가 지금은 적어도 하나의 유명한 대학 교수는 FD 방법을 가르치는 경우가 . 이 비디오보기 : "Stanford University Video on functional decomposition". 불행히도 (그리고 미안 제니퍼),하지만 기능적 분해는 매우 복잡하고, 오류가 발생하기 쉽고, 내 견해로는 완전히 작동하지 않습니다. (예 : 처음에 올바른 "메가"관계를 파악하는 방법)

방법 2 : NORMA 도구를 사용하여 다섯 번째 정규 형식 스키마를 자동으로 생성합니다. NORMA 도구는 무료이고 그것을 당신이 my website.

해피 모델링에 대해 자세히 알아볼 수 있습니다 비주얼 스튜디오 2013의 무료 버전에서 실행됩니다.

PS 나는 20 년 이상 객체 역할 모델링 방법을 사용하고있다.

관련 문제