2012-04-21 102 views
0

我有一个公司表,它包含我公司与公司开展业务的所有公司,并且它驻留在公司数据库中。创建与外部SQL Server数据库的关系

我想创建一个与该表和另一个表(人员表)之间的关系,这是一个完全不同的数据库(人员数据库)。

这两个数据库都在同一台服务器上。

我该如何做到这一点? “

回答

0

要使用公共密钥,你可以创建一个包含三部分限定一个视图中选择数据。下面我假设每个人员条目都有一个将它们连接在一起的CompanyID字段,并且dbo是模式。如果这样的字段不存在,则需要创建并填充一个:

CREATE VIEW vCompanyPersonnel AS SELECT * FROM tblCompany t1 JOIN dbPersonnel.dbo.tblPersonnel t2 ON t1.ID = t2.CompanyID

同样,为了进行更新,无论是桌子和维护参照完整性,您将需要创建存储过程和只允许应用程序使用这些特效来更新数据(无论如何,这是最佳实践)。您还应该确保personnel表中的CompanyID字段不允许空值。有些过程要考虑:

  • 添加人员:需要一个CustomerID输入参数并确保其存在于公司表中。如果没有,RAISERROR。
  • 删除/取消激活客户:还删除/取消激活所有相关人员,最好让整个流程包含在一个事务中(全部或全部)。
1

”虽然在这种情况下你不能使用外键,但有一些解决方法 - 你可以使用包含在检查约束中的触发器或UDF。无论哪种方式,你的数据完整性并不完全是水密的:如果数据库与父表崩溃并且你从备份中恢复它,你很容易就会被孤儿所困扰。“数据库架构表:

foreign keys on table from different database