初級シスアド データベース

このQ&Aのポイント
  • Z町ペンション組合がペンションの空き部屋検索システムを構築することになった。
  • 部屋の利用人数と室料の関係式について説明されている。
  • 空き部屋検索システムの概要と、部屋情報データベースのE-R図と構造について説明されている。
回答を見る
  • ベストアンサー

初級シスアド データベース

ペンションの空き部屋検索システムに関する次の記述を読んで、各設問に答えよ。  Z町ペンション組合では、組合に登録されているペンションを共同のホームページで紹介している。このページの閲覧者から、部屋の空き状況や料金についてもこのページから調べられるようにしてほしいという希望が寄せられた。そこで、組合では空き部屋検索システムを構築することになった。 ○部屋の利用人数と室料  組合に登録されているペンションでは、各部屋の利用人数の上限(以下、上限人数という)を設定している。  室料は各部屋の1泊当たりの料金であり、次の式で算出される。    室料=部屋使用料+宿泊料*利用人数 (1)部屋の使用料は部屋ごとに決められており、利用人数にかかわらず一定である。 (2)宿泊料は1人当たりの金額で、同一ペンション内であれば、どの部屋を利用しても同額である。 ○空き部屋検索システム  今回構築するシステムの概要は、次のとおりである。 (1)部屋情報データベースを備え、ペンション、部屋および各部屋の空き状況に関する情報を蓄える。 (2)部屋情報データベースに蓄えられた情報から、閲覧者の指定する条件に適合する空き部屋情報を検索する。 (3)各部屋の空き状況に関する情報の登録および予約の受付は、別のシステムによって行う。 ○部屋情報データベースのE-R図と構造を、それぞれ図1と図2に示す。図2中の(P)は、各表の主キーを示している。 図1 部屋情報データベースのE-R図        ペンション → 部屋 → 空き部屋 図2   ペンション表   P番号(P) ペンション名 電話番号 所在地 オーナ a   部屋表   P番号(P) 部屋番号(P) 部屋名称 b c   空き部屋表   P番号(P) 部屋番号(P) d  各ペンションには、それぞれ固有の番号(P番号)が割り振られている。さらに、それぞれのペンションでは、各部屋の部屋番号として、1から順に通し番号が割り振られている。このデータベースには、空き部屋情報として各部屋の空いている日が登録されている。  別のシステムによって登録および予約の受付が行われると、その内容はこのデータベースに随時反映される。 ○空き部屋の検索 (1)閲覧者が、利用開始日(チェックインの日)、利用終了日(チェックアウトの日)および利用人数を指定する。 (2)すべてのペンションを対象に、(1)で指定された条件を満たす部屋を検索し、その結果を候補一覧として閲覧者に提示する。ここで、"条件を満たす"とは、ある部屋が利用希望期間を通して空き状態にあり、さらにその上限人数が利用人数以上であることをいう。 (3)候補一覧は、第1キーを"室料"、第2キーを"上限人数"として、それぞれ昇順に並べ替えて表示する。 問1 図2中のa~dに入れる適切な字句を、解答群の中から選べ。 →これはa=宿泊料、b=上限人数、c=部屋使用料、d=年月日(P)と求めることができました。 問2 省略 問3 連泊の場合  連泊の場合に整列済みの候補一覧を作成するための手順は、次の通りである。ここで、中間表1と中間表2は、両者とも"P番号"と"部屋番号"の2つの項目をもつ表として、あらかじめ定義されているものとする。 【】は語群の中から正解を抜き出したものです。 (1)次のSQL文の実行結果を、【中間表1】の状態とする。   SELECT P番号,部屋番号 FROM 部屋表 (2)(1)の空室検索文中の[人数]を閲覧者が入力した利用人数とし、[利用日]を利用開始日から【利用終了日の前日】まで順に変化させながら、次の(a)~(c)の処理を繰り返す。 (a)空室検索文を実行する。 (b)(a)の結果から"P番号"と"部屋番号"の項目だけを取り出し、その結果を中間表2に設定する。 (c)中間表1の内容を、次のSQL文の実行結果で書き換える。 SELECT P番号,部屋番号 FROM 中間表1 WHERE 【EXISTS】(SELECT * FROM 中間表2 WHERE 中間表1.P番号=中間表2.P番号【AND】中間表1.部屋番号=中間表2.部屋番号) (3)次のSQL文によって、整列済みの候補一覧を得る。 SELECT X.P番号,ペンション名,X.部屋番号,部屋名称,上限人数,(部屋使用料+宿泊料*[人数])AS 室料 FROM 【部屋表】X,【中間表1】Y,【ペンション表】Z WHERE X.P番号=Y.P番号 AND Y.P番号=Z.P番号  AND X.部屋番号=Y.部屋番号 ORDER BY 室料 ASC,上限人数 ASC 解説には、「抽出した中間表1をもとに、部屋表から部屋名称と上限人数を、ペンション表からペンション名を得ると判断できるので、Yは中間表1、Xは部屋表です。」と書いてありました。 何故、Yは中間表1、Xは部屋表とわかるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

