2015-01-14 4 views
1

현재 자체 데이터베이스와 중앙 데이터베이스의 데이터를 사용하는 많은 프로젝트 중 하나를 개발 중입니다.MS SQL Server : 중앙 데이터베이스 및 외래 키

예 : 모든 회계 패키지 관련 테이블이있는 데이터베이스 "회계". 의 특정 테이블

그러나 우리는 또한 일반적이며, "국가", "도시"와 같은 모든 프로젝트에 사용되는 데이터를 사용하여 데이터베이스 "personelladministration는"... 그래서 우리는 이러한 테이블을 뒀다 "일반"이라는 별도의 데이터베이스

우리는 데이터베이스간에 외래 키를 작성할 수있는 DB2 환경에서 왔습니다. 그러나 데이터베이스간에 외래 키를 넣을 수없는 MS SQL 서버로 전환하고 있습니다.

나는 그 해결 방법이 트리거를 사용하는 것으로 보았지만 깨끗한 해결책이라고 확신하지 못했습니다.

설정에 문제가 있습니까? 모든 데이터베이스에 테이블 "국가"가있는 대신 일반 데이터가 포함 된 테이블을 별도의 데이터베이스에 저장하는 것이 나에게 맞는 것처럼 보일 수 있으므로이 솔기는 유지하기 어렵고 비효율적입니다.

이것을 극복하기위한 좋은 접근 방법은 무엇일까요?

+0

답변 [여기] (http://stackoverflow.com/questions/4452132/add-foreign-key-relationship-between-two-databases)을 읽으십시오. 아마 그들은 당신의 의심을 해결할 것입니다. – dario

+0

나는 데이터를 구성하는 방법에 대한 내 질문에 대한 구체적인 대답을 찾을 수 없습니다. – randomizer

답변

1

나는 여러 국가에서 국가가 여러 데이터베이스에서 재현하기에는 끔찍한 테이블이 아니라고 말할 것이다. 나는 좀 더 정교한 기법을 사용하는 것보다 정적 데이터를 복제하려고합니다. SQL Server에는 데이터베이스 당 하나의 실제 스키마가 있으며 스키마를 공유 할 수 없습니다. 이것이 사람들이 공유 데이터에 대해 복제 또는 트리거를 사용하는 이유입니다.

나는이 문제에 대해 잠시 뒤처 질 수 있습니다. 인증을 위해 하나의 데이터베이스가 있지만,이 중 일부는 자체 데이터베이스가있는 여러 응용 프로그램에서 공유해야합니다.

Here is my question on this topic.

우리는 복제 및 사용자 정의 인증/등록 서비스 에이전트를 사용하여 데이터를 데이터에 보관했습니다.

그의 대답에서 제안한 Sourav_Agasti에서보기를 사용하면 정적 데이터에 대한 가장 직접적인 접근 방식이됩니다. 뷰와 인덱싱 된 뷰를 만들고 연결된 서버의 데이터베이스에서 데이터를 조인 할 수 있습니다.

0

루프백 연결된 서버를 만든 다음이 연결된 서버를 통해이 "중앙 데이터베이스"의 테이블에 액세스하는보기 (필요한 경우 각 데이터베이스에서)를 만듭니다. 미성년자 성능에 영향을 미치지 만 매우 모호하여 충분히 보상합니다.

+0

왜 이렇게 좋을지 모르겠다. 나는 여전히 외래 키를 만들 수 없기 때문에. 따라서 두 데이터베이스 간의 조인을 사용하여 쿼리를 만들 수 있습니다. 왜 뷰가 필요합니까? – randomizer

+0

이전에 귀하의 요구 사항을 얻지 못했습니다. 이 경우 내 대답을 편집 할 것입니다. – SouravA

+0

지금 내 대답을 확인하십시오. – SouravA