Sql 数据库结构:如何基于'定义表中键的唯一性;祖父母';桌子
很难表达问题的标题,因为我缺乏我想要达到的目标的术语,所以我将用我想要做的精确例子来写它 拥有这些表格:Sql 数据库结构:如何基于'定义表中键的唯一性;祖父母';桌子,sql,database,database-design,foreign-keys,unique-index,Sql,Database,Database Design,Foreign Keys,Unique Index,很难表达问题的标题,因为我缺乏我想要达到的目标的术语,所以我将用我想要做的精确例子来写它 拥有这些表格: Table market{ id integer [pk] code varchar(32) [not null, unique] name varchar(32) [not null] } Table outcome{ id integer [pk] market integer [not null, ref: > market.id] # Referenc
Table market{
id integer [pk]
code varchar(32) [not null, unique]
name varchar(32) [not null]
}
Table outcome{
id integer [pk]
market integer [not null, ref: > market.id] # References market
code varchar(32) [not null, unique]
name varchar(32) [not null]
}
Table game{
id integer [pk]
match integer [not null, ref: > match.id] # References match
outcome integer [not null, ref: > outcome.id] # References outcome
odd float [not null]
status integer [not null, ref: > status.id]
won bool [null]
}
如何在表游戏中添加唯一键
以确保只有结果
每市场
每匹配('grand-parent relationship')具有非空值
乙二醇
大多数数据库都允许筛选唯一索引或类似的内容
create unique index unq_game_market_match
on game(market, match)
where outcome is not null;
在那些没有的数据库中,您可以对计算列和/或函数索引执行类似的操作。请用您正在使用的数据库标记。@GordonLinoff它将是MySQL或postgre,这就是为什么我没有用它标记问题,因为我在软件中寻找一个概念,而不是一个特定的解决方案。不过,谢谢你的回答
create unique index unq_game_market_match
on game(market, match)
where outcome is not null;