So-net無料ブログ作成

第1正規形である理由の常套句 [exam]

DB スペシャリストの午後問題向け。あるテーブルがどの正規形であるかを、その理由と共に答える問題の常套句。

第1正規形である理由

全ての属性が単一で、候補キー{A、B}の一部であるBに非キー属性Cが関数従属するため。

第2正規形である理由

全ての属性が単一で、候補キーからの部分関数従属性はなく、推移的関数従属性A→B→Cがあるため。

第3正規形である理由

全ての属性が単一で、全ての非キー属性が候補キーに完全関数従属し、候補キーからの推移的関数従属性がないため。

情報処理教科書 データベーススペシャリスト 2010年度版 (CD-ROM付) より。ここで、A、B、C は属性名とし、試験では問題文中の語句に置き換えること。

過去問題を見る限り、テクニカルエンジニア データベースよりもデータベーススペシャリストの方が問題が易しめ。IPA が公開している統計値を見ても合格率が高い。

が、私にとっては午後問題はかなり難しいと感じる。受からないだろうな...。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

SQL の基礎 その6 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。SQL の基礎 その5 の続き。

ORACLE MASTER Bronze SQL 基礎Ⅰ日本オラクル公式テキスト改訂版によると、索引を作成するとき・しないときのガイドラインがあるという。以下、同書籍から引用。

次の場合は、索引を作成します。
  • 列の値の種類が多い、または列の値が一意。
  • 列の値に NULL 値を多く含み、WHERE 句の条件で NULL 値でない値の検索が多い。
  • WHERE 句の条件として頻繁に使用される。
  • 表のサイズが大きい。
  • ほとんどの問合わせが、表全体の 2%~4%未満の行を検索する。

次の場合は、索引を作成しません。

  • 列の値の種類が少ない。
  • 列の値に NULL 値を多く含み、WHERE 句の条件で NULL 値の検索が多い。
  • WHERE 句の条件としてあまり使用されない。
  • 表のサイズが小さい。
  • ほとんどの問合わせが、表全体の2%~4%以上の行を検索する。
  • 頻繁に更新、追加、削除が行われる表。
  • 索引を付けた列が、式の一部として使用される。
最後の、「索引を付けた列が、式の一部として使用される」場合は索引を付けない方が良いということは気がつかなかった。何故だろう。

SQL の基礎 その5 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。SQL の基礎 その4 の続き。

RR日付書式

  表示する年00~49 現在の年号50~99
現在の年XX00~XX49 現在の世紀 前の世紀
現在の年XX50~XX99 次の世紀 現在の世紀

※現在2010年 '09' -> 2009年、現在1998年 '09' -> 2009年

ANY と ALL

  • > ANY
    いずれかより大きい = 最小より大きい

  • > ALL
    全てより大きい =最大より大きい

NEXTVAL と CURRVAL

  • 使用可能
    • SELECT文のSELECT句の内、副問い合わせ以外の SELECT句
    • UPDATE文のSET句
    • INSERT文のVALUES句
    • INSERT文で使用する副問い合わせ内のSELECT句
  • 使用不可能 
    • SELECT分や、DELETE文、UPDATE文の副問い合わせ内のSELECT句
    • GROUP BY句やHAVING句、ORDER BY句を使用するSELECT文
    • DISTINCTを使用するSELECT句
    • CREATE TABLE文やALTER TABLE文内のDEFAULT式
    • ビューのSELECT句

デカルト積

  • 明示する場合は CROSS JOIN

SQL の基礎 その4 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。SQL の基礎 その3 の続き。

日付関数

  • ADD_MONTHS(日付,n)
    日付に nヶ月を加算する。

  • MONTHS_BETWEEN(日付1,日付2)
    日付1から日付2を減算した月数を戻す。日数部分は小数点。日付1が日付2よりも古いときは負になる。

  • LAST_DAY(日付)
    月末の日付を返す。

  • NEXT_DAY(日付,'文字列')
    指定した日付より後の指定曜日の日時を返す。
    例: NEXT_DAY(DATE '2010-01-01', '月曜日')  '月曜日' の部分は環境依存。'月曜' も可。

日付書式要素

要素  説明 結果 補足
YYYY 2005  
MM 2桁数値による月 04  
MONTH 月の名前 APRIL 日本語環境の場合「4月」
MON 月の名称 APR 日本語環境の場合「4月」
DDD 年における日数 091 年のはじめから数えた日数
DD 月における日数 01 月のはじめから数えた日数(=日付)
D 週における日数 6 週のはじめから数えた日数(日曜が1で土曜が7)
DAY 曜日の名前 FRIDAY 日本語環境の場合「金曜日」
DY 3文字の曜日の略称 FRI 日本語環境の場合「金」

