其实前端相关表格的显示真的无所谓。
该图表实际上只是为了您的方便。它显示的内容并不一定反映您在 sql server 上的关系。
在过去,当您在 Access 中构建查询时,该关系图从未对返回的行数产生任何影响。
当您使用 Access 查询构建器时,您可以在任何您想要的表之间建立和选择任何关系——即使是没有意义的关系。
前端不能在 SQLServer 上强制执行任何类型的关系,因为如果前端可以,那么 5 个不同的前端会发生什么,每个前端都定义了不同的关系?
因此,SQLServer 会忽略您在 Access 中看到的关系。事实上,这也适用于使用 Access 后端。您总是在数据库端定义关系,而不是前端。
关于已定义关系的唯一真正优势是某些表单向导可以使用图表来帮助您。如果您启动 Access 查询构建器并放入一些表 - 那么这些表将根据关系窗口为您绘制(设置)连接。但是,即便如此,您也可以删除连接线,并根据需要连接表 - 包括无意义的连接。
因此,当您使用网站连接到 amazon.com 时,您的 Web 浏览器或“客户端”计算机无法向服务器指示强制关系 - Access 客户端、vb.net 或 FoxPro 也不能连接到 sql 服务器。您只能在服务器端定义关系——客户端根本无法更改您设置的 sql 服务器端的规则。
当您将 Access 表链接到 SQLServer 时,您不会看到关系出现在关系窗口中。
当然,在查询构建器中,您会看到关系,但它们不是强制的关系。您可以并且始终在查询构建器中构建您想要的任何类型的连接。您如何设置此类查询与关系窗口中的强制关系为零。
因此,您可以使用 Access 中的查询生成器在表之间选择任何您想要的连接 - 包括根本没有意义的连接。
如果您已将数据迁移到 SQLServer,那么您现有的非接触式查询(访问端)应该会继续返回相同的结果。
您在 SQLServer 上拥有的图表(以及定义的关系不会归结为客户端图表)。
如果您在 SQLServer 上构建视图,那么您必须密切关注如何构建该视图,尤其是左连接与“正常”或所谓的内部连接。
我已经将 Access 数据库迁移到 sql server 超过 15 年了,并且在迁移后我从来没有遇到过 Access 查询返回不同的结果。测试 Access 查询,它应该返回与以前相同的结果。
当然,如果您将查询转换为视图,那么所有的赌注都没有了,因为您现在用不同的方言和版本的 sql 重新编写查询——在这种情况下需要密切注意。但是,即使将查询移至 SQLServer,也很少会得到不同的结果。
因此,即使没有 sql server,关系图窗口也与您在查询构建器中构建查询的方式无关。您设置的关系不会改变查询的工作方式。强制关系将阻止您在未设置记录所属的“客户”(在客户表中)的情况下将发票添加到发票表中。但是,查询生成器不会阻止您编写错误的 sql(包括 SQLServer 或 Access 查询生成器),它们不会真正受到强制关系的任何影响。
您可以在两边(SQL 或 Access)编写错误的 sql。并且通过“坏” sql,那将是不反映您在表之间建立和假定的关系的 sql。