【发布时间】:2019-10-17 15:19:14
【问题描述】:
我正在尝试提出一种有效的方法来为我正在编写的应用程序生成/验证唯一访问密钥。我遇到的问题是因为 SQL 数据库的设置方式。
基本上,有两个表有问题。 Users 表和 Faculty 表。 Users 和 Faculty 表之间存在一对多关系。每个用户都将使用个人电子邮件和密码创建一个帐户。这将在Users 表中创建一个条目。
现在,我想允许管理员输入 域 电子邮件和名称,并生成设置密钥。然后,用户将能够输入该访问密钥,该访问密钥将他们在Users 表中的行链接到Faculty 表中的一行,并带有user_id 外键。
我想过这样做的方式是,当管理员生成设置键时,它将在教员表中创建一个具有空外键的行。然后,用户必须输入设置密钥 AND 管理员输入的 域 电子邮件。假设它全部匹配,然后它将他们的user_id 添加到该外键列。
这就是问题所在。使用包含设置键和电子邮件的单独表作为查找表并在向faculty 表中添加一行之前仅搜索具有两列的表会更有效吗?我认为这可能会更快,因为一旦验证行就可以删除,每次搜索的行更少。另外,我不确定在我的第一种方法中将外键保留为空是否存在问题。
假设一个唯一的密钥/电子邮件对,这是否足够安全,或者我还需要一些方法来检查登录用户?
非常感谢任何资源或想法。
【问题讨论】:
标签: sql sql-server unique-key