我目前正在尝试改进遗留数据库的设计,我有以下情况
目前我有一个表 SalesLead,我们在其中存储 LeadSource。
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',我不想处理查询。