将查找/引用表移动到新架构

时间:2011-12-06 14:43:23

标签: asp.net-mvc asp.net-mvc-3 sql-server-2008 database-design ef-code-first

我们正在使用Visual Studio,SQL Server 2008 R2& A构建ASP.NET MVC3 Web应用程序。 EF Code First 4.1。

我们常常使用较小的,我们称之为“查找”的表格。例如,“状态”表包含“Id”和“名称”。随着应用程序的增长,这些表变得非常频繁,我想知道将这些较不重要的表“分组”远离应用程序关键的最佳方法。

我建议添加一个像“LkStatus”这样的前缀来帮助我,但是如何将所有查找表从dbo中移出并进入自己的模式呢?

任何人都可以看到这种方法有任何缺点吗?

谢谢保罗

3 个答案:

答案 0 :(得分:4)

此方法没有缺点。我个人喜欢图式的粉丝。我虽然使用Lookup

要更改表架构,您有两种方法:

ALTER SCHEMA Lookup TRANSFER dbo.SomeTable

ALTER AUTHORIZATION ON dbo.SomeTable TO Lookup

答案 1 :(得分:1)

这将取决于偏好。无论如何,真的没有“陷阱”。我更喜欢表前缀但不会被打扰。我们使用LU_ *。只要强制执行任一选项,维护线路就很容易。

答案 2 :(得分:0)

由于这些表很小,那么将它们组合成一个表怎么样?不使用表名作为伪键,而是使用真实密钥。例如,您可以拥有一个名为Lookup的表,其中包含Id,Type,Name和Value,其中Type ='Status'表示您的状态值。将聚簇索引设置为(类型,名称)会将相同类型的所有行物理地组合在一起,这样可以在需要时快速将它们全部作为一组读取。

如果你的名字可以有不同的数据类型,为每个必需的类型添加一个额外的列:一个用于整数,一个用于字符串,一个用于浮点数等。你可以使用XML列做类似的事情; T-SQL需要更多的努力。