sql - 容纳一对多和一对多(或一对*)关系的最佳实践是什么?

标签 sql database sql-server-2005

只是好奇解决以下问题的最佳实践是什么。我有机构、账户和用户表。机构和账户是一对多的关系。机构和用户是一对多的关系。用户和帐户具有多对多关系,或者他们可以具有多对多(或 *)帐户。这意味着,可以将一个用户指定给所有帐户,以及添加到该机构的任何新帐户,该用户无需明确添加关系即可访问。

最佳答案

我会这样做:

Institutions
    InstitutionID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
    Name VARCHAR(255)

Users
    UserID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
    Username VARCHAR(255) NOT NULL
    InstitutionID INT NOT NULL

Accounts
    AccountID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
    Account VARCHAR(255) NOT NULL
    InstitutionID INT NOT NULL

Users_Accounts
    Users_AccountsID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
    UserID INT NOT NULL
    AccountID INT NULL

Users_Accounts 表中拥有一个带 NULL 条目的用户 ID 具有全局 (*) 访问权限。这样,您可以确定任何帐户和/或用户的机构及其权限。

编辑:不同表中具有相同名称的列表示外键。如果您不做重负荷,请使用它们。

关于sql - 容纳一对多和一对多(或一对*)关系的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094687/

相关文章:

database - 有没有办法自动生成 PowerPoint 幻灯片?

r - 在 R 中创建条件计数变量

php - sql 'is not' ( <> ) 不工作

sql - 在 Oracle DB 中使用非字母数字字符查找记录

mysql - 如何查找与第二个表有多重关系的记录

c# - 使用 C# 从 SQL Server 数据库中保存和检索图像

sql-server - 如何使用 RoundhouseE 以正确的顺序运行依赖于 sp 的创建索引脚本

sql - 增加 SQL Server 中的 NVARCHAR 列大小会导致索引重建吗?

SQL Server 超时 - 重试还是更长的超时?

MySQL LIKE %string% 不够宽容。还有什么我可以用的吗?