2016-08-10 6 views
0

데이터베이스 디자인에 일부 입력이 필요합니다.다른 테이블의 열에 대한 다중 열 고유 제한 조건

내가 모델링하려고 시도한 것을 요약 해주십시오 (database diagram 참조).

옵션 1 :

  • File의 항목이 적용된 하나 개 이상의 비용 요소가있을 수 있습니다.
  • 비용 요소에는 설명, 수량 (통화 또는 %) 할당 (질량, 부피 등) 및 값 (숫자)이 있습니다.
  • 복수 열 고유성은 FileIDCostDescriptionID의 조합으로 적용해야합니다.
  • 전문가 : 위의 요구 사항에 대해 데이터 무결성을 적용하기 위해 고유 색인을 만들 수 있습니다.
  • : 비용 요소 조합은 데이터 중복 - 재사용 할 수 없습니다.

옵션 2 : CostDefault, CostInputCostElement과의 엔트리의 중복을 줄이기 위해

  • CostElement2 세 테이블로 구분되어있다.
  • pro : CostInput을 사용하면 CostDescriptionID, CostMeasureIDCostAllocationID의 조합을 다시 사용할 수 있습니다.
  • pro : CostInputCostElementIDElementValue 조합의 재사용을 허용합니다.
  • FileIDCostDescriptionID의 조합에 대해 다중 열 고유 제한을 적용 할 수 없습니다.

더 나은 디자인 결정을 통해 두 가지 장점을 모두 누릴 수 있습니까?

도움을 주시면 감사하겠습니다.

감사합니다.

+0

왜 모든 단일 테이블에 Gw_ 접두사를 추가하고 있습니까? 아마도 스키마가 더 좋을까요? 나는 개인적으로 이와 같은 접두사를 싫어한다. 그들은 무의미한 타이핑을 추가하고 아무 것도 추가하지 않습니다. 또한 테이블 이름을 읽는 것이 더 어려워집니다. 그리고 왜 당신의 칼럼 이름 대부분의 중간에 GW가 있습니까? IdGwCostDefault 대신 CostDefaultID 같은 것을 할 것입니다.그리고 모든 비용 (타임 스탬프, 값, 이름, 설명 등 ...)에서 열 이름에 대한 예약어는 사용하지 않아야합니다. 손에 달려있는 질문에 관해서는 ... 글쎄, 당신이 무엇을 요구하고 있는지 정말로 이해하지 못합니다. –

+0

안녕하세요 숀, 내 질문에 답변 할 시간을내어 주셔서 감사합니다. 내가 게시하기 전에 질문을 읽을 때 나 자신에게 "구토물"이라고 생각했다. 제안 된 명명 변경 사항을 게시했습니다. Gw_ 접두어를 사용하는 이유는 이러한 테이블을 기존 ERP 데이터베이스에 추가하기 때문이며 사용자 정의 테이블을 추가하기위한 ERP 권장 지침은 특정 문자열 앞에 접두어를 붙이기 때문입니다. 또한 데이터베이스의 테이블을 그룹화하는 데 도움이됩니다. 나는 그 질문을 다시 말하려고 노력했고, 지금 내가 원하는 것을 분명히하기를 희망한다. 당신이 친절하게 논평 할 수 있다면. 감사. –

+0

나는 그 문서를 무시할 것이다. 그건 좋은 제안이 아닙니다. 새로운 스키마를 만드는 기괴한 접두사 대신에 훨씬 더 좋을 것입니다. 객체 탐색기에서 항목과 같이 그룹화되지만 불합리한 이름과 씨름하지 않아도됩니다. 나는 진실로 당신의 질문을 완전히 이해하지 못한다. 그러나 옵션 2는 그것이 당신이 원하는 것에 더 가까운 것처럼 들린다. 옵션 1은 많은 양의 고통을 유발하는 비정규 화 된 디자인과 같습니다. –

답변

0

옵션 1 인 단일 테이블을 사용하는 것이 좋습니다. 이 경우, 필자는 컬럼 조합을 더 이상의 정규화가 필요한 재사용으로 간주하지 않을 것입니다.

FileIDCostElementID 순으로 복합 기본 키를 만들면 좋습니다.

내 이름에 대한 유일한 의견은 "File"이라는 이름의 테이블에 불편합니다. 그것 이외에, 당신은 괜찮아 보인다.