如果您必须使用 SQL Server 2008 构建符合圣经比例的关系数据仓库,您会使用外键来强制数据完整性,还是会使用其他方法?
我喜欢外键,因为你只需要把它们弄好一次,它们总是在那里保护完整性。我正在考虑禁用,加载,启用路线。
有什么想法吗?
提前致谢。
如果您必须使用 SQL Server 2008 构建符合圣经比例的关系数据仓库,您会使用外键来强制数据完整性,还是会使用其他方法?
我喜欢外键,因为你只需要把它们弄好一次,它们总是在那里保护完整性。我正在考虑禁用,加载,启用路线。
有什么想法吗?
提前致谢。
首先,我不会构建(物理上)符合关系模式的数据仓库。提议的数据仓库是完全规范化的,还是问题中的“关系”一词只是表明它将构建在 SQL 数据库中?
哦,我当然会!您必须记住的是,您的数据库是您的数据存储,而不仅仅是前端的数据存储。这是细微的差别,但当您开始考虑未来时,这一点很重要。现在,您(大概)拥有管理应用程序,但谁能说将来仍然如此呢?
通过将尽可能多的验证加载到数据库中,您可以在某种程度上证明您的应用程序 - 至少如果其他人试图针对您的数据库进行开发,您的更多假设将成立。
在数据库端这样做的缺点是插入速度较慢,因此您需要权衡应用程序对读写的负担。在工作中,我们对读取的需求比对写入的需求多得多,因此参照完整性似乎很明显。但是,我们的表很大(并且可以免费导入),因此我们采用多步导入路线,即创建表、插入数据、创建索引,然后创建外键和其他约束。
我希望这有帮助!
是的,我通常会使用外键。这在任何数据库中都很重要,但如果仓库是一个包含许多表的复杂仓库,则尤其如此。
在仓库中使用完整性约束的原因与在任何其他数据库中非常相似:它将错误数据进入数据库的风险降至最低;它通常是实施此类完整性规则的最经济和最有效的方法;这意味着优化器可以使用这些约束来提高查询性能;这些约束也适用于使用数据并需要解释其结构的开发工具和用户。