2012-01-30 3 views
0

그냥 숙제에 대한 질문입니다. 도움이 될만한 점이 있습니다.간단한 데이터베이스 - 디자인 문제

는 분명히,이 데이터베이스 설계의 디자인 세 가지 문제가 있습니다 :

Account = {AccNumber, Type, Balance} 
Customer = {CustID, FirstName, LastName, Address, AccNumber} 

꽤 분명 하나는 'CustID가'AccNumber '가 존재하는 경우 쓸모없는 것입니다.

두 번째 및 세 번째 문제에 대해서는 잘 모르겠습니다.

'FIRSTNAME'과 '성을위한 별도의 특성에 문제가있는 이름', 우리가 사용 캔트 ''?

그리고 또 다른 옵션을 경우 'AccNumber은'기본 키가 (가정에게 CustID가 될 것입니다

예를 들면 : :) 제거, 아마 처음에 위치해야합니다!

Customer = {AccNumber, Name, Address} 

모든 입력을 감상 할 수있다

감사

답변

3

고객 계정 관계는 언뜻보기에 중개 관계 테이블을 사용해야하는 많은 관계로 보입니다. 예를 들어, 내 은행에 내 계정 3 개가 있습니다. 또한, 아내는 자신의 두 가지가 있습니다. 마지막으로 공유 계정이 있습니다. 위의 스키마는 그러한 관계를 제대로 처리 할 수 ​​없습니다.

실제로 "이름"을 사용할 수는 있지만 미래의 어떤 시점에서 성과 이름이 무엇인지 알 필요가있을 수 있습니다. 그러한 연결은 분리하는 데 상당히 어려울 수 있습니다.

숙제와

행운을 빕니다 ...

+0

-1 @ tyjkenn의 답변에서와 같이 가정을하기 위해 -1이지만 이름에 대한 그의 질문에 대답 할 때 +1. –

3

문제는 데이터베이스 말로 표현해야하는지 우리를 제출하지 않은 것입니다; 디자인이 무엇을 모델링해야하는지 알지 못하기 때문에 이제는 디자인에 "잘못된"것이 없습니다.

분명히 테이블의 기본 키 역할을하므로 CustID은 쓸모가 없다고 말할 수 없습니다. 결정할 필요가있는 것은 고객과 계정 간의 관계입니다. 그것은 다음 중 하나 여야합니다 : 단일 고객이 여러 계정에 연결 할 수 있습니다

  1. 하지만, 하나의 계정이 하나의 고객이 하나 개의 계정에 연결 할 수 있습니다
  2. 단일 고객에 묶여 될 수 있지만, 여러 고객에게 계정을 묶을 수 있습니다. ,
  3. 단일 고객
  4. 여러 계정에 연결 할 수 있으며, 하나의 계정은 Customer 테이블에 AccNumber으로, 현재 여러 고객

에 연결 할 수있는 설계 모델 # 2.

+0

답장을 보내 주셔서 감사합니다. 할당에서 언급 된 유용한 정보의 유일한 추가 부분은이 테이블이 '은행 계좌'에 사용된다는 것입니다. –

+0

고객 필드의 'AccNumber'를 제거하고 추가 테이블을 추가하는 것이 더 적절한 설정이라고 가정합니다. CustomerAccounts = {CustID, AccNumber}. 새 계정 테이블은 다음과 같습니다 : 계정 = {AccNumber, Type, Balance}. –

+0

@ GregorioDiStefano : 이는 고객이 계정을 이해하지 못하는 * 경우 * 또는 계정을 여러 고객에게 연결할 수있는 경우에만 의미가 있습니다. 둘 다 맞지 않으면 (정확히 한 고객에게 계정이 연결됨을 의미),'Account' 테이블에'CustId' 열이 있어야합니다. –

0

현재 어떻게 설계되고 있으며, 각 고객은 하나의 은행 계좌 만 가질 수 있습니다.

다 - 대 - 다 관계가 문제가됩니다. 대신 관계를 보유하는 세 번째 테이블을 작성할 수 있습니다.예를 들어 :

Account = {AccNumber, Type, Balance} 
Connection = {ConnID, AccNumber, CustID} 
Customer = {CustID, FirstName, LastName, Address} 

이 방법, 계정 및 고객 모두가 (더 나은 이름의 부족) 연결이 부모가된다. 특정 연결 번호로 모든 연결을 쿼리하고 해당 계정을 사용하는 모든 고객을 찾을 수 있으며 그 반대의 경우도 가능합니다.

+1

ConnID는 중복됩니다. 이러한 테이블의 기본 키는 AccNumber와 CustID가 될 수 있습니다. CustID-AcctNumber 관계가 중복되는 것을 원하지 않습니다. – Rob

+0

-1은 근거가없는 요구 사항 (즉, '고객'과 '계정'사이에 M : M 관계가 있어야 함)에 대한 가정을하기 때문에. 가정이 정확할 수도 있지만 (우리는 알지 못합니다),이 질문은 아무런 의미가 없습니다. –