出典(平成14年 春期 初級システムアドミニストレータ 午後 問04)と問題&解答例は次のURLを参照のこと。 http://情報処理試験.jp/AD14a-pm/t04.html ---------------------------------------- >何故、Yは中間表1、Xは部屋表とわかるのでしょうか。 「Xは中間表1,Yは部屋表」という解答をお勧めしたいです。 設問2 (1) の FROM [ e ] X, [ f ] Y, [ g ] Z 設問2 (2) の FROM [ m ] X, [ n ] Y, [ o ] Z は,3つの表を結合すればよいので,解答fとgは逆も可,解答mとnは逆も可です。 ただ,ER図からみて「(P番号)はこの2表の間で結合するのが本来のあり方だ」というより良い解答例があるわけです。 以下,解説です。 ---------------------------------------- 設問2 (2)連泊の場合 (1) で作られる,初期状態の (i)中間表1 は,予約済/空き部屋かどうかを問わない全部屋の一覧。 設問2 (2)連泊の場合 (2) を例えば,[利用日]=(2009/02/25,2009/02/26,2009/02/27)と3回繰り返し,初期状態だった中間表1の内容を実行結果で置き換えていく。 最終的に残った中間表1の内容は,3連泊のすべてで空き状態だった部屋の一覧。 つまり,連泊の場合における中間表1の役割は,1泊の場合における空き部屋表に対応するということ。 よって,図1の「空き部屋表」を「中間表1」に置き換えた,連泊の場合のER図は次のとおり。 「ペンション表」   ↓ 結合キーは(P番号) 「部屋表」   ↓ 結合キーは(P番号,部屋番号) 「中間表1」 蛇足かも知れないが確認しておくと,これは 設問2 (2)連泊の場合 (3) のSQL文のWHERE条件に次のように対応する。 「Z ペンション表」   ↓ Y.P番号 = Z.P番号 「Y 部屋表」   ↓ X.P番号 = Y.P番号 AND X.部屋番号 = Y.部屋番号 「X 中間表1」

mamoru1220
質問者

お礼

ご回答ありがとうございました。

mamoru1220
質問者

補足

「Xは中間表1,Yは部屋表」、「Xは部屋表,Yは中間表1」のどちらでも可ということでしたが、試験ではどうすれば良いのでしょうか。

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

>どちらでも可ということでしたが、試験ではどうすれば良いのでしょうか。 順不同解答欄でどちらも正解になります。

