作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想设计一个用户/角色系统:
用户有名称和密码,然后用户可以具有多个角色,例如管理员
。
为此,我创建了一个如下所示的架构:
用户:
CREATE TABLE [dbo].[Users]
(
[id] [int] NOT NULL,
[name] [nvarchar](50) NULL,
[password] [nvarchar](50) NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([id] ASC)
)
角色:
CREATE TABLE [dbo].[Roles]
(
[id] [int] NOT NULL,
[name] [nvarchar](50) NULL,
CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED ([id] ASC)
)
用户角色:
CREATE TABLE [dbo].[User_Roles]
(
[id] [int] NOT NULL,
[User_id] [int] NOT NULL,
[Role_id] [int] NOT NULL,
CONSTRAINT [PK_User_Roles] PRIMARY KEY CLUSTERED ([id] ASC)
)
我的问题是:我应该使用外键User_Roles.User_id -> User.Id
如果是,为什么?
最佳答案
不太清楚你的意思,但是......
User_Roles
应该只有 2 列 User_id
和 Role_id
User_Roles
User_id
是 Users.id
的外键Role_id
是 Roles.id
编辑:现在我明白了。是的,always use foreign keys
还有...
password
是nvarchar(50)
,这意味着纯文本。 This is bad. Users
中有重复的name
值,您如何知道哪个用户是哪个? 主键创建后评论后编辑...
CREATE TABLE [dbo].[User_Roles]
(
[User_id] [int] NOT NULL,
[Role_id] [int] NOT NULL,
CONSTRAINT [PK_User_Roles] PRIMARY KEY CLUSTERED ([User_id], [Role_id]),
CONSTRAINT [UQ_ReversePK] UNIQUE ([Role_id], [User_id])
)
关于sql-server - 如何在 SQL Server 数据库中设计用户/角色架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10879143/
我是一名优秀的程序员,十分优秀!