1.やさしい
GRANT と REVOKE は SQL のどの部分に属しますか?
- Aデータ定義言語(DDL)
- Bデータ操作言語(DML)
- Cデータ制御言語(DCL)
- Dデータ問い合わせ言語(DQL)
2.やさしい
複合キーとは何ですか?
- A2 つ以上の列からなるキー
- B重複した値を許すキー
- Cデータベースが生成するキー
- D別のテーブルに保存されたキー
3.やさしい
代理キー(サロゲートキー)とは何ですか?
- Aビューでだけ使われるキー
- Bメールアドレスのような実世界のデータから作ったキー
- C別のテーブルを参照するキー
- D自動採番の id のように、業務上の意味を持たない人工的な識別子
4.ふつう
学生は多くの科目を履修でき、科目には多くの学生がいます。これはテーブルでどのようにモデル化しますか?
- A1 つの列に科目 id のリストを保存して
- B学生と科目の両方への外部キーを持つ中間テーブルで
- C学生と科目を 1 つのテーブルにまとめて
- Dstudents テーブルに courses を指す外部キー列 course_id を置いて
5.ふつう
第一正規形(1NF)で求められるのは次のうちどれですか?
- Aすべてのテーブルがちょうど 1 列であること
- B外部キーがないこと
- Cすべての非キー列が、キー全体に従属し、キー以外のものには従属しないこと
- D各列が原子的な値を持ち、繰り返しグループがないこと
6.ふつう
SQL インジェクション(SQL injection)とは何ですか?
- Aユーザー入力によって SQL クエリの構造が変えられてしまう攻撃
- Bデータベースのバックアップ手法
- Cインデックスを追加する方法
- D1 つの INSERT 文で多数の行を高速に挿入する方法
7.むずかしい
EXPLAIN(PostgreSQL では EXPLAIN ANALYZE)はクエリについて何を示しますか?
- A関係代数の記法だけによるクエリの書き換え
- Bクエリ中の各 SQL キーワードの意味
- Cクエリを実行したユーザーの一覧
- Dスキャンや結合方法など、オプティマイザが選んだ実行計画
8.むずかしい
トランザクション T1 は行 A をロックして行 B を待ち、T2 は行 B をロックして行 A を待っています。一般的な DBMS はどうしますか?
- Aデッドロックを検出し、一方のトランザクションを犠牲として中止する
- B両方のトランザクションを同時にコミットする
- C一方がふつうにコミットするまで、両方のトランザクションを待たせる
- D2 つのトランザクションを 1 つにまとめる
解答
- 1. C · データ制御言語(DCL)
- 2. A · 2 つ以上の列からなるキー
- 3. D · 自動採番の id のように、業務上の意味を持たない人工的な識別子
- 4. B · 学生と科目の両方への外部キーを持つ中間テーブルで
- 5. D · 各列が原子的な値を持ち、繰り返しグループがないこと
- 6. A · ユーザー入力によって SQL クエリの構造が変えられてしまう攻撃
- 7. D · スキャンや結合方法など、オプティマイザが選んだ実行計画
- 8. A · デッドロックを検出し、一方のトランザクションを犠牲として中止する
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。