人気ブログランキング | 話題のタグを見る
データベース 平成13年午後Ⅰ問2
設問1の(2)です。
会員テーブルを複数テーブルに分割する問題です。

〈データベース〉完全教本 2005年版
p.335 の例4は以下のようになっています。

 会員 (会員番号,氏名,フリガナ,生年月日,本人会員番号,利用者番号)
 本人会員番号 (会員番号,郵便番号,会員住所,電話番号,引落口座,
            利用限度額,登録年,登録月,基本ポイント率)
 家族会員 (会員番号,続柄コード)

なるほど、スーパータイプ、サブタイプの関係としてとらえるというのは、
便利かもしれません。
これは、

 関係「会員」がスーパータイプ。
 関係「本人会員」、「家族会員」がサブタイプ。

ということなのだとおもいます。
ただし、この例4の解答の場合、
本人も家族も含めてすべての番号が入るということでしょうか。
とすると、関係「会員」の属性である「会員番号」は、
当初の図4の「会員番号」とは意味合いが異なっているようにおもいます。

もともとあった会員テーブルには、
会員にまとめて、家族会員の情報がありました。

問題文の丸3に、「会員の家族会員数に拡張性がにない」
ということなので、これを解消するには、
家族会員の情報を分離することになります。

 会員 (会員番号,会員氏名,フリガナ,郵便番号,会員住所,
      生年月日,電話番号,引落口座,利用限度額,登録年,
      登録月,基本ポイント率,家族会員数)

 家族会員 (家族会員番号,会員番号,利用者番号,
         氏名,フリガナ,続柄コード,生年月日)

通常、分割すると、{家族会員番号,会員番号}が主キーになります。
ところが家族会員番号はそれだけで一意なので、
主キーは家族会員番号だけです。
そこで会員番号を外部キーとして与えます。

家族会員を分割してしまったので、多重度制約を守るために
利用者番号をふることにします。

ちなみに
{家族会員番号,会員番号}
のほかに、
{会員番号,利用者番号}
も候補キーですので、こちらを主キーに設定してもよいというのはわかります。

さて、このときに使っている会員テーブルの「会員番号」というのは、
あくまで、家族会員を含まない、登録者本人の番号のみを意味します。

ただし、この例4の解答の場合、
本人も家族も含めてすべての番号が入っているようです。

なので、「会員番号」だけでは誤解を招きます。
このスーパータイプ、サブタイプの解答は、
不適切な解答となってしまうのではないかとおもいます。
by nwdb | 2004-11-28 12:10 | diary
<< データベース 平成14年午後Ⅰ問4 完全教本のデータベース設計の疑問 >>