2012-12-20 5 views
0

내 데이터베이스의 다음 구조에 대한 도움이 필요합니다. 테이블 수준과 외래 키 간의 관계

지금 내가이 일을 구조하는 데 필요한 테이블

  1. 가격표
  2. OptionalGroup
  3. ProductGroup
  4. 제품이며, 마지막 테이블 아티클에서 시작 할 수 있습니다.

    제품이 제품에 속한 다음 제품이 productgroup에 속한 다음 productGroup이 OptionalGroup에 속하며 OptionalGroup이 PriceList에 속합니다.

    그리고 오늘 관계는 이렇게 보입니다.

    • 테이블 : 가격표
    • 테이블 : OptionalGroup는
    • 표를 PriceListId하는 외래 키가 있습니다

      : 제품

    샘플 데이터를 ProductGroup하는 외래 키가 있습니다 ProductGroup는 외래 키는

  5. 표를 OptionalGroup한다
    > Pricelist: 81 
        > OptionalGroup: Shoes 
         > ProductGroup: Shoelace 
         > Product: Shoelace 1 
         > Product: Shoelace 2 
    

    어떻게 설계해야합니까?

    이 방법으로 제품을 얻으려면 지금 pricelist, optionalgroup, productgroup이 필요합니다. 그런 다음 제품을 얻을 수 있습니다. pricelist는 자신의 OptionalGroup을 가지고 있기 때문에 동일한 선택 그룹 이름을 가질 수도 있습니다.

+0

그리고 무엇이 문제입니까? – vptn

+0

해당 계층의 모든 수준이 항상 필요합니까? –

+0

@ wp91 .. 어떻게 설계해야합니까? 질문입니다;) 그냥 내 텍스트를 읽으십시오. –

답변

1

나는이 어떻게 설계해야 하는가?

이미 수행 했음;) 데이터 모델이 사용자가 요구 사항을 설명하는 데 적합하다고 보입니다.

근본적으로 기본 아이디어를 변경하지 않고 가능한 몇 가지 변형이 있습니다. 예를 들어 ...

enter image description here

이 ... 아이들에게 부모의 PK와 "를 마이그레이션"을 identifying 관계를 사용하면 (예를 들어)을 Product 테이블, ProductGroup에 가입하지 않고 직접 PriceListId를 얻을 수 있도록 OptionalGroup 테이블이지만 "더 살찐"아동 FK의 가격.

식별 할 수없는 관계가있는 디자인이 여기에 표시된 디자인보다 우수한 지의 여부는 엔지니어링상의 문제입니다. 둘 다 찬반 양론이 있고 당신의 특별한 경우를 위해서 보다 더 많은 찬성과 단점을 가지고 선택하는 것이 당신의 임무입니다..


또한, 경우에 PriceList 테이블에 (other fields) 없다, 당신은, 당신이 할 수있는 빈 가격 목록을 가질 수 없어 (또는 단순히 비어 존재하지 않는 가격 목록을 구분하지 않음) 그 표를 ​​완전히 생략하십시오.

0

이 디자인 할 것,

table name PriceList 
ProductID--> PK 
Price 
table name OptionalGroup 
GroupID--> PK 
ProductID--> FK 
GroupName 
table name ProductGroup 
ProductGroupID--> PK 
ProductGroupName 
GroupID--> FK 
table name Product 
ProductName 
ProductGroupID-->FK