1

データベースに適切な関係を設定することは、データの整合性以外の何かに役立ちますか?

それらはパフォーマンスを改善または妨害しますか?

4

8 に答える 8

3

外部キーに対応する明らかなインデックスが配置されている限り、パフォーマンスに目に見えるマイナスの影響はありません。これは、操作しなければならない最も簡単なデータベース機能の 1 つです。

于 2009-03-15T03:18:07.890 に答える
1

適切な関係は、データ(またはデータの意図)を省略するよりも、人々がデータ(またはデータの意図)をよりよく理解するのに役立つと言わざるを得ません。特に、データを維持するための全体的なコストが非常に低いためです。

それらの存在は、アーキテクチャの観点を除いてパフォーマンスを妨げることはありません(他の人が指摘しているように、データの整合性は外部キー違反を引き起こすことがあり、何らかの影響を与える可能性があります)が、IMHOは多くの利点(正しく使用されている場合)よりも重要です。

FKを使用するかどうかを尋ねていなかったのは知っていますが、FKを使用する理由(および結果に対処する必要がある)について、いくつかの視点を追加したいと思いました。

ORMを使用する予定がある場合(おそらく後で)、外部キーが必要になるなど、他の考慮事項もあります。また、ETL /データのインポートとエクスポート、および後でレポートとデータウェアハウジングに非常に役立ちます。

外部キーは基本的なビジネスロジックを実装しているため、他のアプリケーションがスキーマを利用する場合にも役立ちます。したがって、アプリケーション(およびその他のアプリケーション)は、関係を認識している(そしてそれらを尊重している)だけで済みます。データの一貫性を維持し、消費するアプリケーションでのデータエラーの数を減らす可能性があります。

最後に、インデックスを配置する場所についてかなり適切なヒントが得られます。これは、FK値でテーブルデータを検索する可能性が高いためです。

于 2009-03-15T03:29:02.590 に答える
1

パフォーマンスに大きな影響を与えることはありません。唯一の障害は、挿入/更新/削除時の整合性のチェックです。

外部キーは一貫性を確保するため、データベース設計の重要な部分です。アプリケーションを破壊する可能性のあるデータの混乱に対する最低レベルの保護を提供するため、それらを使用する必要があります。もう 1 つの利点は、データベース ツール (視覚化/分析/コード生成) が外部キーを使用してデータを関連付けることです。

于 2009-03-15T03:18:46.593 に答える
0

データベース内の関係はパフォーマンスを向上または阻害しますか?

ツールボックス内の他のツールと同様に、得られる結果はその使用方法によって異なります。適切に指定された関係と適切に設計された論理データベースは、パフォーマンスに大きな恩恵をもたらす可能性があります。たとえば、正規化されたデータと非正規化されたデータの検索の違いを考慮してください。

于 2009-03-15T03:07:53.640 に答える
0

パフォーマンスに敏感なデータベースを構築した私の経験では、参照レコードが挿入/更新されるか、マスターレコードが削除されるたびに外部キーをチェックする必要があるため、外部キーはパフォーマンスを大幅に低下させます。証拠が必要な場合は、実行計画を見てください。

私は今でも文書化と使用するツールのためにそれらを保持していますが、特に DB へのアクセスがアプリケーション層のみである高性能システムでは、通常はそれらを無効にしています。

于 2009-06-12T21:26:37.803 に答える
0

パフォーマンスへの影響について: MS Access 2003 での私の経験では、マルチユーザー アプリケーションがあり、リレーションシップを使用して多くの参照整合性を適用する場合、エンド ユーザーの応答時間に関して大きな打撃を受ける可能性があります。

参照整合性を強制するには、さまざまな方法があります。Relationships のいくつかのルールを取り除き、フロントエンドにより多くの施行を組み込み、RI の一部を失うことにしました。もちろん、マルチユーザー環境では、その自由度には細心の注意を払う必要があります。

于 2009-06-12T21:10:54.453 に答える
0

データベース エンジンによっては、外部キー制約によって定義されたリレーションシップがパフォーマンスを向上させる場合があります。制約により、エンジンは、キーの親側のテーブルにデータが存在することについて特定の仮定を行うことができます。

MS SQL Server の簡単な説明は、http://www.microsoft.com/technet/abouttn/flash/tips/tips_122104.mspxにあります。他のエンジンについてはわかりませんが、このコンセプトは他のプラットフォームでも理にかなっています。

于 2009-03-15T04:41:10.280 に答える
0

データ内の関係は、宣言するかどうかに関係なく存在します。FK 制約を介して関係を宣言および適用すると、挿入/更新/削除が発生したときにデータをチェックするわずかなコストで、データ内の特定の種類のエラーを防ぐことができます。

リレーションシップを介してカスケード削除を宣言すると、データを削除する際の特定の種類のエラーを防ぐのに役立ちます。

関係を知ることは、クエリを作成するときにデータを柔軟かつ正確に使用するのに役立ちます。

テーブルを適切に設計すると、関係がより明確になり、より便利になります。データでリレーションシップを使用することは、リレーショナル データベースを最初に使用することの背後にある主要な機能です。

于 2009-03-15T05:33:36.393 に答える