データベースの基礎
関係データベースの表とキー、SQLの検索・集計・結合・副問い合わせ、正規化とE-R図、トランザクションとACID特性、同時実行の問題と分離レベル、ロックとデッドロック、障害からの回復、インデックス、NoSQLを3択問題で学べます。
—あなたの正答率
0 / 40解いた問題
データベースの基礎の要点
ネットショップの在庫も銀行の口座も、多くの情報システムはデータベースにデータを預けています。関係データベースは、データを表の形で持ち、主キーや外部キーで表どうしを結び付け、SQLという言語で必要なデータを取り出したり書き換えたりします。
SQLのSELECT文による検索、GROUP BYとHAVINGによる集計、内部結合と外部結合、副問い合わせを、小さな表の例で結果を数えながら学びます。表を正しく分ける正規化とE-R図、トランザクションのACID特性、更新の消失やダーティリードなどの同時実行の問題と分離レベル、ロックとデッドロック、ログを使った障害からの回復、インデックスのしくみとNoSQLの考え方も扱い、基本情報技術者試験・応用情報技術者試験のデータベース分野の学習にも役立ちます。
データベースの基礎の問題一覧(40問)
- 関係データベースの用語で、表(リレーション)の1行に当たるものはどれか。
- 関係データベースの表で、主キーに指定する列(または列の組)が満たさなければならない条件はどれか。
- 社員表(社員番号, メールアドレス, 氏名, 部署)で、社員番号とメールアドレスはどちらも社員ごとに異なり、NULLにならない。氏名と部署は、ほかの社員と同じになることがある。この表の候補キーをすべて挙げたものはどれか。
- 履修表(学生番号, 科目番号, 成績)は、どの学生がどの科目を履修し、どんな成績だったかを記録する。1人の学生は複数の科目を履修し、1つの科目は複数の学生が履修する。同じ学生が同じ科目を2回登録することはないとき、この表の主キーとして適切なものはどれか。
- 顧客表(顧客ID, 氏名)の主キーは顧客IDで、注文表(注文ID, 顧客ID)の顧客IDは、顧客表の顧客IDを参照する外部キーとして定義されている。顧客表には顧客IDが'C1'と'C2'の行だけがある。この状態で INSERT INTO 注文 VALUES ('O9', 'C5') を実行したときの結果として正しいものはどれか。
- SQLの文は、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)に分けられる。DDLに分類されるものはどれか。
- 商品表に、(商品名, 価格)が(ペン, 120)、(ノート, 250)、(消しゴム, 80)、(ファイル, 300)、(定規, 150)の5行がある。SELECT 商品名 FROM 商品 WHERE 価格 >= 150 ORDER BY 価格 DESC の結果として、返される行を順に並べたものはどれか。
- 社員表の部署の列に、上の行から順に 営業、開発、営業、総務、開発、営業 の値が入っている(全6行)。SELECT DISTINCT 部署 FROM 社員 の結果は何行になるか。
- SQLで DELETE FROM 社員 を、WHERE句を付けずに実行したときの結果として正しいものはどれか。
- 試験表の点数の列に、80、NULL、70、90 の4つの値がある(NULLは未受験を表す)。SELECT AVG(点数) FROM 試験 の結果はどれか。
- 成績表の点数の列に、50、NULL、70、NULL、90、30 の6つの値がある。SELECT COUNT(*), COUNT(点数), AVG(点数) FROM 成績 の結果を順に並べたものはどれか。
- 社員表(社員番号, 部署, 給与)から、部署ごとの平均給与が300以上の部署と、その平均給与を求めたい。正しいSQL文はどれか。
- 売上表(店舗, 金額)に、(A, 500)、(A, 700)、(B, 300)、(B, 400)、(C, 1200)、(D, 200)、(D, 900) の7行がある。SELECT 店舗, SUM(金額) FROM 売上 GROUP BY 店舗 HAVING SUM(金額) >= 1000 の結果は何行になるか。
- 社員表(氏名, 部署, 給与)に8行あり、部署ごとの給与は、営業が320、280、350、開発が400、310、総務が260、300、企画が330である。SELECT 部署, COUNT(*) FROM 社員 WHERE 給与 >= 300 GROUP BY 部署 HAVING COUNT(*) >= 2 の結果は何行になるか。
- 社員表(社員番号, 氏名, 部署ID)に4行あり、部署IDは順に10、20、10、NULLである。部署表(部署ID, 部署名)には部署IDが10、20、30の3行がある。SELECT 社員.氏名, 部署.部署名 FROM 社員 INNER JOIN 部署 ON 社員.部署ID = 部署.部署ID の結果は何行になるか。
- 社員表(社員番号, 氏名, 部署ID)に5行あり、部署IDは順に10、20、10、NULL、NULLである。部署表(部署ID, 部署名)には部署IDが10、20、30の3行がある。SELECT 部署.部署名, 社員.氏名 FROM 部署 LEFT OUTER JOIN 社員 ON 部署.部署ID = 社員.部署ID の結果は何行になるか。
- 表Rの列xの値は 1、1、2、3 の4行、表Sの列xの値は 1、1、2、4 の4行である。SELECT * FROM R INNER JOIN S ON R.x = S.x の結果は何行になるか。
- 顧客表(顧客ID, 氏名)には (C1, 青木)、(C2, 井上)、(C3, 上田)、(C4, 江藤) の4行がある。注文表(注文ID, 顧客ID, 金額)には (O1, C1, 3000)、(O2, C2, 8000)、(O3, C1, 6000)、(O4, C3, 2000)、(O5, C2, 9000) の5行がある。SELECT 氏名 FROM 顧客 WHERE 顧客ID IN (SELECT 顧客ID FROM 注文 WHERE 金額 > 5000) の結果は何行になるか。
- 顧客表(顧客ID, 氏名)と注文表(注文ID, 顧客ID, 金額)から、一度も注文していない顧客の氏名を求めたい。正しいSQL文はどれか。
- 関係データベースのビューの説明として、正しいものはどれか。
- 関係データベースの表を正規化する主な目的はどれか。
- 受注表(受注番号, 商品番号, 数量, 顧客番号, 顧客名)の主キーは{受注番号, 商品番号}で、関数従属は {受注番号, 商品番号} → 数量、受注番号 → 顧客番号、顧客番号 → 顧客名 である。この表を第3正規形まで正規化した結果として正しいものはどれか。
- 社員表(社員番号, 氏名, 部署コード, 部署名)の主キーは社員番号で、どの列も1つの値だけを持つ。関数従属は 社員番号 → 氏名、社員番号 → 部署コード、部署コード → 部署名 である。この表の正規形として正しいものはどれか。
- 読み出しが大部分を占める集計用のデータベースで、正規化した表をあえて1つにまとめ、同じデータを重複して持たせる設計(非正規化)を行うことがある。この設計の長所と短所の組み合わせとして正しいものはどれか。
- E-R図で、学生と科目の間に「1人の学生は複数の科目を履修し、1つの科目は複数の学生が履修する」という多対多の関係がある。この関係を関係データベースの表で実現する方法として、適切なものはどれか。
- 口座表で、トランザクションを開始し、口座Aの残高から300を引く UPDATE と、口座Bの残高に300を足す UPDATE を実行した。その後、COMMITの代わりに ROLLBACK を実行した。口座表はどうなるか。
- トランザクションが持つべきACID特性のうち、「口座Aから引き落として口座Bに入金する振替の処理が、途中で障害が起きても、両方とも行われるか、まったく行われないかのどちらかになる」という性質はどれか。
- 在庫表のある商品の在庫数は10である。トランザクションT1は在庫数を読み出して3を引いた値を書き込み、T2は在庫数を読み出して5を引いた値を書き込む。ロックをかけずに、T1の読み出し、T2の読み出し、T1の書き込み、T2の書き込みの順に実行されたとき、最終的な在庫数はいくつになるか。
- トランザクションを同時に実行したときに起きる問題のうち、ダーティリードの説明として正しいものはどれか。
- トランザクションT1が SELECT COUNT(*) FROM 注文 WHERE 金額 >= 1000 を実行したところ8件だった。その直後に、T2が金額2000の注文の行をINSERTしてコミットした。T1が同じSELECT文をもう一度実行すると9件になった。この現象はどれか。
- SQLの標準規格が定める分離レベルのうち、READ COMMITTED で起こりうる現象の組み合わせとして正しいものはどれか。
- トランザクションT1が、ある行に共有ロックをかけて読み出している。この行に対して、T2が共有ロックを、T3が専有ロック(排他ロック)を要求した。T1がロックを解除するまでの間について、正しいものはどれか。
- トランザクションの排他制御で使われる2相ロック方式の説明として、正しいものはどれか。
- トランザクションT1は行Aに専有ロックをかけたあと行Bのロックを要求し、T2は行Bに専有ロックをかけたあと行Aのロックを要求したため、どちらも先へ進めなくなった。DBMSがこの状態を検出したときに行う一般的な対処はどれか。
- 多くのDBMSは、データを更新するとき、更新の内容をログ(ジャーナル)に記録し、そのログをデータベース本体より先に不揮発性の記憶装置に書き込む(WAL: ログ先行書き込み)。この方式をとる主な理由はどれか。
- トランザクションT1〜T5があり、障害が発生する前にチェックポイントを1回取った。T1はチェックポイントの前に開始してコミットした。T2とT3はチェックポイントの前に開始し、T2はチェックポイントのあと障害の前にコミットし、T3は障害の時点でコミットしていなかった。T4とT5はチェックポイントのあとに開始し、T4は障害の前にコミットし、T5はコミットしていなかった。障害のあとの回復で、ログを使ってロールフォワードする必要があるトランザクションはどれか。
- 100万行ある会員表の会員番号の列にB+木のインデックスを作成した。一般に期待できる効果と、その代償の組み合わせとして正しいものはどれか。
- 100万行の会員表で、会員番号(すべて異なる)、都道府県(47種類)、性別(2種類でほぼ半々)の列に、それぞれB+木のインデックスを作ることを考える。WHERE句で1つの列の値を指定して検索するとき、インデックスの効果が最も小さいと考えられる列はどれか。
- NoSQLと呼ばれるデータベースのうち、キー・バリュー型の特徴として、一般に正しいものはどれか。
- 複数のサーバにデータの複製を置く分散データベースについての、CAP定理の説明として適切なものはどれか。
データベースの基礎の参考書を探す PR
Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。
コンピュータシステムのほかの分野
- 計算機算術 IEEE 754・固定小数点・丸め誤差
- 確率・統計と待ち行列 場合の数・確率分布・推定と検定・M/M/1
- 命令セット・アセンブリ RISC-V・アドレッシング・呼び出し規約
- コンパイラ 構文解析・SSA・最適化・レジスタ割り当て
- リンカ・ローダと実行形式 ELF・シンボル解決・再配置・動的リンク
- OSとハードウェア 割り込み・システムコール・ページフォールト
- Linuxとコマンドラインの基礎 シェル・パーミッション・パイプ・スクリプト
- メモリ階層と性能 キャッシュ・置き換え方式・ミスの3分類
- マルチコアと同期 MESI・アトミック命令・メモリバリア
- GPUプログラミング ワープ・共有メモリ・合体アクセス・占有率
- AIハードウェアとソフトウェアスタック 推論と学習・量子化・Rooflineモデル
- 機械学習の基礎 学習の種類・評価指標・ニューラルネットワーク
- 組込み・ファームウェア GPIO・UART/SPI/I2C・RTOS
- ハードウェア記述言語と検証 Verilog・ラッチ・状態機械・テストベンチ
- インターフェース・バス規格 PCIe・USB・SerDes・CXL
- ネットワークの基礎 TCP/IP・サブネット計算・DNS・TLS
- Web技術の基礎 HTTP・Cookie・REST・CORS・キャッシュ
- 無線通信の基礎 変調・OFDM・MIMO・RF回路
- 情報セキュリティの基礎 暗号・認証・Web攻撃と対策
- データ構造とアルゴリズム 計算量・探索・ソート・グラフ
- プログラミングの基礎(擬似言語のトレース) 擬似言語・トレース・配列・再帰
- C言語の基礎 ポインタ・メモリ・未定義動作
- ソフトウェア開発とプロジェクト管理 開発プロセス・テスト・日程とコストの管理
- 経営戦略と会計の基礎(ストラテジ系) 会計・損益分岐点・経営戦略・マーケティング
- サービスマネジメントとシステム監査 SLA・インシデントと問題・監査と内部統制
- システム構成と信頼性設計 冗長化・RAID・バックアップ・クラウド
- クラウドとコンテナの基礎 Docker・Kubernetes・責任共有モデル・IaC
- 性能評価・プロファイリング アムダールの法則・CPI・ボトルネック
- ハードウェアセキュリティ サイドチャネル・セキュアブート・TEE・PUF
- 電力管理(ソフトウェア制御) DVFS・パワーゲーティング・スリープ状態