2月5日(木)3コマ目

今日、やったこと

  • [確認テスト 解説]確認テスト3
  • [練習問題 解説]シーケンス

今日のホワイトボード

[確認テスト 解説]確認テスト3

正解例をあげておきます。


[はじめに]ユーザー作成、システム権限付与、作成ユーザーでDB接続

いつもどおりです。

図 ユーザー作成、システム権限付与、DB接続


[はじめに]会員マスタテーブル作成

これもなんてことはないかと。

図 会員マスタテーブル作成


問1  ポイントデータテーブル 作成

図 問1 ポイントデータテーブル 作成
このテーブルのユニーク制約は、会員ID列と獲得日列の値の組み合わせがテーブル全体でオンリーワンになるようにチェックしている。

問2 会員別獲得ポイントビュー 作成

会員でグループ化する際、同姓同名のデータがある可能性から、会員のIDでグループ化。
会員のIDと氏名は1対1なので、会員のIDを氏名の組み合わせでグループ化しても、会員のIDだけでグループ化しても同じ。
図 問2 会員別獲得ポイントビュー 作成

問3 プラチナ会員一覧ビュー 作成

総獲得ポイントが100以上はグループに対する条件。
図 問3 プラチナ会員一覧ビュー 作成

問4 非プラチナ会員一覧ビュー 作成

問3とほぼ同じ。
図 問4 非プラチナ会員一覧ビュー 作成

問5 日別発行ポイント一覧ビュー 作成

会員情報は含まないため、会員マスタテーブルは不要。
図 問5 日別発行ポイント一覧ビュー 作成

問6 会員別ポイント発行回数一覧ビュー 作成

ポイント発行回数 = ポイントデータテーブルの行数。
行数のカウントはcount()関数。
前回、くどくどと言いましたが、count()関数は、多くのケースでcount(*)でOK。
特定の列名を指定するのは、その列がnullな行はカウントしたくない時。
図 問6 会員別ポイント発行回数一覧ビュー 作成

[練習問題 解説]シーケンス

ポイントはデータ登録のさい、シーケンスから採番(nexval)と直近に採番した値の取得(currval)をうまく使うこと。
正解例をあげておきます。

次回は

オブジェクト権限。