桌子上的物品太少了?

时间:2019-04-14 16:16:02

标签: database database-design

我正在创建一个网站,用户应指定的一件事是他/她的国家。我想大约有200个国家。哪种方法更好-将200个国家/地区存储在应用程序的列表/数组中(因此会占用更多的RAM)或将它们存储为表在数据库中?这些问题一般如何解决?

2 个答案:

答案 0 :(得分:1)

200行表本身并不是一个坏习惯。主要问题是使“国家/地区”列成为此表的外键会带来技术复杂性。国家是否定期来去?他们是否经常以要求将所有名称集中在一个表中的方式来更改名称?

我通常的方法是将country's two-letter country code存储在char(2)列中。这样一来,您就可以快速推断实际国家/地区的名称(而不是检查国家/地区ID 37的含义),而无需实际引入额外的表和额外的联接。

现在,如果您的应用程序实际上以此类国家/地区的数据为中心,那么有一个包含多个列的国家/地区表来存储有关该国家/地区的信息是很有意义的,但是我建议使用两个字母的国家/地区代码作为主键那个桌子。

答案 1 :(得分:1)

行数少不是问题。如果表很小,则数据库服务器可以将整个内容缓存在内存中。数据库适合小表。

如果将国家/地区存储在表中,则始终可以设置应用程序级缓存,以将内容的副本保存在内存中。在需要时在数据库中添加新条目很容易,您可以在缓存中设置过期时间,以便可以提取新条目。

我构建应用程序的首选方法是拥有一个与应用程序代码分离的应用程序级缓存,这样我就可以在不更改代码的情况下对其进行调整。这样一来,我知道以后可以在不更改代码的情况下调整缓存,并且不必在缓存时就进行编码。