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