存储来自多个查找表的用户配置文件数据。怎么样?

时间:2011-01-25 01:14:59

标签: database database-design social-networking

我有一个用户表,其中包含大约50个数据。其中一些是宗教,政党,种族,城市,最喜欢的电影等。这些项目中的每一个都是来自以下任一项的查找值:他们自己的查找表或我有一个共同的查找表,用于性别,性别偏好等小项目即使是最喜欢的电影也来自电影查询表。

问题是我假设在成员表中所有这些都将存储为ID而不是文本?所以首先问:左 1)他们或者他们应该没有FK到查询表吗? 2)如果我们存储ID然后获得实际答案文本,如城市表中的Id 6 =纽约,国籍表中的Id 10 =美国等,页面上的实际输出,将如何进行?我们是否需要在读取模式中从每个查找表中选择以输出文本值?这让我很害怕,因为其中40个数据中有40个是基于查找的,因此这意味着在页面读取模式下40个表上有40个不同的选择,并且再次在编辑模式下供用户编辑值。

如何在具有详细用户个人资料的真实网站中实施此功能? (我对每个值都进行了搜索和分析,因此我需要对其进行ID识别)

2 个答案:

答案 0 :(得分:1)

取决于范围,但这听起来像一个同步过程 - 设置每周/每日/每小时进程以将扩展用户信息重新同步到主表中,并使用外键到“用户”相关表(用户名,密码,电子邮件,更新邮票等...)。

答案 1 :(得分:1)

您所描述的是标准化数据库设计与更多平台设计之间的重大权衡:使用标准化设计的查询要复杂得多,听起来就像您一样。

我认为你要从桌子上读书的次数比你写的要多得多吗? (一个人的宗教,性别,城市等多久会发生变化?)在这种情况下,(仅)如果您在读取端遇到性能问题,您可能会保留表的两种表示形式:一种是可扩展的,规范化的一个像你一样的,一个纯文本,平面版本,快速和小蛋糕查询和阅读。当您更新标准化记录中的记录时,您将更新平面记录。