【发布时间】:2011-12-02 03:49:46
【问题描述】:
三个表。
赛事有很多比赛
种族有很多注册
Registrations 上有一个整数 'bib_number'
我需要确保活动号码布是唯一的。
我拥有的最佳解决方案是将 event_id 非规范化到注册中...然后我可以为注册添加一个唯一键:
UNIQUE KEY `index_bib_number_event_id` (`bib_number`, `event_id`)
....但如果可能的话,我宁愿避免这种情况
这是表格:
CREATE TABLE `registrations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`race_id` int(11) NOT NULL,
`bib_number` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
)
CREATE TABLE `races` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`event_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
}
CREATE TABLE `events` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
}
【问题讨论】:
-
不确定这是否可能(这就是为什么这是评论而不是答案)但您是否尝试过在视图上创建唯一索引?
-
号码布号码是赛事独有的,而不是比赛?
-
@Catcall,OP 希望确保号码布号码对于整个赛事是唯一的,而不是只是比赛。
-
@MarkBannister:我知道他说了什么。我怀疑他是否真的是这个意思。
-
@MarkBannister:是的。我的思想和写作从相反的方向朝着同一点前进。我根据事件的独特性来回答。
标签: mysql sql ruby-on-rails