<< November 2018 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>

テクニカルエンジニア(データベース) H18 PM1-1

設問1
図3に「主な」関数従属性とあるが、解答に当たって補わなければならない関数従属はない。

設問2
オブジェクト指向モデルとやらを知らなくても解ける。
ss2004 * データベーススペシャリスト * 12:31 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM2-2

帳票からのボトムアップとスーパータイプ・サブタイプ化がテーマ。

「機材を大別すると“機械”と“資材”があり、」から「機材」がスーパータイプ、「機械」・「資材」がサブタイプになると予想。図11にあてはまる。

<マスタ系>
図1を機材コード=712301のインスタンスに着目して正規化し、「号機」と「機械」を得る。
「機械」と図2の「資材」を比較して、共通部分をスーパータイプ化して「機材」とする。

<予約業務>
図3がほぼそのまま「機械貸出予約」になる。

<貸出業務>
図4を正規化し、「貸出」と「貸出明細」を得る。さらに、「機材」と「機械」・「資材」のスーパータイプ・サブタイプに倣い、「機械貸出明細」・「資材貸出明細」のサブタイプを作成。
機械を貸し出す場合には予約が必ず先行するので、「機械貸出明細」には「予約番号」は持つし、リレーションシップが引ける。ただし、「予約と違う号機を貸し出す」場合があるので、「貸出機番」を持ち、直接「号機」との間のリレーションシップを引く。

<返却業務>
図5を正規化し、「返却」と「返却明細」を得る。さらに、「機械返却明細」と「資材返却明細」を追加。

<移動業務>
図6から「機械移動」、図7から「資材移動」を得、2つのスーパータイプとして「移動」を得る。

<在庫管理系>
図8から、「号機」に属性「現在保管営業所コード」・「現在貸出中顧客コード」を追加。
図9から、連関エンティティ「営業所資材在庫」を得る。
図10から、連関エンティティ「顧客使用資材」を得る。
ss2004 * データベーススペシャリスト * 12:08 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM2-1 設問3

(1) 点検の結果は、「正常」「異常」「未完了」の3つの状態が考えられる。駐車場設備単位で点検終了が確認できるので、点検が終了しているのに「異常」の記録がなければ、正常であったと判断できる。

(2) 部位装置点検項目の開始年月日と、点検項目の開始年月日では意味が異なる。リレーションシップを張ることができない。

(3) (2)のとおり、開始年月日では支障があるので、点検項目に新たなレコードを追加し、点検項目番号で管理する。

ss2004 * データベーススペシャリスト * 14:02 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM2-1 設問2

(1) 現に「出動指示番号」をもつテーブルについて検討する。
 「駐車場設備点検」・「部位装置点検結果」・「検出異常」・「駐車場設備修理」・「交換部品明細」は、出動指示がない出動の場合でも発生しうるので、「出動指示」からでなく「出動」からリレーションシップを引くべきである。

(3)
要件番号1は、以下のSQLで実行可能。
SELECT 出動目的番号, COUNT(*)
 FROM 出動内訳 JOIN 出動 USING(出動番号)
 WHERE 出動年月日 BETWEEN 集計始期 AND 集計終期
 GROUP BY 出動目的番号
 ORDER BY 出動目的番号


同様に、要件番号4も実行可能。
SELECT COUNT(*)
 FROM 出動
  JOIN 駐車場設備修理 USING(出動番号)
  JOIN 出動内訳 USING(出動番号)
 WHERE 出動年月日 BETWEEN 集計始期 AND 集計終期
  AND 出動目的番号 = '04'


要件番号2 部位装置別の修理実績は把握でき、どの出動によるかも把握できるが、出動目的は一つの出動に対して複数設定できるため、どの出動目的による修理実績かは集計できない。

要件番号3 修理作業時間は把握できるが、翌日までにわたったかは分からない。
ss2004 * データベーススペシャリスト * 13:34 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM2-1 設問1

(1) aとc・dのスーパータイプ・サブタイプ関係に着目。aが「部品」、c・dが「基本部品」・「汎用部品」になるだろうと予想。
「部位装置汎用部品明細」と関連があるので、dは「汎用部品」に。また、「部位装置汎用部品明細」は「汎用部品」と「部位装置」の連関エンティティだからbは「部位装置」

