現在、レガシーデータベースの設計を改善しようとしていますが、次のような状況があります
現在、LeadSource を格納するテーブル SalesLead があります。
Create Table SalesLead(
....
LeadSource varchar(20)
....
)
リード ソースはテーブルに保存されているので便利です。
Create Table LeadSource (
LeadSourceId int, /*the PK*/
LeadSource varchar(20)
)
したがって、一方から他方への外部キーを作成し、正規化されていない列を削除したいだけです。
すべての標準的なもの、私は願っています。
これが私の問題です。私は書く代わりにその問題から逃れることができないようです
SELECT * FROM SalesLead Where LeadSource = 'foo'
これは完全に明白であり、私は今書かなければなりません
SELECT * FROM SalesLead where FK_LeadSourceID = 1
また
SELECT * FROM SalesLead
INNER JOIN LeadSource ON SalesLead.FK_LeadSourceID = LeadSource.LeadSourceId
where LeadSource.LeadSource = "foo"
LeadSource フィールドの内容を変更すると、これが壊れます。
私のアプリケーションでは、SalesLead の LeadSource の値を変更したいときはいつでも、1 から 2 に更新したくありません (たとえば)。開発者にこれらのマジック ナンバーを覚えさせたくないからです。ID は任意であり、そのままにしておく必要があります。
アプリのコードでそれらへの依存を削除または無効にするにはどうすればよいですか?
私のソリューションがサポートしなければならない言語を編集する
- .NET 2.0 + 3 (価値のある asp.net、vb.net、および c#)
- vba (アクセス)
- デシベル (MSSQL 2000)
2.0編集結合は問題ありませんが、リクエストに応じて「foo」が「foobar」に変更される可能性があり、クエリを実行したくありません。