▲ このウインドウを閉じる |
What is bred in the bone will not be out of flesh. |
それが理解しにくい点は、理論を遵守した設計と、理論を遵守していないけれど、少々、考えながらやった設計が、ときどき、同じ実装形になることがあるからかもしれない。ただし、全体としてみれば、それらの2つの構造には、大きな相違があるのだが、、、。 たとえば、従業員のデータを例にしながら、RDB向けの設計と階層構造型データベース (あるいは VSAM ファイルを前提にした構造化プログラミング)向けの設計を比べてみましょう。階層構造型データベース(あるいは、VSAM ファイルを前提にした構造化プログラミング)向けの設計として、以下のデータ構造を生成した、とします。
(1){部門コード、従業員番号、従業員名称、入社日} コッド正規形(RDB向けのデータ設計)の観点から判断すれば、従業員名称や入社日は、「部門コード+従業員番号」に対して、関数的依存関係が成立しないし、部門コードは従属関数なので、以下の構造とするのが正しいでしょうね。
(2){従業員番号、従業員名称、入社日、部門コード (R)}
そして、コッド正規形に対して、CREATE INDEX を使って、「部門コード+従業員番号」のインデックスを生成した、とします。
マスター・キーは、SE(およびプログラマ)の頭なかに継承されてきたDNAかもしれない(苦笑)。だから、マスター・キーを、なかなか、捨てることができないのかもしれない。 さて、RDB(セット・アット・ア・タイム法)を信奉している理論家の皆さん(あるいは、DOAを信奉している理論家の皆さん)、「システムを実際に稼働してきた」と言い張る実務家 (practitioner)に対して、どのように、以上の間違いを説得しますか。コッド正規化の手順を丸暗記しているだけじゃ、説得することはできないでしょうね(笑)。 (2003年11月8日)
|
▼ このウインドウを閉じる |