Jam*_*ers 2 abstraction hard-coding
有一段时间,许多人告诉我,美国国家(和地区)的列表应存储在数据库表中,并缓存给使用该信息的应用程序.他们为此提供的唯一理由是促进正常化,因为"这就是我们一直以来的做法".
现在,如果列表经常因为应用程序的范围在国际上发生变化(比如包括加拿大省),我可以理解将列表抽象为数据表,该数据表也表示国家标识符.但是,如果列表几乎被锁定并且仅在应用程序的一个屏幕上使用,那么值得进行查询和缓存吗?存储SMALLINT外键比CHAR(2)好得多的区别?它总是实用吗?
只是在思考我和我合作过的公司所见过的这种趋势.
我把它们放在数据库中,原因如下:
这只是很好的规范化实践.
如果我可以通过将其放入数据库中来避免这种情况,为什么要对应用程序中的任何数据进行硬编码?
就个人而言,我喜欢保证独特性的舒适性.当两个表指向同一个外键时,我知道它们正在引用相同的东西.当两个碰巧共享相同的两个字符代码时...那么,这取决于应用程序.
约束检查....许多两个字符代码是非法的,但数据库将无法帮助您.非法外键输入要困难得多.
速度.我没有基准测试,所以我可能错了,但我打赌让数据库为你组合条目比你自己更快.如果您正在使用状态代码进行其他任何操作(例如,要获取状态的非缩写名称,或维护该状态的有效zipcode列表),则连接可能比您编写的任何内容都快.