データの基礎応用
銀行が「顧客ID・口座番号・口座種別・残高」を持つ口座テーブルを設計しており、同一顧客が複数口座を保有する場合があります。新しい前提として「顧客は最大3つの普通預金口座しか保有できない」という業務ルールが追加されました。このルールをデータベース制約で直接実装することはできないため、アプリケーションロジックで検証していますが、管理者が直接SQLで新規口座を挿入する際にこのルールを迂回される恐れがあります。データベースレベルでこのルールを自動的に強制する最適な仕組みはどれか?
A.主キー制約にルール記述を追加する
✗ 主キー制約は一意性の保証が目的で、複雑な業務ルール(同一顧客の口座数上限)は実装できません。
B.CHECK制約を用いて列単位で条件を指定する
✗ CHECK制約は単一行内の列値のみ比較可能で、「同一顧客の他行データをカウント」のような複数行にまたがる複雑なロジックは実装できません。
C.トリガー(TRIGGER)を作成し、INSERT時にルール違反をチェックして拒否する← 正解
✓ 正解です。トリガーは複数行にまたがる集計ロジック(COUNT)を実行してルール違反を検出・拒否でき、あらゆるINSERT経路(アプリケーション経由・管理者の直接SQL)を保護します。
D.ビュー(VIEW)を作成して、アプリケーションからの直接テーブルアクセスを禁止する
✗ ビューは表示制御のみで、制約強制機能がなく、直接テーブルアクセスで迂回されます。
この問題のポイント
トリガーは複数行にまたがる集計ロジック(COUNT)を実行してルール違反を検出・拒否でき、あらゆるINSERT経路(アプリケーション経由・管理者の直接SQL)を保護します。
「データの基礎」の他の問題
ある製造工場がQC検査ラインで以下4種類のデータを収集しています。「半構造化データ」に分類されるのはどれか?ある銀行が2つのシステムを運用しています。①ATM出金処理(毎秒数千件・ACID保証必須・即時応答)と②全支店の月次収益…あるECサイトが「注文を受けた瞬間に在庫を引き当て、15秒以内に在庫不足アラートを送信する」要件を持っています。最も適し…データパイプラインの設計で「生データのままAzure Synapse Analyticsへロードし、Synapseの大規…ネット銀行が「A口座から1万円引き落とし」と「B口座に1万円入金」を同一トランザクション内で実行中にシステム障害が発生し…注文管理テーブルに「注文ID・顧客名・顧客住所・商品名・商品単価・数量」が1テーブルに入っており、同一顧客が別注文をする…
IT・クラウド の関連資格
AWS Certified Cloud Practitioner(CLF-C02)
AWSクラウドの入門資格。クラウドの概念・AWSのコアサービス・セキュリティ・料金モデルを問う。
AWS Certified Solutions Architect - Associate(SAA-C03)
AWSでのシステム設計能力を問うアソシエイト資格。高可用性・セキュリティ・コスト最適化の設計が中心。
AZ-900:Microsoft Azure Fundamentals
クラウドとAzureの基礎を問うMicrosoft認定資格。クラウドの概念、Azureの主要サービス、セキュリティ・コンプライアンス・料金を扱う。