保守している Web アプリケーションにいくつかの機能を追加する必要があり、アプリケーションが必要とする新しいデータを保存および取得するために、データベース (Sql Server 2010) を変更するためのパスを決定する必要があります。
「醜いが速い」パス:
Web アプリケーションには、ドメイン フィールドを指定して、ストアド プロシージャを介して取得およびフィルター処理できるさまざまなドメイン データを格納する、この「汎用ドメイン テーブル」が既にあります。
何かのようなもの:
| Id | Description | Domain |
|------------|-------------|--------------|
| 001 | Apple | Fruit |
| 002 | Peach | Fruit |
| 003 | Banana | Fruit |
| A01 | Yellow | Color |
| A02 | Red | Color |
| A03 | Green | Color |
SP_GetDomainValues @Domain='Fruit'
テーブルには、手間をかけずにデータを保存および取得するためのアプリケーション層が既にあります。
必要なのは、データベース スクリプトを作成して、必要な新しいレコードと適切な新しいドメインをテーブルに入力することだけです。
このアプリケーションには、それぞれが 1 つのドメインのみを格納する複数のドメイン テーブルもあることに注意してください。
「良いが遅い」パス:
データを保存および取得するために、さまざまなテーブル、ストアド プロシージャ、および DAL メソッドを作成する必要があります。
個人的には、次の 2 つの主な理由から2 番目のアプローチが好きです。
1 つの大きなテーブルのサブセットではなく、テーブルに自然に結合するため、クエリでデータを使用する方がはるかに簡単です。
データは非常に自然に外部キー制約を使用して検証できますが、おそらく「genericDomain」という名前のテーブルが 1 つある場合、これは実現できません。完全に可能ではないというわけではありません。制約を使用するのは面倒です
どちらを選択するかを決定するのに役立つある種の厳格な比率がなければ、毎回迅速で汚い道をたどることになると私は思う傾向があります.
経験上、第一選択は設計が悪いのか、罪悪感なく使える場合があるのか?