SQL表关系

时间:2019-06-18 15:40:13

标签: mysql 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)

我希望看到一个有权访问一个或多个应用程序的用户,以及他们获得访问的日期以及访问被删除的日期。

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

我认为我在ID (int)Access_Date表中有错误的Application字段,但不确定。

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

我认为我的恋情可能有误。

2 个答案:

答案 0 :(得分:2)

否,您没有正确的表格。让我给您一个有关用户和部门的示例。您需要三个表:

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

前两个表代表两个不同的实体UsersDepartments。第三个是实现多对多关系的关联/连接表。

类似地,您需要一个UserApplications表。您的访问表应显示该应用程序。

有关命名的注意事项:

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

答案 1 :(得分:0)

根据您提供的内容,您将能够确定用户有权访问某个应用程序,但不能确定他有权访问哪个应用程序。要提供该信息,您将需要在Access_Date表中添加App_Id。除用户外,部门与其他任何事物都不相关。如果部门与Application或Access_Date有关,则需要将部门链接到Application和Access_date表。

我添加了一张图片,显示了表之间的关系,直到我理解为止(使用ms访问)。Relationships

这是新图片。New Relationships