SQL ド・モルガンの法則
ホーム > 発行済み
読者の情報処理試験合格(シスアドから高度まで)を目指しています。
作者は、アプリケーションの開発を行なっているエンジニアです。
情報処理試験の知識(理論)を、日々の業務(実践)にどう生かしていくか、その辺りの事を意識
して、発行していきます。

SQL ド・モルガンの法則


                                               
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        ★★ 『情報処理試験のお勉強(千里の道も一歩から)』 ★★
                           2006/12/13 第91号
        知識の習得は、本当に楽しいものです。
        それぞれの目標に向かって、一歩ずつ踏出して行きましょう。
     
     ----------------------------------------------------------------------
        まぐまぐ:2293 めろんぱん:134 メル天:107 カプライト:118
        E-Magazine:176 melma:80 YAHOO:12      総発部数:2920
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     
       『テクニカルエンジニア(データベース) 午前平成17年問38』
     
      A 社では,社員教育の一環として全社員を対象に英会話研修を行っていたが,
     本年度(2005 年度)からは,4 月時点で入社 3 年を経過しているのにもかかわら
     ず初級システムアドミニストレータ(初級シスアド)試験に合格していない技術職種
     の社員に対して,英会話の代わりに初級シスアド研修を受講させることにした。
     
     本年度の英会話研修を受講させる社員の一覧を出力するための SQL 文はどれか。
     
      なお,A 社では,社員はすべて 4 月 1 日入社であり,事業年度の始まりは
     4 月 1 日 である。また,ここで使用するデータベースには,2005 年 4 月 1 日
     時点でのデータが格納されているものとする。
     
     
     
       ア  SELECT 社員 FROM 社員テーブル
               WHERE (入社年度 <= (2005 - 3) AND 職種 = '技術')
               AND 初級シスアド合格 = 'No'
     
     
     
       イ  SELECT 社員 FROM 社員テーブル
               WHERE (入社年度 <= (2005 - 3) AND 職種 = '技術')
               OR 初級シスアド合格 = 'Yes'
     
     
     
       ウ  SELECT 社員 FROM 社員テーブル
               WHERE NOT (入社年度 <= (2005 - 3) AND 職種 = '技術')
               AND 初級シスアド合格 = 'No'
     
     
     
       エ  SELECT 社員 FROM 社員テーブル
               WHERE NOT (入社年度 <= (2005 - 3) AND 職種 = '技術')
               OR 初級シスアド合格 = 'Yes'
     
     
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     メールマガジンがずれて見える方は、
      http://www.mag2.com/faq/mua.htm を参考にしてください。
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



合格を勝取るにはコレ!! 絶対に読んでおくべきです。

