想象一下,你有很多表格都有VARCHAR(50)
列,名为Country
,有少量不同的国家/地区名称会重复数百万次,这里明智的做法是创建一个表格调用dbo.Country(CountryID, CountryName)
并使所有表都使用外键引用保存CountryID
。
问题是,每当我们想要对该列执行某些操作时,我们必须使用dbo.Country
加入所有查询。
但是所有连接似乎都遵循相同的模式,所以我的问题是,SQL Server可以自动执行吗?例如,我会在某个表中指定一个名为CountryName
的列,该列看起来像VARCHAR
但实际上存储为带有外键的CountryID
,并且SQL Server可以在必要时隐式添加JOIN
SQL Server或任何其他SQL数据库中是否有这样的功能?
答案 0 :(得分:0)
您无法“自动”执行此操作。但是,你有几个选择。
一种是在表格顶部创建一个自动进行连接的视图:
create view v_table as
select t.*, c.CountryName
from table t join
country c
on t.countryId = c.countryId;
或者,您可以使Country
成为枚举类型。这将允许它作为字符串访问,但存储为整数。