(2) 「契約」は、緊急呼出し料金プラン、修理工賃料金プラン、修理部品費料金プランについて「料金プラン」と関連があるので、「料金プラン」から「契約」に3本矢線が引ける。
「契約明細」は「契約」の明細なので、「契約」→「契約明細」。また、「駐車場設備」と「個別サービスの」連関エンティティなので、「駐車場設備」→「契約明細」←「個別サービス」。
ss2004 * データベーススペシャリスト * 13:11 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM1-3

設問1
(1)
a AS 会員数 FROM 会員 WHERE 〜 と続くから、COUNT(*) だろう
b SELECT 会員区分, 利用区分, COUNT(*) に対応するため、 GROUP BY 会員区分, 利用区分
c 会員種別 LEFT OUTER JOIN (〜) AS 現会員 に続く句だから、ON 〜 又は USING になるはず。AS 現会員を活かすとしたら、ON 〜 の方。
d,e,f '2005-03-01' AND '2005-3-31' と続くから、BETWEEN句のはず。
g ORDER BY 句の内容だから、1行目のSELECT句で表示される列から選ぶ。

(2) 外部結合を使用する理由。当該会員種別の会員が1人もいない場合、会員種別名・利用時間内容が表示されなくなってしまう。

(3) 「家族会員も個別の会員番号を持つ」のだから、「会員区別」に「家族会員」という区分を追加すれば(会員種別テーブルに家族会員に関するタプルを追加すれば)、ある会員が家族会員であることは管理できる。「家族会員の情報を管理するため」とあるのは、親会員と家族会員の関係を管理するということだろう。親会員と家族会員は1対多の関係にあるので、「家族会員」テーブルを作るか、連関エンティティを作るか、家族会員側に「親会員の会員番号」を持つようにするかで表現できるが、「既存テーブルに列を追加」し「SQL文を変更せず」に実施できるのは最後の方法。

設問2
(1) A1列は、当該年代別性別に該当する会員数、A2は該当年代性会員による入館時刻<1200 である利用履歴数、A3は1200≦退館時刻≦1300である利用履歴数、A4は退館時刻>1700である利用履歴数。
(2) (SELECT 会員番号, 〜 GROUP BY 会員番号) AS B で作成されるBは利用履歴に登場される会員の数だけレコードが作られ、NULL値は存在しない。(SELECT GetAge10〜 ON A.会員番号 = B.会員番号)で作成される表は、左外部結合された結果なので、B1〜B3がNULL値のレコードができる。それをGROUP化してSUM(B1)→A2とするので、一部がNULLの場合はNULL以外の合計が、全てNULLの場合は結果もNULLになる。したがって、利用履歴に該当する会員番号が全く登場しない「20代男」の場合には、A1が0、SUM(B1)からSUM(B3)はNULLになる。これを0と表示させるためにはCOALESCEが必要。
ss2004 * データベーススペシャリスト * 22:09 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM1-2

設問1
(2) 単品商品とパック商品をまとめて商品番号を主キーとすることで、「単品商品とパック商品を通して商品番号が一意である」というルールを担保できる。

(3) パック商品は複数種類の単品商品からなり、一つの単品商品は複数種類のパック商品に含まれる場合があるから、多対多で、連関エンティティで管理する。また、同じ単品商品を複数個まとめたパック商品もあるので、「パック商品がどの単品商品から成り立っているか」とともに、「いくつの単品商品から成り立っているか」も管理する。

設問2

(1) 図2の注文書を参考に、テーブルを分割する。「注文の取消しは、注文書単位で行う」から、「取消しフラグ」は「注文明細」でなく「注文」に持つ。
(2) まず、図3の発送書を参考に、「注文」と「注文明細」に追加すべき属性を考える。「注文」には、発送日と発送番号が必要。「注文明細」の方は、単価の履歴を残すという要件はなさそうだが、欠品の場合があるため、発送数量(又は「欠品フラグ」)が必要。
(3) 複数の注文を1発送で行うのだから、「注文」と「発送」は別テーブルとし、注文側に外部キー属性「発送番号」を持たせる。


ss2004 * データベーススペシャリスト * 21:35 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H17 PM1-1

設問1
(1)
 ③ 一つの契約に対して、複数のオプションを設定できる。
 ⑤ 一つの契約に対して、複数の割引を設定できる。