▽ http://www.mag2.com/m/0000120201.htm


     
      『解説』
     
       今回は、SQLです。
     
       出題は、テクニカルエンジニア(データベース)ですが、ソフトウェア開発技術者では
       必須ですね。
     
       その他は、少し難易度が高いので出題されないと思いますが、とりあえず目は、
       通しておきましょう。
       
     
       要点としては、問題文をきちんと把握する事です。
       これは、午後試験突破には、絶対に必要なスキルです。
       
       では、注意しながら問題文をみていきましょう。
       
     
     >1 A 社では,社員教育の一環として全社員を対象に英会話研修を行っていたが,
     >2 本年度(2005 年度)からは,4 月時点で入社 3 年を経過しているのにもかかわら
     >3 ず初級システムアドミニストレータ(初級シスアド)試験に合格していない技術職種
     >4 の社員に対して,英会話の代わりに初級シスアド研修を受講させることにした。
     
     >5 本年度の英会話研修を受講させる社員の一覧を出力するための SQL 文はどれか。
     
     >6  なお,A 社では,社員はすべて 4 月 1 日入社であり,事業年度の始まりは
     >7 4 月 1 日 である。また,ここで使用するデータベースには,2005 年 4 月 1 日
     >8 時点でのデータが格納されているものとする。
     
     
     
       重要な箇所をピックアップします。
     
       まず、 2行目から「入社 3 年を経過しているのにもかかわらず。。。」
       次に、 3行目から「初級シスアドに合格していない。。。」
       そして、3行目から「技術職種の社員」
     
       これらの対象となる社員は、「英会話の代わりに初級シスアド研修を受講させる」
       という事ですね。
     
     
       また、7行目から「データベースには,2005 年 4 月 1 日時点のデータが格納」と
       あります。 つまり「入社3年経過」は「2002年入社以前」という事が読取れます。
     
       但し、もうひとつ注意したいのが、5行目「本年度の英会話研修を受講させる社員の
       一覧を出力するための SQL 文」とあります。
     
       出力したいデータは、英会話研修受講の社員の一覧ですね。
     
     
       でも、ここではあえて、初級シスアド研修の対象社員を出力する為のSQL文から
       考えてみます。
       
     
       「入社3年経過」 ⇒ 「2002年入社以前」 ⇒ 「入社年度 <= (2005 - 3)」
     
       「初級シスアドに合格していない」 ⇒ 「初級シスアド合格 = 'No'」
     
       「技術職種の社員」 ⇒ 「職種 = '技術'」
     
     
     
       上記3つの条件を全て満たす必要があるので、全てを「AND(かつ)」で結びます。
       すると、該当する選択肢が、ありますね。
       
     > ア SELECT 社員 FROM 社員テーブル
     >    WHERE (入社年度 <= (2005 - 3) AND 職種 = '技術')
     >    AND 初級シスアド合格 = 'No'
     
       このSQL文が、初級シスアド研修の対象社員を出力する為のSQL文です。
     
     
       ということは、題意である「英会話研修受講の社員」は、上記SQL文で検索されない
       社員が、対象である事がわかります。
     
       式で書くと、以下のものです。
       英会話研修対象の社員 = 全社員 − 初級シスアド研修対象の社員
     
       これは、差集合なので「NOT IN」、「NOT EXISTS」で記述できます。
       ところが、選択肢には「NOT IN」、「NOT EXISTS」は存在していません。
       
     
       選択肢を見ると、WHERE句に、NOTで記述されている選択肢があるのが分かります。
     
       つまり、「初級シスアド研修対象の社員以外」という書き方で、「英会話研修対象の社員」
       を検索している事が、想像できます。(ここが重要なポイント)
       
       では、「ア」のSQL文を否定する事により「英会話研修対象の社員」を検索する
       SQL文を書きましょう。
       
       WHERE句の中に、記述されている条件式を、否定(NOT)します。
       
       WHERE NOT ( (入社年度 <= (2005 - 3) AND 職種 = '技術')
       AND 初級シスアド合格 = 'No' )
       
       これで、「英会話研修対象の社員」を検索できるSQL文となりました。
       しかし、この書き方と同じ選択肢は存在していませんね。
       
       そこで、もうひとひねりします。
       ド・モルガンの法則を使います。
       
       (公式)NOT(A AND B) = NOT(A) OR NOT(B)
       
       これは、確か、高校時代の代数幾何で、習ったと思います。
       
       
       ド・モルガンの法則より
       
       NOT ( (入社年度 <= (2005 - 3) AND 職種 = '技術')
       AND 初級シスアド合格 = 'No' )
       
                  ↓
       
       NOT ( (入社年度 <= (2005 - 3) AND 職種 = '技術'))
       OR  NOT (初級シスアド合格 = 'No' )
       
       となりますね
     
     
       ここで、選択肢を探しますが、まだ見つかりません。
       もう、ひとひねり必要ですね。
     
       NOT (初級シスアド合格 = 'No' )を書き換えます。
       「初級シスアド不合格の否定(NOT)」なので、「初級シスアド合格」という意味ですね。
     
       「NOT (初級シスアド合格 = 'No' )」 = 「初級シスアド合格 = 'Yes'」
       二重否定は、肯定という事です。
     
     
       よって条件式は
     
       NOT (入社年度 <= (2005 - 3) AND 職種 = '技術')
       OR 初級シスアド合格 = 'Yes'
     
       となりました。
       これと合致する、選択肢は、「エ」となりますね。
       
     >  エ  SELECT 社員 FROM 社員テーブル
     >          WHERE NOT (入社年度 <= (2005 - 3) AND 職種 = '技術')
     >          OR 初級シスアド合格 = 'Yes'
     
     
       これが正解となります。


     
     
      今日の解説、理解できて納得ならば、クリックをお願いします。
      ▽ http://ranking.with2.net/link.cgi?33705
     
     



合格を勝取るにはコレ!! 絶対に読んでおくべきです。

