- ベストアンサー
データベーススペシャリスト(テクニカルエンジニア)の過去問題
データベーススペシャリスト(テクニカルエンジニア)の平成20年度春午後I問2の設問2の答え(販売商品(販売商品コード、ペットコード、サービスコード、ペット区分、成長区分、体系区分、ペット用品コード))ですが、これは例えば、現ペットコードがABCだとして、これを新しく付与する販売商品コードと対応させるためのものですよね?つまり、販売商品コードがわかれば、商品はペットで、ペットコードがABCであるという情報を保持するという意味だと思います。そう考えると使わない列があるのは冗長だと思うのですが・・・・・何か解説をお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
以下,回答上の表記は,公式サイトの解答例 2/4ページを参照のこと。 http://www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2008h20_1/2008h20h_db_pm1_ans.pdf 「使わない列がある」というのは, それがペットであるならば,ペット用品ではないのでペット用品コードは使わない,ケアサービスでもないのでサービスコード等は使わない, すなわち,次のテーブル構成でよいように思う,ということでしょうか。 販売商品1(販売商品コード,ペットコード) 販売商品2(販売商品コード,ペット用品コード) 販売商品3(販売商品コード,サービスコード,ペット区分,成長区分,体型区分) でもこれでは,販売商品1~販売商品2~販売商品3のすべてに共通した販売商品コードの一意性の保証がないです。3つの異なるテーブルすべてにおける主キー,という存在がヘンなので。 仮定の話として,販売商品コードが「商品区分を表すコードを含んだコード体系」で,ペットなら"A"+連番,用品なら"B"+連番,ケアなら"C"+連番,という決まりがあるのであれば,前述のような販売商品の区分ごとの3テーブル分割もあるのでしょうが,そのような条件は書いてありません。
補足
>>「使わない列がある」というのは, それがペットであるならば,ペット用品ではないのでペット用品コードは使わない,ケアサービスでもないのでサービスコード等は使わない, その認識であっています。使わないのがあるのは冗長ではないのでしょうか??それならば、jjon-comさんのいうように販売商品を3つの表にわけて、これらを販売商品(販売商品コード)のサブエンティティのほうがすっきりする感じがあります。