(2) 図2が正しければ、候補キーは{契約番号, 契約日時}だが、(1)のとおり「オプション種別」「割引種別」は{契約番号, 契約日時}に関数従属しないため、{契約番号, 契約日時, オプション種別, 割引種別}が候補キーとなる。
 したがって、部分関数従属は、「契約番号」に関数従属するものと、{契約番号, 契約日時}に関数従属するものを挙げておけばいいだろう。
 本来、「部分関数従属」自体は、候補キーとは無関係の概念だから、設問自体意味不明だが、それは置いておく。

設問2
(1) 「すべて列挙せよ」とあるのに答えが1個だけというのが、ややひっかけ。
(3) {電話番号, 年月度} → 顧客番号 → {氏名, 生年月日, 住所} という部分関数従属があるゆえの(データ登録時の)更新異状を記述する。「{電話番号, 年月度}が決まらなければ登録できない」「{電話番号, 年月度}ごとに登録しなければならない」のうち、後者の方を指摘した方がいいだろう(前者は特に困らなそう)。

設問3
(1) 商演算。顧客番号"N0001"の「電話番号」がすべて揃っている「年月度」を求める。
(2) 指示のとおり計算する。
(3) 「使用度数」はいいとして、「契約電話番号」は現時点での契約内容しかないため、増えた場合、減った場合に問題が生じる。なお、「電話番号は、解約後、数か月以上経過すれば、別の契約で再利用されることがある」ため、同一電話番号が同一年月度中に他の契約者に使用されることはない。
ss2004 * データベーススペシャリスト * 22:03 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H16 PM2-2 設問1

ボトムアップ的思考とトップダウン的思考を交え、さらに設問で与えられているスキーマ等との整合を考えつつ解かなければならない。かなり難しい部類に入る問題だろう。

(1) 〔業務分析結果〕の1.(2)に、
配送対象商品は、在庫品と直送品に分類される。
との記述があるので、「商品」がスーパータイプ、「在庫品」・「直送品」がサブタイプとなることが想定される。
「b」は「在庫品受注明細」と、「c」は「直送品メーカ」との間にリレーションシップがあるので、「b」が「在庫品」、「c」が「直送品」と予想できる。この予想で矛盾が出なければ答えとして良いだろうと考え、実際、矛盾は生じない。

(2)(3) リレー本シップとスキーマが問われているので、(3)のスキーマを考えてから、(2)のリレーションシップを引く。
・「仕分」と「出荷」はn:1なので、「仕分」側に“出荷番号”を持ち、管理する。
・「仕分」で「配車」の内容を参照しているが、「出荷」経由で参照が可能である。意味的にも、「配車」した車両に積むことが「出荷」(1配車1出荷)で、「出荷」のために「仕分」するので、「出荷」「配車」間、「出荷」「仕分」間のリレーションシップを設定するのが妥当である。
・“仕分実績年月日”は持たなくていいのか?と思ったが、直送品配送業務では持たないので不要だろう。

商品配送業務の概念データモデル設計 テクニカルエンジニア(データベース) H16 PM2-2 設問1
ss2004 * データベーススペシャリスト * 23:35 * comments(0) * trackbacks(0)

テクニカルエンジニア(データベース) H16 PM2-1 設問4

「あるテーブルにある列を追加する」タイプの問題なので、「追加する属性」を考え、その属性が何に従属するかを考えて、それを主キーとするテーブルに追加する。
まず、継続して就業する期間を制限するために必要な列なので、“継続就業開始日”“継続就業期間”を持つのが簡単だろう。
そして、その“継続就業期間”を、どのテーブルに持たせるか。
たとえば、ある派遣スタッフに「いまの仕事を継続して何か月やってる?」と聞けば答えが得られるだろう。現在やっている仕事の期間さえ分かればいいので、主キーは“派遣スタッフコード”になり、追加すべきテーブルは「派遣スタッフ」になる。

列への値の設定は、“継続就業開始日”の場合、新規就業開始や就業先・従事業務変更時に就業開始日を設定し、派遣終了時には空値を設定すればいいだろう。
また、“継続就業期間”の場合、新規就業開始や就業先・従事業務変更時に派遣予定期間を設定し、延長時には延長期間を加算し、派遣終了時には0を設定すればいいだろう。


テクニカルエンジニア(データベース) H16 PM2-1 設問4
ss2004 * データベーススペシャリスト * 23:36 * comments(0) * trackbacks(0)
このページの先頭へ