2017-01-04 2 views
-1

이 관계가 주어지면 1 차 키와 2 개의 후보 키는 무엇이 될까요? 고객 - 이름, 고객 - 성함, 고객 주소 (집 번호/이름, 우편 번호, 도시, 카운티, 국가) 컴퓨터 수술 : {고객 성 (고객 성), 고객 성, (Staff-Firstname, Staff-Lastname), staff-Email, {staff-Qualifications, 고객 - 피드백, 고객 피드백 점수, 고객 유형, 요청 날짜/시간, }, 서비스 유형, 서비스 설명, 서비스 이름, 서비스 가격, 할인 된 가격, 위치 정보, 제공된 날짜/시간, 총 가격}이 관계에있는 기본 키와 후보 키는 무엇입니까?

서비스 이름은 귀하의 짧은 이름입니다. 서비스 예. 바이러스 백신 설치 서비스 설명은 서비스에 대한 전체 설명입니다. 바이러스 백신을 설치하면 컴퓨터를 검사하고 바이러스를 제거하고 깨끗하고 바이러스 백신이 제대로 작동하는지 확인해야합니다. 서비스 유형은 하드웨어, 소프트웨어, 유지 보수 등일 수 있습니다 ... 서비스 가격은 서비스 테이블에 대한 서비스 테이블의 가격입니다. 언제든지 변경할 수 있습니다. 제공 가격은 고객과 합의한 가격이므로 변경해서는 안됩니다.

미리 감사드립니다.

+0

숙제 문제가 있습니까? – jabs

+0

아니요, 그것을 통해 읽으면 나는 그 같은 소리가 나는 것을 알지만,이 데이터에 관해 전혀 알지 못하는 것은 – jdoggg

+0

입니다. 좋은 후보자는 전자 메일 일 것입니다. 왜냐하면 전자 메일은 고유하기 때문입니다. 이메일 당 둘 이상의 고객이 없다면 이름과 같은 다른 열을 추가해야합니다. 일부 DB는 다중 열 PK (복합)을 허용하지만 일부는 그렇지 않습니다. 숫자 열이 포함 된 새 열을 추가하고이를 PK로 사용할 수 있습니까? – jabs

답변

0

처음에는 숙제에 대한 잘못된 디자인을 생각해 본 사람이 없으므로 숙제 문제는 아닙니다. 1NF 일 수도 있지만 후보 키의 조각에 의존하는 많은 데이터를 가지고 있기 때문에 분명히 2NF가 아닙니다. 이것이 소프트웨어이기 때문에 첫 번째 조언은 적어도 3NF에이 관계를 정상화하는 것입니다.

기본 키가 (customer_email, staff_email, service_type, served_datetime)이되어야한다고 생각합니다. 나는 다른 후보 열쇠가 없다. 그리고 적어도 4 개의 테이블로 분리되어야합니다.