- ベストアンサー
テクニカル データベース午前の問題の質問
データベース(完全教本) 2005年度版を勉強していますが、分からない部分があります。 よろしくお願いします (他のところで質問しましたが反応がないので、コチラで質問しなおしました) 平成15年 テクニカル(データベース)の午前問題 29番目についてです(本では37P) 問題: http://smickey.cool.ne.jp/cgi-bin/text/textprint.cgi?c=2&y=15&s=0&no=29 疑問点: 問題文の(1)営業員は複数の担当地域が定められている(2) 1つの地域を複数の営業員が担当している 1 * 営業員-------担当地域 1 * 地域 -------営業員 を導きました。 ただ回答の解説をみると、 ある営業員は複数の地域を担当し、ある地域は複数の営業員が担当する。すなわち、”営業員”と”地域”の間に、多対多の関係があることがわかる。 となっています。 選択肢をみると、地域、担当地域、が出てきているので解説のように、「営業員と地域」とくくってしまうのが分かりません。 問題文のとおり、担当地域と地域をわけて考える必要があるのではないか?と思ったのです。 この点、このような解説の仕方でただしい、と思えないので教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
s_husky です。 再回答にミスがありました。 この場合、[担当地域]のグループ=[地域]という考えです。 ↓ この場合、[地域]のグループ=[担当地域]という考えです。 まお、具体的な確認テーブルを示しておきます。 <受注> ID 顧客_ID 営業員_ID 売上日 --------------------- 1 鈴木 中村 2006/02/10 <営業員> ID 氏名 担当地域_ID -------------- 1 中村 東区 2 田中 東区 <顧客> ID 名称 地域_ID -------------- 1 鈴木 東区一丁目 <担当地域> ID 名称 -------------- 1 東区 2 西区 3 南区 <地域> ID 担当地域_ID 名称 ------------------ 1 東区 東区一丁目 2 東区 東区二丁目 3 東区 東区三丁目 ※Access2003でリレーションシップを張って実際にテーブルに登録しそれを表示しコピーしたものです。
その他の回答 (3)
s_husky です。 先の回答を全面的に訂正します。 一部、回答に影響されていました。 よくよく、1:多の関係を見直すと、 [受注]多-1[顧客]多:1[地域]多:1[担当地域]1:多[営業員]1:多[受注] が正解ではないでしょうか? この場合、[担当地域]のグループ=[地域]という考えです。 レイアウトでは「ウ」が正解ではあるが、 ・・・・・[地域]1:多[担当地域]多:1[営業員]・・・・・ は、 ・・・・・[地域]多:1[担当地域]1:多[営業員]・・・・・ のミスではないのでしょうか? ※全くもって、面目ない再回答です。 ※プロは、どう考えるのでしょうか?
- ymmasayan
- ベストアンサー率30% (2593/8599)
そんなに難しく考える必要は無いですよ。 営業員IDと地域IDの間に多対多の関係が存在するということです。 地域と担当地域は地域コードで考えれば同じものです。 営業員から見ると地域=担当地域です。 この部分はDBがどうのというより通常の常識の範囲です。 解説がおかしいとか、中抜きだとかは感じませんが。
普通にテーブルを設計すれば、 <受注台帳> ID 顧客_ID 担当者_ID <顧客マスター> ID 氏名 地域_ID ***************** 顧客マスター.地域_ID(多-1)地域.ID ***************** <担当者> ID 氏名 担当地域_ID ***************** 担当者.地域_ID(1-多)担当地域.ID ***************** <地域> ID 地域名 担当地域_ID ***************** 地域._担当地域_ID(1-多)担当地域.ID ***************** <担当地域> ID 担当地域名 よって、 1、顧客マスター.地域_ID(多-1)地域.ID 2、担当者.地域_ID(1-多)担当地域.ID 3、地域._担当地域_ID(1-多)担当地域.ID の条件を満たしているモデルは... この場合、「担当と担当地域、地域と担当地域との間には1:多の関係がある」というのは判ります。 「すなわち、”営業員”と”地域”の間に、多対多の関係がある」というのは、<[担当地域]を媒介にして[担当者]と[地域]との間には、実質的な多:多の関係が成立する>ということでしょう。 しかし、いかにも、解説本らしい中間の説明を省いた結論的な概念を覚えさせようという魂胆が透けて見える回答ですね! ※当方、スーツのデザイナーでDB言語のトウシロです。 ※間違っていたら、スミマセン!
補足
やっぱり実際のテーブル設計をやったことがないせいでしょうか。 設計した結果のテーブルを素直に導き出せないでいます。 (ただなんとなく理解はできるようになりました) ただ営業員(この場合は担当者テーブル)と地域の間に、 担当地域というものが存在している事 それが多対多の関係である事 はあぁ、なるほど、と思いました。 >しかし、いかにも、解説本らしい中間の説明を省いた結論的な概念を覚えさせようという魂胆が透けて見える回答ですね! この点、凄く納得です。 そうならないために高いお金を出して解説が一杯ついている本を買ったのですが。 (実績NO1とかいうから・・・) 何回か練習して素直に教えてもらったテーブルを設計できるまでもうちょっとがんばります。 ありがとうございました。 p.s >>スーツのデザイナーでDB言語のトウシロです。 凄いですね。 なぜ分かるんですか? 私なんかコンピュータで飯食ってんのに分からんし。
お礼
回答有難うございます。 [地域]のグループ=[担当地域] とのことですので、 <地域> ID 担当地域_ID 名称 ------------------ 1 東区 東区一丁目 2 東区 東区二丁目 3 東区 東区三丁目 は、 <地域> ID 担当地域_ID 名称 ------------------ 1 1(担当地域の) 東区一丁目 2 2(担当地域の) 東区二丁目 3 3(担当地域の) 東区三丁目 ですか? ここだけですね。 今のところ分からないのは。