首页 > 解决方案 > SQL 表关系

问题描述

我创建了 4 个需要相互关联的表,然后构建一个表单来添加/显示数据。

我已经在 SQL 中构建了 4 个表,但我不确定我是否输入了正确的关系或字段,以便可以正确访问数据

User Table
  User_ID (Pkey)
  Full_Name (varchar)
  User_Name (varchar)

Department Table
  Dept_ID (Pkey)
  Department_Name (varchar)
  User_ID (int) 

Application Table
  App_ID (Pkey)
  Application_Name (varchar)
  User_ID (int)

Access_Date Table
  Date_ID (Pkey)
  Access_Date (date)
  Removal_Date (date)
  User_ID (int)

我想查看有权访问一个或多个应用程序的用户以及他们获得访问权限的日期以及删除访问权限的日期。

一个用户可以有多个应用程序,并且可以在多个部门中。

我认为我在or表ID (int)中的相关字段有误,但不确定。Access_DateApplication

我现在添加了联结表,UserDepartment, UserApplications, UserAccessDates 当我在 MS Access 2016 中打开表单时,我得到一个空白页。该表单是使用 User 表作为主表,部门、应用程序和访问日期作为子表创建的。

我相信我的人际关系可能是错误的。

标签: mysqlsql

解决方案


不,您没有合适的桌子。让我举一个用户和部门的例子。您需要三个表:

Users Table
  User_ID (Pkey)
  Full_Name (varchar)
  User_Name (varchar)

Departments Table
  Department_ID (Pkey)
  Department_Name (varchar)

UserDepartments
  User_ID (int) 
  Department_ID (int)
  Other information, such as Effective_Date and End_Date

前两个表代表两个不同的实体,Users并且Departments。第三个是实现多对多关系的关联/联结表。

同样,您需要一张UserApplications桌子。您的访问表应该显示应用程序。

命名注意事项:

  • 我通常以复数形式命名表,因为它们包含一个实体的多个实例。
  • 主键是表名的单数形式,后跟_idor Id
  • 在可能的范围内,主键和外键具有相同的名称。

推荐阅读