1対多を強引に表現するトンでもテーブル

最近よく1対多の結合を表現するのにリンクキーとなるカラムを何個も並べて定義しているテーブルを目にする。
流行っているのか・・・。

正直、私も一度だけやったことがあるが・・・。申し訳ない。
締め切りに間に合わなかったのです。
現場は戦場だったのです。いきなり最前線に配属されて一週間でこんなこんなこんなの作れといわれてやっちゃったのです。

普通はリンクテーブルを作って1対多を表現するらしい。
しかし、運悪くリンクキーのカラムが大量に並ぶテーブルに出会ってしまったときは、以下のようなSQLでリンクテーブルを作ってあげてほしい。

create table link_table as
select id, keycode1 as keycode from hoge where keycode1 != ''
union all select id, keycode2 as keycode from hoge where keycode2 != ''

・・・SQL ServerではこのSQLでなく

select * into link_table from (
select id, keycode1 as keycode from hoge where keycode1 != ''
union all select id, keycode2 as keycode from hoge where keycode2 != '') as temp

こう書くのか。