我正在尝试制作两张桌子:一张用于author
,另一张用于他们的音乐专辑。
作者不能拥有多个同名专辑。它应该按author ID
/ name
/无论如何工作一次。
不应该允许这样做:
Author | Album name
-------------------
Johny | FireGrasp
Johny | FireGrasp
应该允许:
Author | Album name
-------------------
Johny | FireGrasp
Mandy | FireGrasp
我应该为它制作程序吗?
我将尝试通过代码应该如何工作来解释它:
insert into Author(Val) VALUES ('John'), ('Mandy');
-- Author_id: 3=John, 4=Marx
insert into Album(Val, Author_id) VALUES ('Firegrasp', 3);
insert into Album(Val, Author_id) VALUES ('Firegrasp', 3); -- This should not work now
insert into Album(Val, Author_id) VALUES ('Firegrasp', 4); -- This should work
答案 0 :(得分:1)
不确定是否要创建一个表(OR)来查找查询以获取发布的输出。
如果您正在寻找创建表格,那么您可以将Author,Album name
设为primary key
(composite PK
),以确保Author + Album name
的组合始终是唯一的。 primary key(Author, [Album name])
如果您的表格中已经定义了unique(Author, [Album name])
,您甚至可以创建一个多列唯一约束,例如PK
。
(OR)
如果您正在寻找获得所需结果的查询,那么我认为您只需使用distinct
关键字即可获得这两项记录中的一项。
考虑到,您的Album
表只有这两列(Val, Author_id)
;创建一个主键,如
create table Album
(Val varchar(20),Author_id int,
CONSTRAINT PK_composite_123 PRIMARY KEY CLUSTERED (Val, Author_id))