わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

2007年10月22日

その1

ファンタジーの法則というのは,結城浩さんという方が著書の『プログラマの数学』の中で提案しているものです.問題があって,漫然と答えのほうに向かっていると,どうも答えが出るまで手間がかかる,あるいは答えに行きつかないかもしれない,というときに,いったん別世界a different world*1に移動し,そこでの解を求めて,もとの世界に戻れば,すっきり問題が解ける,というものです.本の中には「高速道路の法則」とも書かれていました.
これは,満員の和歌山バスで降りたいときにも使えるんですね.先日,大学発のバスに何とか入り込めたんですが,事情で,途中の貴志というバス停で降りないといけなかったんです.バス停に着いたとき,普通に通路を歩いていると,時間がかかりすぎるし,立っている人に迷惑がかかりすぎるなと思いまして,大きな声で運転士さんに「後ろ,開けてください!」と言いました.開いたら,そこから降りて,バスの前方へ.そしてバスカードを入れて運賃を払い,また降りました.
ここでの別世界というのが,バスの外を意味します.車内よりは確実に,すばやく動けます.まあ,歩行者やバイクが来ないことの確認が必要ですし,後ろから降りて,支払うことなくバスから離れたら犯罪になりますが.
ともあれ,ここから「満員のバスの法則」と言えればいいのですが…残念ながら,全国で通用することはなさそうです.というのも,運賃後払いだから使えるのであって,東京をはじめとして,先払いのバスに慣れている人には無意味ですので.

その2

この二つのリレーションは,それぞれ外部キーを持ち,相互に相手のリレーションを参照しています.社員リレーションの所属という属性は,部門リレーションの主キーである部門番号を参照している,外部キーです.そして部門の中の部門長は,社員の中の主キーである社員番号を参照する,外部キーです.
ここで,こんな表を構成して,ともに空っぽの状態から,値をどうやって入れていけばいいのか,気になりませんか? 社員から入れていくと,所属に値が入れられません.部門からにすると,部門長の値が決められません.まるで鶏と卵ですね.
なのですが,外部キー制約の定義を見直してみると,解決の糸口がつかめてきます.はい,外部キーとなる属性の値は,空値,すなわちNULLでもよいのです.
そこでまず,部門にレコードを入れましょう.部門番号と部門名には適切な値を割り当てて,部門長は,NULLにしておきます.
それから,社員を登録します.こちらの所属には,すでに登録している部門の部門番号を指定するわけです.最後に,社員の中で,部門長になる人の社員番号を,部門の部門長にセットします.
ということで一応は値を入れていくことができるのですが…でも,相互に参照するリレーションは,滅多に使いませんけどね.

*1:another worldだと「あの世」ですよ!