次のようなテーブルがあります。
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 ライブラリーは複数のミックスに含まれる場合があります
- 1 つの DNA サンプルに複数の DNA ライブラリ (同じまたは異なるバーコードを持つ) を含めることができます。
これをモデル化するための、バーコードごとに 1 つの列を使用する方法よりも優れた方法があれば、とてもうれしく思います。
ありがとう!
ケビン
EDIT 2 コメント内の @eggyal による提案は、これに対処する正しい方法です。(私の側の初心者の間違いです。)ありがとう!