在SQL Server中存储配置文件属性类型数据的最佳方法

时间:2014-02-17 06:05:30

标签: sql sql-server relational-database

我正在接近一个新项目,并希望得到一些建议,以防止未来的遗憾。我将使用用户配置文件作为示例,并将每个方法保持基本以便解释。

方法一:

创建包含多列的表:

UserProfile: UserID, Firstname, Lastname, Birthdate, Address, City, State, Zipcode, Bio

方法二:

建立基于关系的系统:

Table1: ProfileItems ( ProfileID, ProfileName, DataType )
Table2: UserProfile ( UserID, ProfileID, ProfileValue )

方法一,其用法很明显。

接近两种情景:

用户可以编辑他们的个人资料,但尚未填写他们的地址。

IF NOT EXISTS (SELECT UserID FROM UserProfile WHERE UserID = @UserID AND ProfileValue = 'Address')
    BEGIN
        INSERT INTO... etc.
    END
ELSE
    BEGIN
        UPDATE...
    END

哪种方法对可伸缩性更有效?方法二我可以构建一个管理应用程序,允许用户创建配置文件类型,而无需在SQL中更改表。将来对这些数据的查询会更加密集吗?比如显示用户的个人资料页面并且必须查询每个页面?或者我可能会创建一个自定义视图来解决问题?

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

直接怎么样

Table: UserProfile ( UserID, ProfileName, ProfileValue ) 

ProfileName,ProfileValue的数据类型都是“string”。然后,“User”和“UserProfile”可以用于用户配置文件并且可以扩展。可以使用DB表在程序中完成类型转换。