2012-03-21 3 views
0

을 연결 제한 기능 이제이 제대로 작동 전부입니다
데이터베이스 설계는 현재 나는 다음과 같은 관계 데이터베이스가 기록

,하지만 난 EngagementLetters의 이름으로 테이블을 만들려면 -
한 서비스 (서비스 라인의 기본적 테이블 서비스 이름을 통해) 여러 EntityServices 있습니다. 그것은 다음과 같은 관계가 있어야합니다 있어야합니다 하나의 EngagementLetter 아래에있는 모든 EntityServices :


하나의 클라이언트가 여러 (클라이언트 이름을 통해) EngagementLetters
한 EngagementLetters을 가지고하는 것은 (참여 편지 ID를 통해) 여러 EntityServices
하고 까다로운 일이있다 같은 클라이언트

나는 마지막 점을 제외하고 위의 것을 만들 수 있었다. 그것은 나를 곤란하게했다, 나는 그것을하는 방법을 전혀 모른다! 누구든지이 일을 도울 수 있습니까?


건배,
앤드류 이와 같이

답변

2
 Client 
    ^ ^
    |  | 
    |  Entities Service 
    Eletter ^  ^
     ^  |   | 
     |_______ EntityServices 

?

"한 고객이 여러 EngagementLetters있다 (클라이언트 이름을 통해이 -이 유일하다)"

왜 클라이언트 이름

? 엔티티와의 관계에 클라이언트 ID를 사용했습니다. 클라이언트 이름을 고유하게 만드는 것은 좋지만 다른 관계에 대해 다른 키를 사용하는 것은 좋지 않습니다. 외부 키는 일반적으로

(? 내가 클라이언트 ID입니다 가정) 기본 키를 가리켜 야 "하고 까다로운 하나 하나 EngagementLetter 아래의 모든 EntityServices이 같은 클라이언트가 있어야합니다"

당신은 무엇을 의미합니까? EntityServices와 클라이언트 사이에 관계가 있습니까? 엔티티를 통해 하나가 있는데, 관련 엔티티 부모 행에서 파생 된 클라이언트 ID를 의미합니까? 약혼서에 링크 된 고객과 어떤면에서 관련이 있습니까?

규칙을 설명 할 때 규칙을 적용하기 만하면 클라이언트와 계약서에 링크하고 엔티티 서비스에서 링크하는 새 테이블을 만드는 것을 고려해야합니다. 그러나 클라이언트/약 결합 문자 조합이 특정 비즈니스 규칙을 구현하는 추상적 구성이 아닌 특정 종류의 개체라는 사실을 입증 할 수있는 경우에만 좋은 선택입니다.

비즈니스 규칙 인 경우 트리거 또는 응용 프로그램 논리를 사용하여이를 적용하고 데이터 구조 간의 관계를 나타내는 데만 외래 키를 예약해야합니다.

+0

답장을 보내 주셔서 감사합니다. 네가 그린 그림은 맞다. 죄송합니다. 약간의 실수를했습니다. 실제로 관련 관계에 클라이언트 이름 만 사용했습니다. EntityServices와 Client간에 직접적인 관계는 없지만 Entity가 단일 클라이언트에 연결되어 있고 EntityService가 단일 Entity에 연결되어 있으므로 EntityService가 단일 클라이언트에 간접적으로 연결되어 있으므로 연결이 있습니다. 마찬가지로 단일 EntityService는 단일 클라이언트에 간접적으로 연결됩니다 (각 EntityService는 하나의 EngagementLetter에 연결되고 각 EngagementLetter는 하나의 클라이언트에 연결됨). – andrewb

+0

나쁜 휴식에 대해 죄송합니다 - 여전히 Stackoverflow 형식을 알아 냈어! – andrewb

+0

@andrewb는 "EntityService는 간접적으로 단일 클라이언트에 연결됩니다", "마찬가지로, 단일 EntityService는 단일 클라이언트에 간접적으로 연결됩니다"라고 반복해서 생각하는 것 같습니다. 내 질문은 간접적으로 엔티티를 통해 엔티티 서비스에서 링크 된 클라이언트가 엔티티 서비스를 통해 간접적으로 링크 된 클라이언트와 동일해야합니까? 그렇다면 엔티티와 엘레 터 모두에 클라이언트 이름을 포함하는 복합 키를 제공하고 엔티티 서비스에이 두 가지를 가리키는 단일 클라이언트 이름을 제공하는 것을 고려할 수 있습니다. –