2016-09-12 12 views
1

맨 먼저이 글은 내가 이해할 수없는 과거 숙제를위한 것임을 말씀 드리고자합니다. 이 특정 질문에 대한 정규화에 문제가 있습니다.외부, 기본 키, 1nf, 2nf, 3nf 주어진 테이블 및 기능 종속성을 확인하십시오.

주어진

1.PetStore(storeBranchName, storeAddr, storeManager,(customerName, customerAddr, customerPhone,(petName, petBreed, petSex, price))) 

FDS

storeBranchName → storeAddr, storeManager 
customerName → customerAddr, customerPhone 
customerName, petName → petBreed, petSex 
customerName,storeBranchName → petName 
petBreed → price 

. 이 관계가 1NF에 있습니까? 그렇지 않다면, 왜 그렇지 않습니까? 그런 다음 1NF에 넣으십시오.

b. 이 관계가 2NF에 있습니까? 그렇지 않다면, 왜 그렇지 않습니까? 그런 다음 2NF에 넣으십시오.

c. 이 관계가 3NF에 있습니까? 그렇지 않다면, 왜 그렇지 않습니까? 3NF에 넣으십시오.

d. 관계에 대한 기본 키 (밑줄) 및 외래 키 (기울임 꼴)를 식별합니다.

내 질문은 지금 내가 어떤 형식인지 어떻게 알 수 있을까요? 솔루션을 시도해보십시오.

a. 테이블은 각 값 원자 값

1NF

PetStore(storeBranchName, storeAddr, storeManager,customerName, customerAddr, customerPhone,petName, petBreed, petSex, price) 

에 있지 않기 때문에 여기 **** 1NF 아닌 제가 갖는 문제점 ****

B 시작 곳이다. 이

2NF

store(storeBranchName, storeAddr, storeManager) 
customer(customerName, customerAddr, customerPhone) 
pet(petName,petbreed,petsex) 

C 1NF하지 않았기 때문에 관계가 2NF에있을 수 없습니다.?

3NF

store(storeBranchName, storeAddr, storeManager) 
customer(customerName, customerAddr, customerPhone) 
pet(petName, petBreed, petSex) 
petCust(customerName,storeBranchName, petName) 
petPrice(petBreed, price) 

D

. 난 정말 문제가 기본 키가 여기에있을 것이라고 결정하고 정말 외래 키의 cocnept을 이해하지 않습니다. 아무도 나에게 힌트 나 단서를 줄 수 없다면 나는 잘못한 것을 바로 잡아주지 않으면 바로 대답을받지 않는 것을 선호한다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

할당 구조가 올바르지 않습니다. 질문 a, b 및 c는 "이 관계"를 의미하며 원래의 관계를 나타내는 것으로 해석되는 경우 b 및 c에 대한 대답은 "1NF에 없기 때문에"시작됩니다. b와 c가 앞의 질문에 대한 답을 언급한다면 그것은 학생의 이해를 테스트하는 좋은 방법이 될 것입니다. 또한 각 단계마다 질문 d를 적용해야합니다.

또한 주어진 FD customerName,storeBranchName → petName에 질문합니다. 상식에 위배됩니다 (고객은 상점 당 애완 동물 한 개만 살 수 있습니다). 그렇다면 원래 중첩 된 관계는 (petName, petBreed, petSex, price)을 중첩 할 필요가 없습니다. 아마도 그것은 기존의 질문에 추가되어 그것을 복잡하게 만들었을 것입니다.

귀하의 대답은 정확하지만 원본 관계에서 식별 된 집합, 튜플 또는 관계 값 속성 또는 기존의 "반복 그룹"에 대한 언급이 필요합니다. 위에서 말한 것처럼 각 단계에서 식별 된 키를보고 싶습니다. 주어진 FD에서 customerName,storeBranchName이 1NF 관계에 대한 후보 키임을 확인할 수 있습니다.이 속성 세트에 대한 FD의 종료를 유도하여이를 증명하십시오.

질문 b의 경우 부분 종속성을 보여줌으로써 질문 a에 대한 대답이 2NF에없는 이유를 설명하십시오. 귀하의 2NF 관계는 1NF 답변의 정규화를 따르지 않습니다. customerName, storeBranchNamecustomerName,storeBranchName으로 각각 3 개의 관계가 있어야합니다.

질문 C의 경우 왜 전이 종속성을 보여줌으로써 질문 b에 대한 대답이 3NF에없는 이유를 설명하십시오. 3NF 관계는 2NF 답변을 따르지 않지만 정답에 가깝습니다. 올바른 애완 동물 관계는 pet (customerName PK, petName PK, petBreed, petSex)입니다.

기본 키는 정규화 프로세스를 통해 유지 관리되고 파생되어야하며 사실 이후에는 "결정"되지 않습니다. 기본 키는 한 번만 식별해야하며, 1NF의 경우 다른 키는 정규화를 따라야합니다.

외래 키의 개념은 관계형 모델과 구형 네트워크 모델에서 다른 것을 의미합니다. 관계형 모델에서, 외래 키 제약은 단지 부분 집합 무결성 제약이다. petCust.customerName ⊆ customer.customerName. 네트워크 모델에서는 petCustcustomer 레코드 사이의 관계를 나타냅니다. 두 모델을 공부하고 비교하는 것이 좋습니다.

희망이 있으면 도움이 될 수 있으며 의견에 질문 할 수 있습니다.