mamoru1220
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • 初級シスアド:データベースって何?

    正規化のことがよくわかりません。複数の値を含む項とはいったいなんのことでしょう?

  • メモをデータベース化する方法

     こんにちは、お世話になります。  困って検索した情報や、利用して役立った知識をNotepadに.LOGを利用して書き込んでいたのですが、最近もっと便利な方法はないかと探し回っています。Accessなんかで作るほど大層な情報ばかりではないので、軽くて、使いやすくて、ぱっと検索できる方法はないものだろうかと考えています。皆さんはどのようにして日々の蓄積をデータベース化しているのでしょうか。

  • データベースに何を使うか

    こんにちは、よろしくお願いします。 VB2005+AccessでWindowsアプリをはじめて作りました。 このアプリはデータベースがAccessなのでスタンドアロン形式 として開発しました。(初めてのプログラミングです。) 次に、2~5台くらいまでのパソコンで使えるようなアプリを 開発したいと思っているのですが、 データベースに何を使ったら良いのかわかりません。 パソコンに、Microsoft SQL Server 2005がプログラムメニューに あるのですが、これが利用できるのでしょうか? 利用できるのなら使いたいのですが、 色々と調べていたら、SQLServerの価格表があり、高いものは 300万とか書いてあり、びっくりしました。 上記を使うと開発者やユーザーに何か料金が必要なのでしょうか? ExpressEditionは無料、とありましたが制約が多くて 使にくかったらどうしようかと思い、不安です。 Oracleも無料とありましたが、Windowsアプリに利用するにあたって 何も問題はないのでしょうか? 経験者の方、おすすめデータベースのアドバイスがありましたらお願い致します。 参考サイトや書籍などの情報がありましたらあわせてお願い致します。

  • データベース利用について

    ご質問をさせて下さい。 商用にてデータベースを利用予定なのですが、 ネット上で大量の顧客情報を管理し、尚且つその情報を必要としている企業が そのデータベースにアクセスできるようなシステムを作りたいと思っています。 しかし元々専門知識が全くないので、 どの程度の規模のデータベースを用意すればいいのかが分かりません。 また、サーバーとデータベースの関係も良く分かりません。 例えばオラクルはデータベースソフトというのは分かるのですが、 そのソフトを使って大量のデータを管理するとしても、 その大量のデータ自体はサーバーにあることになりますよね? ではそのサーバーは自前で用意するしかないのでしょうか? もしくはレンタルサーバーで大丈夫なのでしょうか? またホームページのレンタルサーバー(もちろん法人用)を提供している ところなどでは、そういうのは難しいのでしょうか? 要はレンタルサーバーなどがあるというのは分かるのですが、 どの程度の規模のものまで可能なのかとか、 大手はどこなのかとかが分からなくてイメージが掴めません。 尚、規模としては最初は小規模なものですが、 将来的には上限のない、なるべく多くの顧客情報管理を目指す予定です。 と、基本的なご質問で大変申し訳ないのですが、 ヒントになるようなことだけでも構いませんので、 アドバイスを頂けますでしょうか。

  • エクセルでデータベースの検索と抽出(?)

    エクセル2007を使用しています。 まずエクセルで作られたデータベースがあります。データベースには、管理番号、顧客名、商品の管理番号、商品名、価格が入っています。 このデータベースとは別に、検索(抽出)用のエクセルを用意しています。 そこで、管理番号を入れたら、顧客名、商品名、価格のみが1行(横)に表示されるようにしたいです。 クエリを利用してやると一つずつ顧客名、商品名、価格を選んで…という風に時間がかかります。 例えば、管理番号の列(縦)に番号を入れて、ボタンを押すとか、実行(F9)すれば、管理番号を入れたすべての行に、データベースから検索した顧客名、商品名、価格が入力されるようにしたいのです。(管理番号の重複はありません) クエリで一個ずつ選んでいくのをマクロ登録するしかないのでしょうか?

  • Excelで200人分位のデータベースを作りたい

    200人位の住所等1人あたり約100項目くらいの情報のデータベースを作りたいと思っています。 Accessなどのデータベースの方が向いているのですが、日常的に入力作業をする事務職員のスキルがないため、Excelで作成したいと思います。 利用者1人で1シート(印刷した時A3用紙1枚)の量ですが、この1人1シートで作成した情報から、名前だけの表や、年齢別で集計したり、ある程度、データベース機能もほしいところです。 Excel2007でも、1ファイルに200シートで串刺し集計なんてできない、できたとしても使いづらすぎますよね? こういうデータベースをつくりたいというニーズは結構あるとおもうのですが、みなさんどうやってるのでしょうか?

  • データベース使用に関して

    質問です。電話帳や店舗一覧などのデータがネットには溢れていますよね。そういったものをまとめたHPを作ろうと考えているのですが、 (1)データベースをもっているサイト(オフラインの電話帳なども含む)からその情報を元にデータベースを作っても良いのか? (2)自身で検索しながら作成する場合、掲載店舗に許可が必要か?その場合大型のデータベースを持っているサイトは全て許可を取っているののか? ちなみに公に商売している店舗のみが対象で、店舗名、電話番号、HPアドレス程度を掲載したいと考えています。

  • 医薬品のデータベースを探しています

    おしえてください。 医療関係のサイトを開設する準備を進めています。 そこで利用できる薬のデータベースを探しています。 市販薬・大衆薬ではなく、医療用医薬品のデータベースです。 1万3000種類ほどあるのでしょうか、その大半を網羅しているようなデータベースを探しています。 データベースといってもさまざまですが、以下のように利用できるものを探しています。 データベース作成企業 → 弊社 → 弊社サイトのユーザ(不特定多数) これは、ネット通販のAmazonようなモデルです。 Amazonは、その商品データベースを、技術基盤とあわせて公開しています。 Amazonの商品データベースは、さまざまな企業のサイトに接続されています。 たとえばmixiで本を探すと、Amazonのデータベースにつながります。 Amazon → mixi → mixi会員(不特定多数) ポイントは次の2点。 1) 弊社のサイトに組み込めること。 弊社のサイト内に検索窓口を置きたい。 データベースの情報をカスタマイズしたい。 2) 弊社サイトのユーザーが利用できること。 Amazonとmixiの例でいえば、Amazonが契約するのは株式会社mixiです。 Amazonにとって、「mixi会員」は、いわば「顧客の顧客」という存在です。 Amazonは「顧客の顧客」がデータベースを利用することを想定しています。 「データベースの利用を許可するのはmixi社員のみ」というような契約・サービスモデルではダメなのです。 データベース利用の有料・無料は問いません。 なにとぞよろしくお願いします。

  • データベースの問題

     (テーブル名)     (フィールド名)   学生表       番号,氏名,電話番号,アドレス,コースコード,出身県コード   コース表     コースコード,コース名   出身県表      出身県コード,出身県名 *コースコードは2文字で、経営コース(BM)、会計コース(AC)、情報コース(IS)、国際コース(IB) *出身県コードは2文字とし、データ入力時に各自定義するものとします。 ●上記のようなテーブルからなるデータベースを作成したいのですが、 (1)各テーブルの基本キーを教えてください。また、外部キーがあれば、その項目名と、その外部キーによって関係付けられているテーブル名を教えてください。  (2)各項目に適するデータ型を決めて、このデータベースのデータ定義をどのようなSQL-DDLで記述すればよろしいのでしょうか? ●このデータベースを用いて、つぎの検索を行うためのSELECT文をSQL-DMLでの記述の仕方を教えてください。 (3) 学籍番号、氏名、電話番号からなる表Aを作る。 (4) コース名、学籍番号、氏名からなる表Bを作る。 (5) 学籍番号、氏名、メールアドレス、出身県名からなる表Cを作る。 (6) 自分と同じコースの人の氏名とメールアドレスからなる表Dを作る。 (7) 学籍番号、氏名、コース名、出身県名からなる表Eを作る。 ちなみに、自分の解答は下記のようになったのですが、間違っている部分があるかと思うのでご指摘おねがいします。 (1) (テーブル名) (主キー)   (外部キー)    (外部キーによって関連付けられるテーブル)    学生表       番号    コースコード   コース表(コースコード)                     出身県コード   出身県表(出身県コード)        コース表    コースコード    なし        出身県表    出身県コード    なし (2)<データ定義(SQL-DDL)>  CREATE SCHEMA  AUTHORIZATION HAMADA  CREATE TABLE 学生表 (番号      CHAR(10) NOT NULL PRIMARY KEY,  氏名      CHAR(20),  電話番号   CHAR(30),  アドレス    CHAR(30),  コースコード CHAR(2) NOT NULL REFERENCES コース表)  出身県コード CHAR(2) NOT NULL REFERENCES 出身県表)  CREATE TABLE コース表 (コースコード CHAR(2) NOT NULL PRIMARY KEY,  コース名   CHAR(20) NOT NULL )  CREATE TABLE 出身県表 (出身県コード CHAR(2) NOT NULL PRIMARY KEY,   出身県名   CHAR(20) NOT NULL ) (3) SELECT 番号, 氏名, 電話番号 FROM 学生表 INTO 表A (4) SELECT コース名, 番号, 氏名 FROM 学生表, コース表 INTO 表B WHERE 学生表, コースコード = コース表, コースコード (5) SELECT 番号, 氏名, アドレス, 出身県名 FROM 学生表, 出身県名 INTO 表C WHERE 学生表, 出身県コード = 出身県表, 出身県コード (6) SELECT 氏名, アドレス FROM 学生表, コース表 INTO 表D WHERE 学生表, コースコード = コース表, コースコード AND コース名 = "情報コース" (7) SELECT 番号, 氏名, コース名, 出身県名 FROM 学生表, 出身県名 INTO 表E WHERE 学生表, 出身県コード = 出身県表, 出身県コード AND 学生表, コースコード = コース表, コースコード

  • 初級シスアド平成17年秋季午後問題 問2設問3

    初級シスアドの問題に 「毎月の抽選は会員データベースの仲から、住所と氏名が登録されている会員を無作為に20人抽出するプログラムを用いて行われる。 毎月一日に当月の当選者が一覧表に印刷されるので印刷された一覧表をもとに配送伝票を作成して当選者に商品を配送することになっている。 U社では、住所などの個人情報が流出するリスクを下げるために、~~~ように 徹底した管理を行っている。」 という、~~~の部分を埋める問題があり解答群が ア、当選者の一覧には、氏名だけ印刷する イ、当選者の一覧表は、使用後にシュレッダで廃棄する ウ~カ 省略 で、答えが「イ」なのですが、納得がいきません。 シュレッダで切断されたものは、つなぎ合わせれば復元できますし、少なくとも 「徹底した管理を行っている」とはいえないんじゃないですか? シュレッダにかけるより、当選者一覧には氏名だけを印刷して その氏名をもとに、係員がデータベースから その氏名の会員情報を検索して そこに書かれてある住所を入力して商品を郵送したほうが、個人情報漏洩のリスクは少ないのではないでしょうか? 当選者は所詮20人しかいないのですし、手間はかかっても これくらいはしなければいけないと思います。 今、少しイライラしているので雑な文章になってしまいましたが、 どなかたご回答よろしくおねがいします。 実務経験が無い等の理由で 私の考えは間違っているのでしょうか?

専門家に質問してみよう