▽ http://www.mag2.com/m/0000120201.htm


     
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    『 ER図を、正確に読めるように、書けるようになりたい 』
    
      メガフラが、一番最初に、ER図の勉強に使用した良書をご紹介します。
    
      著者である林衛さんが、今年新たに書き直されたようです。
      本屋で見つけて、懐かしくて、しばらく立ち読みをしてしまいました。(笑)
    
      ER図の読み方、書き方に絞ってあるので、正確に情報を読み取れるようになりたい、
      書き込めるようになりたいと考えている方にお薦めです。
    
    
      ERモデルによるデータベース設計技法―モデルベース開発のための必修技術
    
      ▽ http://tinyurl.com/8ba5e
    
    
    『 お願い 』
    
      ぜひ、情報処理試験のお勉強(千里の道も一歩から)を、春期試験の受験を
      考えている知合いの方に、御紹介してください。
    
      このメールマガジン自身も、千里の道を一歩ずつ、着実に歩んでいきます。
    
    
     「情報処理試験のお勉強(千里の道も一歩から)」
      まぐまぐ  :http://www.mag2.com/m/0000120201.htm
      めろんぱん :http://www.melonpan.net/mag.php?005485
      メル天   :http://melten.com/m/16380.html
      カプライト :http://cgi.kapu.biglobe.ne.jp/m/8670.html
      E-MAGAZINE :http://www.emaga.com/info/megafri.html
      melma!   :http://www.melma.com/backnumber_102220/
      YAHOO    :http://merumaga.yahoo.co.jp/Detail/1793/p/1/
    
    
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
       『 情報処理試験のお勉強(千里の道も一歩から) 』
     
       発行者 :メガフラ
       HP  :http://jstudy.fc2web.com/
       発行周期:隔週
     
      以下のスタンドより、発行させて頂いています。
      配信登録、配信中止も以下のアドレスよりお願いします。
     
      まぐまぐ  :http://www.mag2.com/m/0000120201.htm
      めろんぱん :http://www.melonpan.net/mag.php?005485
      メル天   :http://melten.com/m/16380.html
      カプライト :http://cgi.kapu.biglobe.ne.jp/m/8670.html
      E-MAGAZINE :http://www.emaga.com/info/megafri.html
      melma!   :http://www.melma.com/backnumber_102220/
      YAHOO    :http://merumaga.yahoo.co.jp/Detail/1793/p/1/
     
     ----------------------------------------------------------------------
     <免責事項>掲載されているいかなる情報により損害を被っても、
           当方では責任を負いませんことをご了承ください。
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     『試験別の参考書・問題集』
     
      試験を勝取るための本当の勝負は、午後の試験です。
      このメルマガで、午前問題を、必要以上に詳しく理解して、午後試験にも通用
      する知識を、習得してしまいましょう。
     
      また、早いうちから下記アドレスの参考書などで、午後の問題にも慣れてお
      きましょう。 準備は、早ければ早いほど、良いです。
     
       システム監査技術者試験
       ▽ http://jstudy.fc2web.com/book/book_sysKansa.html
     
        テクニカルエンジニア(データベース)試験
       ▽ http://jstudy.fc2web.com/book/book_db.html
     
        テクニカルエンジニア(情報セキュリティ)試験
       ▽ http://jstudy.fc2web.com/book/book_spring_ts.html
     
        テクニカルエンジニア(システム管理)試験
       ▽ http://jstudy.fc2web.com/book/book_systemKanri.html
     
        テクニカルエンジニア(エンベデッドシステム)試験
       ▽ http://jstudy.fc2web.com/book/book_endeve.html
     
        ソフトウェア開発技術者試験
       ▽ http://jstudy.fc2web.com/book/book_sofukai.html
     
        基本情報技術者試験
       ▽ http://jstudy.fc2web.com/book/book_fall_fe.html
     
        初級システムアドミニストレータ試験
       ▽ http://jstudy.fc2web.com/book/book_fall_SyokyuSysAdo.html

     





情報処理試験のお勉強(千里の道も一歩から) (マガジンID:0000120201)

メールアドレス:
メールアドレス:

Powered by まぐまぐ


メインメニューに戻る

SEO [PR] 住宅ローン フラワーギフト 必勝祈願 冷え対策 動画 無料レンタルサーバーSEO