我正在创建一个Facebook网络应用程序,类似于约会网站的功能,让用户提供有关自己和匹配用户偏好信息。
我正在创建数据库,并考虑以下设计:
- Members表:使用FB ID作为主键,包含有关用户的信息。 - Preferences表:包含用户想要的偏好信息。
大约会有20个字段可供用户指定偏好,但所有字段都是可选的。我不确定结构“preferences”表的最佳方法,目前有两种思路:
方案1:使用Facebook ID的外键,并为每个可以匹配的字段添加一个新列。问题在于如果某个字段没有指定值,则数据库中将会存在很多“null”值。
- 数据库中的“null”值会占据空间或引起其他问题吗?
方案2:再次使用Facebook ID的外键,但在接下来的两列中使用键值对方法。因此,一列将包含用户偏好的ID,另一列将包含其值。对于每个用户偏好,我将以以下结构记录:“用户ID”-“偏好ID”-“值”。
- 问题是“值”列中的类型将取决于“偏好ID”列的内容。
我的问题:
- 哪种方法更好? - 是否有标准的模式解决这种Web应用程序的问题?
我正在创建数据库,并考虑以下设计:
- Members表:使用FB ID作为主键,包含有关用户的信息。 - Preferences表:包含用户想要的偏好信息。
大约会有20个字段可供用户指定偏好,但所有字段都是可选的。我不确定结构“preferences”表的最佳方法,目前有两种思路:
方案1:使用Facebook ID的外键,并为每个可以匹配的字段添加一个新列。问题在于如果某个字段没有指定值,则数据库中将会存在很多“null”值。
- 数据库中的“null”值会占据空间或引起其他问题吗?
方案2:再次使用Facebook ID的外键,但在接下来的两列中使用键值对方法。因此,一列将包含用户偏好的ID,另一列将包含其值。对于每个用户偏好,我将以以下结构记录:“用户ID”-“偏好ID”-“值”。
- 问题是“值”列中的类型将取决于“偏好ID”列的内容。
我的问题:
- 哪种方法更好? - 是否有标准的模式解决这种Web应用程序的问题?