0

潜在的な PHP/Mysql アプリケーション用のデータベースを作成する前に、MySql Workbench で自分のテーブルを見ていて、各テーブルを作成するときに外部キーを含めるオプションがあることに気付きました。

データベースを作成するときに、テーブルを作成する SQL ステートメントで外部キーを宣言する必要がありますか? または... PHPページのSQL selectおよびinsertステートメントでテーブルをリンクするだけですか? なぜですか、そうでないのですか?

4

3 に答える 3

0

まず、外部キー制約の重要性を学びます。

http://www.w3schools.com/sql/sql_foreignkey.asp

それに加えて、私は常にあなたのDBで作業する方がコードが少ないと信じています

于 2013-07-03T23:31:53.197 に答える
0

要するに、正しいアプリケーション コードを記述し、データベースに外部キーを用意する必要あります。

外部キーは、データの整合性を確保するための最も重要な方法の 1 つです (基本的に、外部キーはダングリング ポインターから保護します1 )。これは、並行環境でこれを行うためのほぼ唯一の正確でパ​​フォーマンスの高い方法です。

常に正しいデータを書き込むアプリケーション ロジックのみに依存するのは脆弱です2データベース自体は、主に宣言型の整合性制約3と、場合によっては非宣言型の手段4によって、可能な限り不正なデータから身を守る必要があります。


1ここでは「ポインター」という言葉を大まかに使用しています。

2データベースに書き込みを行うアプリケーションの 1 つにバグがあると、データが危険にさらされる可能性があります。複数のクライアントが関連するデータを同時に書き込もうとすると、キャッチするのが難しい競合状態が発生する可能性があります。ロックが必要になる可能性が高く、スケーラビリティに影響します。

3ドメインの整合性 (型システムと CHECK 制約)、キーの整合性 (PRIMARY KEY と UNIQUE 制約)、および参照整合性 (FOREIGN KEY 制約)。

4トリガーやストアド プロシージャなど。

于 2013-07-04T00:07:34.980 に答える