我正在接近一个新项目,并希望得到一些建议,以防止未来的遗憾。我将使用用户配置文件作为示例,并将每个方法保持基本以便解释。
方法一:
创建包含多列的表:
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中更改表。将来对这些数据的查询会更加密集吗?比如显示用户的个人资料页面并且必须查询每个页面?或者我可能会创建一个自定义视图来解决问题?
提前感谢您的建议。
答案 0 :(得分:0)
直接怎么样
Table: UserProfile ( UserID, ProfileName, ProfileValue )
ProfileName,ProfileValue的数据类型都是“string”。然后,“User”和“UserProfile”可以用于用户配置文件并且可以扩展。可以使用DB表在程序中完成类型转换。