【发布时间】:2011-02-07 03:32:09
【问题描述】:
我正在为我的 CMS 的用户模块添加一个新功能,但我遇到了障碍......或者我猜,这是一个岔路口,我想在我提交之前从 stackoverflow 获得一些意见任何东西。
基本上,我希望允许管理员添加新的“额外”用户字段,用户可以在注册时填写这些字段,在他们的个人资料中进行编辑,和/或由其他模块控制。这方面的一个例子是生日字段、对自己的冗长描述,或者用户在网站上获得的积分。不用说,存储的数据会有所不同,范围可以从大量文本到小的整数值。更糟糕的是 - 我希望有搜索这些数据的选项。
除此之外 - 最好的方法是什么?现在我倾向于有一个包含以下列的表格。
userid, refFieldID, varchar, tinyint, smallint, int, text, date, datetime, etc.
我更喜欢这样,因为它可以显着加快搜索速度,并且引用表(其中包含所有字段的数据,例如字段的名称、是否可搜索等)可以引用应该使用的列存储该字段的数据时使用。
另一个想法,这是向我提出的,我已经看到在其他解决方案中使用过(vBulletin 就是其中之一,虽然我看到其他人的名字现在让我忘记了),你只有用户 ID、参考 ID、和一个医学文本字段。我对 MySQL 的了解还不够,不能肯定地说,但是这种方法似乎搜索起来会比较慢,并且可能会有更大的开销。
那么哪种方法是“最好的”?我还缺少另一种方法吗?无论我最终使用哪种方法,它都需要快速搜索,而不是海量(一点点开销就可以了),并且最好允许对数据使用复杂的查询。
【问题讨论】:
标签: mysql database-design user-accounts