我想创建一个存储USERNAME
和DOMAIN
的表(两者都是同一个表的列号)。
一个用户只能属于一个域。
并且The Domain值可以存储在另一个表中,我们可以将其称为" LIST"。
答案 0 :(得分:1)
在users
表格domain_id
中设置(与域名相关),然后对两列(username
和domain_id
)使用约束。
MySql示例:
ALTER TABLE users ADD UNIQUE unique_index (username, domain_id);
P.S。在SQL服务器中查找模拟。 (参见评论中的例子)
答案 1 :(得分:0)
我建议使用这种脚本来创建表格并根据它们确定条件:
--Create table that will store domains
CREATE TABLE DICT_DOMAINS (
DomainID int IDENTITY(1,1),
DomainName nvarchar(255),
CONSTRAINT [PK_DICT_DOMAINS] PRIMARY KEY CLUSTERED (DomainID ASC)
)
--DomainNames must be unique so we add non clustered index
CREATE UNIQUE NONCLUSTERED INDEX [UX_DICT_DOMAINS_DomainName] ON DICT_DOMAINS (DomainName ASC)
--Create table to store users and there domains
CREATE TABLE USERS_DOMAINS (
DomainID int,
UserName nvarchar(255)
)
--Add foreign key to DICT_DOMAINS table
ALTER TABLE USERS_DOMAINS WITH CHECK ADD CONSTRAINT [FK_USERS_DOMAINS_DICT_DOMAINS] FOREIGN KEY (DomainID)
REFERENCES DICT_DOMAINS (DomainID)
--Usernames must be uniq, no need to add DomainsId to this index
--This is sufficient to provide condition that
--One User can only belong to one domain.
CREATE UNIQUE NONCLUSTERED INDEX [UX_USERS_DOMAINS_UserName] ON USERS_DOMAINS (UserName ASC)