Table 关系 - 使用 SQL 服务器后端访问前端

Table Relationships - Access Front End with SQL Server Backend

当我们的 IT 部门将 Access 数据库转换为 SQL 服务器时,关系不会转移。过去,我提供了他们可以用来建立关系的 ERD。在这种情况下,我没有。

What are the possible consequences of defining the table relationships in the MS Access Front End versus on the SQL Server itself?

如果我可以在 Access 中创建关系并避免向 IT 提交请求,那将是理想的,但我不想现在或将来冒性能问题的风险。

可能会有一些误解。

SQL 服务器中的关系强制执行 参照完整性(订单不能有不存在的客户 ID)。 It does not automatically create an index on the Foreign Key,所以它本身对性能没有影响。

But in most cases it is a good idea to define an index on a foreign key,以提高性能。

您在 Access 中对链接表定义的关系不执行任何操作。它不能强制执行参照完整性(这是服务器的工作)。
这只是一个 "hint" 表通过指定字段相关联,例如,如果将表添加到查询设计中,查询构建器可以自动连接这些表。

所以你应该

  • 在 SQL 服务器中创建关系以避免数据不一致。 ("But my application logic prevents that!",我听到你说了。嗯,应用程序有错误。)
  • 在适当的地方为外键创建索引以避免性能问题。
  • 如果您在 Access 前端使用查询,请另外定义那里的关系。

理想情况下,您应该有一个测试服务器,您可以在其中自己定义关系,然后将完成的 SQL 脚本发送给 IT。