Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 非正規化とパフォーマンスのトレードオフ | セクション
データベース設計パターン

book非正規化とパフォーマンスのトレードオフ

メニューを表示するにはスワイプしてください

非正規化は、複数の関連テーブルからデータを1つのテーブルにまとめることで、意図的に冗長性を導入するプロセス。データが頻繁に一緒にアクセスされ、複数テーブルの結合によるオーバーヘッドがボトルネックとなる場合に、クエリ性能向上のために用いられる手法。正規化は冗長性の排除とデータ整合性の維持を目的とするが、非正規化は高速なデータ取得のために一部の重複を許容する。レポーティングや分析、複雑な結合がコストとなる読み取り中心のワークロード最適化などの状況で、非正規化の検討が推奨される。

1234567891011121314151617181920212223242526272829303132
-- Denormalized table structure combining student and course information CREATE TABLE student_course_info ( enrollment_id INT PRIMARY KEY, student_id INT, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(100), course_id INT, course_name VARCHAR(100), course_code VARCHAR(20), credits INT, enrollment_date DATE, grade CHAR(2) ); -- Example of inserting combined data from normalized tables INSERT INTO student_course_info SELECT e.enrollment_id, s.student_id, s.first_name, s.last_name, s.email, c.course_id, c.course_name, c.course_code, c.credits, e.enrollment_date, e.grade FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id;
copy

関連データを非正規化構造でまとめて保存することで、情報取得時の結合処理を減らすことが可能。特に複数テーブルのデータを必要とするクエリで、顕著なパフォーマンス向上が期待できる。一方で、非正規化にはトレードオフが存在する。主な欠点はデータの冗長性であり、学生名やコース情報など同じ内容が複数行に繰り返されるため、ストレージ消費量が増加し、更新作業も複雑化する。データの更新が適切に管理されない場合、不整合が発生するリスクも高まる。非正規化の採用は、これらのリスクとパフォーマンス向上の効果を慎重に比較検討する必要がある。

1234567891011
-- Querying a student's course enrollments in a normalized schema SELECT s.first_name, s.last_name, c.course_name, e.grade FROM students s JOIN enrollments e ON s.student_id = e.student_id JOIN courses c ON e.course_id = c.course_id WHERE s.student_id = 1; -- Querying the same information from a denormalized table SELECT first_name, last_name, course_name, grade FROM student_course_info WHERE student_id = 1;
copy

1. 非正規化の潜在的な利点は何ですか?

2. 非正規化テーブルに関連するリスクは何ですか?

3. どのような場合に正規化よりも非正規化が好まれるでしょうか?

question mark

非正規化の潜在的な利点は何ですか?

正しい答えを選んでください

question mark

非正規化テーブルに関連するリスクは何ですか?

正しい答えを選んでください

question mark

どのような場合に正規化よりも非正規化が好まれるでしょうか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  6
some-alt