※結果欄は「2005-04-01 金曜日」をそれぞれの書式で表示した結果
※出典 ORACLE MASTER Bronze SQL基礎Ⅰ模擬問題集,株式会社CSK 教育サービス事業部,株式会社アスキー,2005

日付書式要素:時刻書式

要素  説明 結果 補足
AM または PM 正午標識 PM 日本語環境の場合「午後」
HH または HH12 時間、12時間書式 07  
HH24 時間、24時間書式 19  
MI 30  
SS 20  

※結果欄は「午後7時30分20秒」をそれぞれの書式で表示した結果
※出典 ORACLE MASTER Bronze SQL基礎Ⅰ模擬問題集,株式会社CSK 教育サービス事業部,株式会社アスキー,2005
  • 「分」が「MI」であることに注意。

数値書式要素

  • 0 は先頭の数値が0のとき0を戻す。 TO_CHAR(1234,'0999') -> 01234
  • 9 は空白を戻す。 TO_CHAR(0.5,'99.99' -> _ _ .50

SQL の基礎 その3 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。 SQL の基礎 その2 の続き。

順序

  • 順序を作成した後、開始番号(START WITH) は変更できない。変更する場合は順序を削除し再作成する。

ビュー

  • ビューの元になる表を削除してもビューは削除されないが、使用できない。
  • ビューを通して実表を操作するには制限がある。
  行の削除
(DELETE)
行の変更
(UPDATE)
行の挿入
(INSERT)
グループ関数
GROUP BY句
DISTINCTキーワード
疑似列ROWNUMキーワード
式によって定義された列  
ビューで選択されていない実表のNOT NULL列    

※出典 ORACLE MASTER Bronze SQL基礎Ⅰ日本オラクル公式テキスト 改訂版,日本オラクル株式会社オラクルユニバーシティ,株式会社アスキー,2005

CASE

  • CASE 列 WHEN 条件1 THEN 戻り値1
          WHEN 条件2 THEN 戻り値2
          ...
          ELSE デフォルト値
    END

DECODE

  • DECODE (列,
          条件1,戻り値1,
          条件2,戻り値2,
          ...,
          デフォルト値)

NULL

  • NULL + 100 -> NULL
  • NULL は昇順ソート(ASC)では最後、降順ソート(DESC)では最初になる。

SQL の基礎 その2 [exam]

SQL の基礎 その1 の続き。

日付・時刻データ型

  • DATE

  • TIMESTAMP
    小数秒を格納可能

  • TIMESTAMP WITH TIME ZONE
    UTC との時差

  • TIMESTAMP WITH LOCAL TIME ZONE
    データベースのタイムゾーンに変換して日時を格納。格納されたデータを表示するときはユーザセッションのタイムゾーンに従って変換されて表示

  • INTERVAL YEAR TO MONTH
    年月の期間。INTERVAL '123-5' YEAR(3) TO MONTH のように記述する。この場合、123年と5ヶ月間。YEAR(n) は年の桁数。既定は 2。

  • INTERVAL DAY TO SECOND
    日時分秒の期間。INTERVAL '3 1:2:3' DAY TO SECOND のように記述する。この場合、3日と1時間2分3秒間。DAY と SECOND の部分は DAY,HOUR,MINUTE,SECOND のいずれかを指定。TO の左側に指定したい期間の中で一番大きいものを、TO の右側に小さいものを記述。INTERVAL '3 1:2' DAY TO MINUTE なら 3日と1時間2分間となる。

制約

  • NOT NULL は列制約構文でしか定義できない。

関数

  • 日付関数はあるが時刻関数とは呼ばない。
  • TRUNC は TRUNC(列名,[n]) として使う。n: 小数第何位まで表示するか。省略した場合は整数まで表示。
    25.374 -> 2:-1、5:0、3:1、7:2、4:3 。 TRUNC(25.374,-1) = 30

計算

  • 日付に時間を加算するときは 日付+数値/24

集合演算子

  • UNION
    • NULL は重複チェック時に無視される。
    • 既定ではSELECTの第一列で昇順にソートされる。
  • UNION ALL
    • 重複行は削除されない。
    • ソートされない。
    • DISTINCT は利用できない。

SQL の基礎 その1 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。

自然結合

  • NATURAL JOIN 句を使用する。
  • 同名の列を全て使用した等価結合であり、結合に使用される列の型は同じでなければならない。

using句

  • 結合する列名が表間で同じ場合は USING 句を利用して結合する列名を定義できる。
  • USING 句と NATURAL JOIN 句は同時に使用できない。
  • USING 句に指定した列は表名による修飾が出来ない。

集計関数とNULL

  • COUNT(*) -> NULL もカウントする。
  • COUNT(*) 以外は NULL を無視する。

グループ関数と単一列の選択

  • グループ関数(MAX とか COUNT とか)と単一列を SELECT するときは、単一列を全て GROUP BY 句に指定しなければならない。 
  • GROUP BY に列別名を指定できない。

HAVING句とGROUP BY句の順序

  • HAVING 句と GROUP BY 句はどちらを先に記述しても良い。

私が SQL を書くときは、USING 句や自然結合は使わないし(A.COLUMN1 = B.COLUMN1 とちゃんと書く)、NULL はあらかじめ除外して集計するし、HAVING 句や GROUP BY 句の順序を余り気にしてなかったので...問題を解いてみると案外間違えるわけです。

SJC-WC 310-081 関連エントリのまとめ [exam]

本ブログで Sun Certified Web Component Developer for the Java 2 Platform, Enterprise Edition 1.4 (SJC-WC:Sun認定Webコンポーネントディベロッパ) に関するエントリを幾つか書いた。しかし、筆者自身も辿るのがめんどくさくなったので、本エントリでまとめる。

以上が本ブログでのエントリ。他にも有用な WEB リソースとして次を挙げておく。

書籍としては次のものを挙げておく。


※SJC-WC には 2009年09月に合格しました。当時は Oracle ではなく、Sun Microsystems から Jonathan I.. Schwartz の名前の入った Certification が送られてきました。Oracle 買収後は Oracle から送られてくるのでしょうね。
タグ:Java SJC-WC 310-081
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

SJC-WC 関連のメモ [exam]

SJC-WC 関連の雑多なメモ。

web.xml の url-pattern 指定方法

  • "/something"
  • "*.do"
  • "/*"

もし、servlet-mapping に *.do と XXX/* が定義されている場合は URL の左側からみてパターンに一致したものを採用するらしい。XXX/sample.do の場合、 XXX/* にマッチングする。

ステータス/エラー/リダイレクト

全て javax.servlet.http.HttpServletResponse のメソッド。
  • ステータス : setStatus(int)
  • エラー : sendError(int)
  • リダイレクト
    • setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY) と setHeader("Location", String); の組み合わせ
    • sendRedirect(String)

入出力関連

URL 書き換えを行うメソッド

どちらも javax.servlet.http.HttpServletResponse のメソッド。
  • encodeURL
  • encodeRedirectURL

タグハンドラでの出力

タグハンドラでの body の扱い

アドレスやポートの取得

全て javax.servlet.ServletRequest のメソッド。
  • サーバのホスト名 : getServerName()
  • サーバのポート : getServerPort()
  • クライアントのドメイン名 : getRemoteHost()
  • クライアントのアドレス : getRemoteAddr()

coockie 関連

Enumeration / String[] を返すもの

その他

  • session 関係は encodeXXX 以外は request
  • EVAL_BODY_BUFFERED は BodyTag

タグ:Java SJC-WC 310-081

JSTL 1.1 core ライブラリに定義されているタグ一覧 [exam]

JSTL 1.1 core ライブラリに定義されているタグの一覧。次表の「...属性を使う」という表現は、間違えやすいと思う属性名を挙げたものであり、他の属性も定義されていることに注意。

タグ メモ
<c:out> escapeXML 属性がある。
<c:set> var、value 属性を使う。標準アクションの setProperty は name,value であることに注意。
<c:remove>  
<c:if>  
<c:choose>  
<c:when> <c:choose>の子要素。
<c:otherwise> <c:choose>の子要素。
<c:forEach>  
<c:forTokens>  
<c:catch> var 属性を使う。
<c:param> <c:import>、<c:url>、<c:redirect>の子要素。
<c:import> url 属性を使う。core ライブラリは "import" だが ディレクティブや標準アクションは "include" という名称であることに注意
<c:url> var 属性を使う。
<c:redirect> url 属性を使う。

タグ:Java SJC-WC 310-081

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。