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)
我想查看有权访问一个或多个应用程序的用户以及他们获得访问权限的日期以及删除访问权限的日期。
一个用户可以有多个应用程序,并且可以在多个部门中。
我认为我在or表ID (int)
中的相关字段有误,但不确定。Access_Date
Application
我现在添加了联结表,UserDepartment, UserApplications, UserAccessDates
当我在 MS Access 2016 中打开表单时,我得到一个空白页。该表单是使用 User 表作为主表,部门、应用程序和访问日期作为子表创建的。
我相信我的人际关系可能是错误的。
解决方案
不,您没有合适的桌子。让我举一个用户和部门的例子。您需要三个表:
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
桌子。您的访问表应该显示应用程序。
命名注意事项:
- 我通常以复数形式命名表,因为它们包含一个实体的多个实例。
- 主键是表名的单数形式,后跟
_id
orId
。 - 在可能的范围内,主键和外键具有相同的名称。
推荐阅读
- javascript - 您好,我想在 Windows 和 Mac 中为 Web 应用程序中的同一页面实现不同的 css 字体。谁能提供我如何实现这一目标
- python - 使用 Python 将处理后的图像上传到 Azure blob
- node.js - 如何避免 jbpm 中的抢先式身份验证错误?
- python - ModuleNotFoundError:没有名为“psycopg2._psycopg”的模块
- java - Class的Spring clear属性值有@Async方法
- android - Jetpack Compose 中的视觉导航图表示?
- solr - 与单值字段相比,具有多值字段的 Solr 查询性能不佳
- google-custom-search - 如何应用 Google 可编程搜索元素付费 API 密钥?
- c++ - 为什么 multiset 保留重复元素的单独实例而不是它们的计数?
- javascript - 无法通过静态 javascript 文件在 html 中加载 django 变量