2011-01-25 4 views
0

숙련 된 데이터베이스 디자이너가 그려 낼 수 있는지 궁금합니다. 나는 데이터베이스를 구축하는 데별로 경험이 없으며 정해진 시간 (2 달) 내에 완료 할 프로젝트가 있습니다. 요구 사항은 세 번째 정규 형식으로 작성하는 것입니다.효율적인 데이터베이스 구축에 대한 접근 방식

시작하는 가장 좋은 방법은 무엇일까요? 앞으로 나아가고 개선 할 수있는 부분을 리팩터링하거나 처음부터 일정 수준의 정규화를 유지하기 위해 따라야 할 방법론이 있습니까? 가능한 한 효율적으로하려고 노력하는 무언가를 만들어야합니까?

답변

4

나중에 다시 돌아가서 정규화하려는 의도로 데이터베이스를 빌드하지 마십시오. 데이터베이스는 응용 프로그램 코드만큼 쉽게 리팩터링하지 않으며 다른 경우에는 세 번째 표준 형식을 따르라는 요구 사항이 있으므로 처음부터 그렇게하면 작업이 훨씬 적어지고 결과적으로 더 나은 제품이됩니다. 세 번째 정규 형식으로 데이터베이스 디자인을 수정하는 방법은 없습니다. deisgn을 시작하기 전에 그것이 무엇인지 명확하게 이해하십시오.

세 번째 정규 형식의 데이터베이스 dsign에 익숙하지 않은 경우 며칠 동안 데이터베이스 디자인에 대한 정보를 읽으십시오. 그런 다음 데이터베이스 성능 튜닝에 대해 하루 정도를 읽으십시오. 처음부터 데이터베이스를 잘 설계하면 많은 시간을 절약 할 수 있습니다. 무엇을해야하고 무엇을 피하는 지 알게되면 성능이 떨어지는 데이터베이스를 설계하는 것보다 오래 걸리지 않습니다. 그래서 당신에게 첫 번째 충고는 당신이 시작하기 전에 몇 가지 큰 뚱뚱한 책을 읽고 심층적으로 읽는 것입니다. 이 일을하는 데 소비하는 시간은 나머지 프로젝트를 통해 일을 더 잘 수행 할 수있는 능력에 잘 보상 될 것입니다.

+1

다음 링크부터 시작하는 것이 좋습니다. http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx – Leslie

2

확실히이 데이터베이스 레이어 위에 많은 레이어 (DAL, BAL, UI)를 작성합니다. 낮은 수준의 모든 변경 사항은 위쪽으로 거품이 생기고 데이터베이스 계층에서보다 더 많은 재 작업을 유발합니다.

나는 모든 디자인을 수행하고 데이터를 저장하는 데 필요한 최상의 정규화가 필요하다고 생각하지만 처음에는 예외없이 데이터를 저장해야합니다.

+0

그래서 처음에는 아무런 구성도없이 데이터베이스를 디자인해야합니까? – user559142

+0

예, 데이터 저장소를 처음부터 디자인하십시오. –

+1

데이터베이스는 건물과 같은 애플리케이션과 관련됩니다. 기초가 없어도 견고하고 견고한 건물을 만드는 것은 어렵지 않지만 불가능합니다. 건물 위에 서면 기초를 바꿀 수 없습니다. –

0

프론트 사이드 프로그래밍과 달리, 데이터베이스 구조를 리팩터링하는 것은 사용하기 쉽지만 고통 스럽지만 비실용적입니다.

백엔드 오른쪽의 구조를 앞쪽으로 가져 오는 것이 좋습니다. 좋은 소식은 세 번째 정규 형태가 일반적으로 습득하기가 어렵지 않다는 것입니다. 사실, 조금만 실천하면, 그 용어로 데이터를 생각하는 것은 거의 제 2의 천성이됩니다.

제 3 정규형은 본질적으로 테이블의 단일 레코드의 각 구성 요소가 해당 레코드의 키에 고유하다는 것을 나타냅니다. 고려 :

tblPerson : PersonID PK 성 FIRSTNAME 가운데 이름 DOB SSN IncomeSource IncomeAmount

위에서 정의 된 표는 소득 소스가 고유하지 않기 때문에, thrid 일반적인 형태가 아니다 테이블에있는 사람의 각 발병률은 사실 그 사람의 삶에 변화를 겪을 수 있습니다.

tblPerson PersonID을 PK 성 FIRSTNAME 가운데 이름 DOB SSN

tblPersonIncome PersonIncomeID PK PersonID FK tblPerson 다음으로 대신 한 (지나치게 단순한 환산) 상기 구조화 것 IncomeSourceID FK tblIncomeSource 소득 금액 AsOfDate

일부는 위의 자동 증가 ID 필드 내 사용에 대해 주장 할 것이다

tblIncomeSource IncomeSourceID IncomeSource

주 - 이러한 제 3 정규형을 위반하지 않지만, 그들은 또한 자연 키를 사용하지 않습니다.

백엔드가 점프에서 정상적으로 정상화되면 엔티티를 추가하거나 확장하는 것이 풋내기에서 수행하기가 훨씬 쉽습니다. 추가하기 전에 작성하는 프런트 엔드에 미치는 영향은 훨씬 적습니다.

어쨌든 백 엔드에서 앞면을 올바르게 디자인하거나 롤링을 받고 나중에 구조적 변경을 구현해야하는 불행이 심할 것입니다. 그렇지 않으면 새로운 집의 기초를 쏟아 부은 다음 나중에 건물을 설계하는 동안 필요에 따라 평면도를 변경하려는 계획과 조금 다를 수 있습니다.

관련 문제