如何在sql数据库中保存多个选项?

时间:2014-04-19 03:07:00

标签: c# sql

我想在SQL数据库中保存外部登录选项的用户首选项。用户可以选择多个选项,默认情况下自定义登录。选项固定如下:

  1. 自定义登录
  2. 谷歌
  3. 微博
  4. LinkedId
    ..等等。
  5. 目前我有一个Preference表,我正在保存其他首选项。所以我的问题是如何在Preference表格中保存这些选项。

    意思是:

    1. 我应该将其保存在单列中,怎么做?

    2. 我是否必须创建一个新表(LoginOptions)并将其与Preference表链接在多对一关系中。

    3. 还是其他更好的选择?

2 个答案:

答案 0 :(得分:1)

您提出了用户与其登录选项之间的多对多关系。您最好的选择是拥有一个LoginOption表,并在该表与Users(或Preference)表之间创建多对多关系。

选项1实际上是与单个字段创建多对多关系。从长远来看,与上面概述的相比,它的回报更少。

替代方案是:

  • 在每个外部登录的用户表上都有一个布尔字段 选项。
  • 每个登录选项都有一个Preference记录。

再一次,你需要努力投入这些"捷径",但是获得相同的好处是一个正确的多对多表关系。

答案 1 :(得分:0)

  1. 如果您希望将其存储在一个列中,则必须将配置编码为单个值。您可以使用二进制文件(自定义为1,Facebook为2,谷歌为4,您对值执行OR),或者将其编码为字符串。这是非常不受推荐的,你通过这样做会失去各种数据库优势,并且会有性能损失。这也是不可扩展的,因为很难为每个登录首选项添加其他信息。
  2. 您可以创建另一个表,其中每个用户可以有多个行 - 每个表示一个登录首选项。这很容易查询和更新,如果您想为每个首选项添加更多信息,您只需添加更多列。
  3. 我同意Adrian的意见,为每个登录首选项创建一个列(无论在哪个表中)都不是一个好主意。这将强制您更改数据库架构更改,以支持其他登录方法。