【发布时间】:2011-12-07 23:49:31
【问题描述】:
假设我有一个网站,我向用户提供将他的社交网络帐户(如 facebook、twitter 等)与他在我网站上的帐户链接。现在我在网站上支持facebook和twitter,但稍后我会添加更多。所以目前我在数据库中为每个受支持的社交网络都有一个表,例如 Facebook 表,它将包含 facebook 用户 ID 和安全哈希以及我在应用程序中需要的任何内容。该表有一个外键用户 id 到用户表的用户表中,用于网站中的用户。现在假设我想为每个用户知道哪些社交网络与我的网站链接,所以我决定在 varchar 的用户表中添加一列。我会有一个序列,例如上面的例子,如果用户同时链接 facebook 和 twitter 帐户,则值将是 '11',如果他只链接 facebook,则值将是 '10' 等等.这是设计这种东西的好方法吗?
另外,当我想支持一个新的社交网络比如 Google+ 时,我所要做的就是在数据库中添加一个表 GooglePlus 表,然后编写一个脚本,将一个字符添加到现有列中,最初都是用户将拥有他们之前拥有的任何东西 + '0'。所以第一个用户将拥有“110”,第二个用户将拥有“100”。以此类推。
这是我在这种情况下可以采用的最佳方法吗?这是一个可维护的设计吗?
一个澄清问题的例子:
用户表:
User_Id LinkedSocialNetworks
1 '100'
2 '101'
链接的社交网络中的每个字符都代表一个标志,该用户是否将 (1) 他的帐户与指定的社交网络链接 (0)。我知道作为该应用程序的开发者,第一个字符用于 facebook,第二个字符用于 twitter、Google+、....
通过检查用户表,我知道用户 1 正在将他的帐户与 Facebook 关联,用户 2 正在与 Facebook 和 google + 关联,但没有与 twitter 关联。
得到这些信息后,对于用户 1,我将只从 Facebook 表中获取他的信息,对于用户 2,我将从 Facebook 表和 Google+ 中获取他的信息。
顺便说一下我用的是MySql
【问题讨论】:
标签: mysql database database-design dynamic