我有一个看起来像这样的表:
CREATE TABLE `library_mix` (
`lib_mix_id` VARCHAR(64) NOT NULL ,
`date` DATE NOT NULL ,
`index1` VARCHAR(64) NULL ,
`index2` VARCHAR(64) NULL ,
`index3` VARCHAR(64) NULL ,
`index4` VARCHAR(64) NULL ,
`index5` VARCHAR(64) NULL ,
...
`index96` VARCHAR(64) NULL ,
...
)
对于 index1 到 index96 中的每一个,我想添加相同的外键约束。理想情况下,我想在编程循环中创建索引和 fk 约束,但我不清楚如何在 MySQL 中做到这一点,也没有找到任何好的例子。就像是:
CREATE TABLE `library_mix` (
`lib_mix_id` VARCHAR(64) NOT NULL ,
`date` DATE NOT NULL ,
for i = 1 to 96
`index`$i VARCHAR(64) NULL,
end
...
for i = 1 to 96
CONSTRAINT `fk_library_mix_lib_id`$i
FOREIGN KEY (`lib_id` )
REFERENCES `library` (`lib_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
end)
有没有一种简单的方法可以代替输入所有内容 96 次?
编辑
我对下面一些评论的回答太长了,所以我在这里添加它。
- 上面的“图书馆”一词是指 DNA 片段的物理集合(在试管中)(我认为图书馆是一个可怕的术语,但我没有编造它并坚持使用它)。
- 每个文库都附有条形码(也由 DNA 制成),并与其他 DNA 文库混合(只要这些文库具有不同的条形码)
- 有 96 种可能的条形码(这里用“index1”到“index96”标识)。
所以在这张表中,我试图对特定的 DNA 文库组合进行建模。外键约束是为了确保库 id 存在于库表中。
可能有用的其他信息:
- 不同的 DNA 文库可以具有相同的条形码(因此不能混合在一起)
- 一个 DNA 文库可以在多个混合物中
- 一个 DNA 样本可以有多个 DNA 文库(具有相同或不同的条形码)
我很高兴听到比使用一列条形码更好的建模方法。
谢谢!
凯文
编辑 2 @eggyal 在评论中的建议是处理这个问题的正确方法。(我的新手错误。)谢谢!