假设我在表"table1"和"table2"之间有一个简单的多对多表,它包含两个int字段:"table1-id"和"table2-id".我应该如何索引此链接表?
我曾经只创建一个复合主索引(table1-id,table2-id),但我读到如果更改查询中字段的顺序,则此索引可能不起作用.那么什么是最佳解决方案 - 为没有主索引的每个字段制作独立索引?
谢谢.
我想设计一个用户/角色系统:
用户有一个名称和密码,然后用户可以有几个角色,如Admin.
为此,我创建了一个这样的架构:
用户:
CREATE TABLE [dbo].[Users]
(
[id] [int] NOT NULL,
[name] [nvarchar](50) NULL,
[password] [nvarchar](50) NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([id] ASC)
)
Run Code Online (Sandbox Code Playgroud)
角色:
CREATE TABLE [dbo].[Roles]
(
[id] [int] NOT NULL,
[name] [nvarchar](50) NULL,
CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED ([id] ASC)
)
Run Code Online (Sandbox Code Playgroud)
user_roles:
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)
)
Run Code Online (Sandbox Code Playgroud)
我的问题是:我应该使用外键吗? User_Roles.User_id -> User.Id
如果是,为什么?