7

アプリケーションが表示するすべてのデータのバックエンドに SQL Server DB を備えた Silverlight を使用して、Web ベースのアプリケーションを実装しています。私は、アプリケーションを簡単に拡張できるようにしたいと考えており、データベースを疎結合にし、すべてを外部キーで結び付けないようにすることが方向性だと感じています。いくつかの例を検索しようとしましたが、役に立ちませんでした。

これを始めるのに役立つ情報や良い出発点/サンプル/例を誰かが持っていますか?

大変助かります。

敬具、

4

4 に答える 4

9

用語を少し混同していると思います。「疎結合」とは、ソフトウェア コンポーネントが相互にあまり依存していないため、同じプログラム内で一緒にしないと機能したり、コンパイルさえできなかったりすることが望ましいことを指します。同じデータベース内のテーブル間の関係を説明するために使用される用語を見たことがありません。

「正規化」と「非正規化」という用語で検索すると、より良い結果が得られると思います。

于 2009-09-14T12:16:54.943 に答える
3

データ ウェアハウスのように、一度に大量の挿入を行う場合を除き、外部キーを使用してください。正規化は狂ったようにスケールするので、それを利用する必要があります。外部キーは高速であり、一度に何百万ものレコードを挿入する場合、制約は実際にあなたを妨げます.

クラスター化インデックスを持つ整数キーを使用していることを確認してください。これにより、テーブルの結合が非常に高速になります。外部キーなしで取り掛かることができる問題は多く、イライラさせられます。私は週末中ずっとそうしていましたが、外部キーを持たないように意識的に選択しました (ただし、数テラバイトのデータがあります)。

于 2009-09-14T11:51:45.260 に答える
1

そのようなことを考える前に、データの整合性について考える必要があります。外部キーが存在するため、レコードの基になっているプラ​​イマリデータが存在しない場合、レコードをテーブルに配置することはできません。外部キーを使用しない場合、たとえば注文が添付されている顧客が誰であるかが実際にはわからないため、遅かれ早かれ(おそらくより早く)価値のないデータになってしまいます。外部キーはデータ保護であるため、使用しないことを検討しないでください。

そして、すべてのデータがアプリケーションからのものであると思っていても、実際には、これは単に真実ではありません。データは、複数のアプリケーションから、大量のデータのインポートから、クエリウィンドウから取得されます(誰かがすべての価格を更新することを決定したときに、ユーザーインターフェイスから一度に1つの価格を更新しないことを考えてください)。データは多くのソースからデータベースに入る可能性があり、データベースレベルで保護する必要があります。少ないことは、アプリケーション全体とデータを危険にさらすことです。

于 2009-09-14T13:34:19.200 に答える
0

データベース スクリプトなどの外部ソースからデータを入力する場合のデータベース セキュリティに関する興味深いコメント。

于 2010-05-06T06:11:50.237 に答える