正規化のプロセス中に、個別のエンティティを表すフィールドのグループが、より大きなテーブルやより中心的なテーブルから別のテーブルに削除されます。次に、共通フィールド(通常はID)を使用して、それらの関係を維持します。以下に例を示します:
リレーショナルデータベースでは、テーブル間の参照整合性は外部キー制約を使用して強制されます。
このブログでは、外部キーの仕組みと、 Navicat 16 for MySQL を使用してMySQLで外部キー制約を作成する方法について説明します。
データベーステーブルを正規化するプロセスの一環として、冗長な列は、上位レベルのテーブルから別の補助テーブルに抽出されます。これは、一部のフィールドが親エンティティと1対多の関係にあるために発生することがよくあります。例えば、Navicat Data Modelerを使用して生成された次のモデルを取り上げてみましょう:
ほとんどのデータベースシステムでは同時実行制御にロックが使用されますが、PostgreSQLは少し異なる方法で動作します。つまり、マルチバージョンモデル(Multi-Version Concurrency Control、略してMVCCとも呼ばれます)を使用してデータの一貫性を維持します。その結果、データベースにクエリを実行すると、基になるデータの現在の状態に関係なく、各トランザクションはしばらく前のデータのスナップショットを参照します。これにより、同じデータに対する他の同時トランザクション更新によって引き起こされる可能性のある不整合なデータをトランザクションが表示することがなくなり、データベースセッションごとにトランザクションが分離されます。このブログ記事では、MVCCプロトコルの仕組みの概要を簡単に説明するとともに、MVCCアプローチの長所と短所についても説明します。
Navicat Monitor 3 のクエリアナライザー画面の上部には、待ち時間が最も長いクエリを示すチャートがあります:
遅延クエリは全てのクラッシュを引き起こしてしまう可能性があるため、遅延クエリを特定することが重要です。
データベース監査の背後にある考え方は、データベーステーブルに誰がいつアクセスしたか、テーブルにどのような変更が加えられたかを把握することです。これは、エンタープライズレベルのアプリケーションの標準的な最小要件とみなされているだけでなく、銀行業務やサイバーセキュリティなどの多くの分野の法的要件でもあります。データベース監査証跡は、不正アクセス、問題のある設定変更など、アプリケーションのあらゆる種類の問題を調査するために不可欠です。
今日のブログでは、rentalテーブルを監査するために、MySQL Sakilaサンプルデータベース にログを追加します。データベースはDVDレンタルストアのビジネスプロセスを表すため、これはキーテーブルです。