2009-05-18 48 views
1

我想就处理具有正常(传统)数据库数据的情况的最佳方式提供一些观点,同时还有更像“ ini文件“数据,你想保持它们之间的完整性(heirachical数据?)。传统的数据库设计和完整性的ini-file-like数据

例如,假设我有一个包含100行的“CURRENCY”表。同时我有一个'默认货币'的系统设置,并且必须映射到这100行中的一行。

现在我会将默认货币代码存储在XML配置文件,ini文件或Windows注册表中。这对于数据来说很好,但它的一些工作确保XML文件中的值确实对应于数据库中的有效外键值。

如何在数据库中完成(声明性地?),以便数据可以引用并因此对关系数据具有完整性?

回答

0

将值按名称存储在配置文件中可能比较合理,而不是使用外键ID。配置文件可能有“USD”,那么你的代码会按名称查找来获取CURRENCY表中的行。

0

它不能这样做,因为配置的设置可以随时通过外部程序进行更新,如文本编辑器,注册表编辑器等,以防止这将是有持续监视的文件或注册表中的服务运行的唯一方法设置并禁止任何更改,除非数据库正在运行并且还可以执行完整性检查。这显然是矫枉过正的 - 正确的解决方案是将配置数据存储在数据库中。

+0

我猜我在问什么,这种事情只能在数据库中完成?即不是使用配置文件,现代数据库如何处理这个问题(而不是使用只有一行的表的相当丑陋的方法)? – 2009-05-18 08:14:53

+0

只有一行的表有什么问题?这不是难看的,也许是最好的解决方案。但是,大多数应用程序都有多个配置设置,因此最终可能会有多行。 – 2009-05-18 08:17:43

1

它可能是一个包含2列,一个键(或名称)和一个值列的表做你所需要的。将关系数据放入规范化的表中,并将'config'类型的数据放入键/值对表中。