2010-05-25 106 views
1

我的Web应用程序中有很少的字符串列表,我不知道在DB或只是类中存储的位置。存储在数据库中还是不存储?

即。我有7个主要的浏览器用户进入该网站。我想保存这些统计数据,因此我需要在UserLogin数据库中创建浏览器列。我不想浪费空间和资源,因此我可以在每个登录行中保存完整的浏览器名称。所以,我要么需要保存browserID字段,并将其与浏览器表挂钩,这将存储名称后面的数据库规范化规则或具有排序的Dataholder抽象类,其中有一个浏览器列表,我可以通过它的ID检索浏览器名称...

问题该怎么办?这几个数据列表每个包含不超过200个项目,所以我认为把它们作为抽象类是有意义的,但是我不知道MS-SQL是否会很好地处理多个连接。想想想法时,我有国家,IP,语言,浏览器和几个统计用户..

感谢

回答

1

我一直在这个围栏的两边。

我的经验法则是:

如果这些名单的变化之一,将我所要做的修改代码,太?

(例如:你的情况,如果有人写道:“另一个浏览器”明天,我需要编写一个迎合它的代码?)

如果答案是“最有可能是”或“肯定“你可以把它留在代码中。 在所有其他情况下(甚至只是“50%-50%”),您最好将其放入数据库或至少属性文件中。有基于此数据提供的统计数据(如:“有多少用户使用资源管理器”),你最好把它放在DB反正:它成为你的域数据的一部分,因此它必须有


关于。 “域数据”部分

存储在数据库中的信息是应用程序的“域数据”,从某种意义上说,它是一个(希望一致的)表示你的应用程序的内容 - 它代表你的应用程序的“已知的宇宙”。 如果你同意这个定义,那么你还必须接受:在数据库中有99.9%的“现实”没有意义,而在其他情况下只有0.1% - 如果没有其他的话,它会使一些操作变得麻烦您只能存储smallint,您无法使用类将其解码为“Firefox”中的“1”或为最终用户提供其他密钥来对其进行后处理,而无法创建有意义的报告)。 这也使你不可能利用一些固有的数据库技术,如外键(如果你只是使用smallint而不将它与任何其他表相关联,谁保证“10”在你的域中是可接受的值?)

+0

我不明白“域名数据”是什么意思?当然,我会使用不同的统计数据,但只有tinyint将存储在数据库中,而实际名称将在类内... 感谢您对其余的建议。像浏览器,国家,语言等数据不会经常改变。所以还有另一个理由让它在课堂上... – eugeneK 2010-05-25 12:27:23

+0

编辑答案试图澄清一点更好。 – 2010-05-25 13:49:40

1

MS SQL处理多个连接得很好;这取决于你想要存储数据的位置。作为另一种选择,您也可以考虑使用XML。我会考虑数据库或XL;与数值在代码中相比,更改值更容易(必须在生产时重新编译/部署才能更改)。

HTH。

+0

另一个原因为什么我想要抽象类是因为,例如用户输入网站,然后我需要存储他的登录,所以我需要得到所有这些小列表的ID之前,我插入登录信息,这将需要许多小型SQL查询或将它们全部组合成一个巨大的存储过程。 我不喜欢这个想法......这是我想切换到代码内的列表的主要原因。 – eugeneK 2010-05-25 12:23:38

相关问题