Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 添加1-1关系表(用户和用户设置)的挑战_Asp.net_.net_Sql_Sql Server_Entity Framework - Fatal编程技术网

Asp.net 添加1-1关系表(用户和用户设置)的挑战

Asp.net 添加1-1关系表(用户和用户设置)的挑战,asp.net,.net,sql,sql-server,entity-framework,Asp.net,.net,Sql,Sql Server,Entity Framework,我的问题与这个问题有关: 我有一个Users表,它已经有一堆记录了 Users (Id, UserName, Password, FullName, Gender) 我需要为每个用户添加一组通知选项: NotifyForNewComment NotifyForNewPost NotifyWhenFriendSignsUp 我以后可能需要添加更多选项,但始终存在1-1关系,因此我的问题是,是将这些选项存储在单独的表中,比如UserSettings,还是将它们作为列添加到Users表中 在上面的

我的问题与这个问题有关:

我有一个Users表,它已经有一堆记录了

Users (Id, UserName, Password, FullName, Gender)
我需要为每个用户添加一组通知选项:

NotifyForNewComment
NotifyForNewPost
NotifyWhenFriendSignsUp
我以后可能需要添加更多选项,但始终存在1-1关系,因此我的问题是,是将这些选项存储在单独的表中,比如UserSettings,还是将它们作为列添加到Users表中

在上面的链接问题中,建议创建一个新表,并将UserSettings表中的UserId作为主键(否则,Entity Framework不喜欢它)。如果这是我必须做的,那么我有几个问题:

  • 我所有的表都有一个Id列。UserSettings将没有Id列,因为UserId将是主键

  • 我必须为UserSettings表打开Identity Insert,这样当我插入一个新的用户记录时,我也可以插入一个带有UserId的UserSettings记录

  • 假设我在Users表中已经有一堆记录,那么如果我现在要引入新的UserSettings表(它将与Users表有1-1关系),我该怎么做?我是否只是运行一个脚本来为Users表中的每个用户添加带有一些默认值的记录?还是我要把它变成一个0-1的关系

  • 既然这是一个1-1关系,我是否应该不用担心一个新表,而是将它们作为列添加到现有的Users表中


  • 我认为您缺少UserSettings表的要点。它将有如下列:

    • 用户设置SID
    • 用户ID
    • 通知
    它还可能包含通知的创建时间、当前是否启用以及其他信息

    如果您确切地知道通知是什么,并且它们不会改变,那么您可以考虑将它们作为用户列中的单独列添加。


    另一方面,这是一种自然的1-N关系,您可能应该实现它。

    我认为您缺少UserSettings表的要点。它将有如下列:

    • 用户设置SID
    • 用户ID
    • 通知
    它还可能包含通知的创建时间、当前是否启用以及其他信息

    如果您确切地知道通知是什么,并且它们不会改变,那么您可以考虑将它们作为用户列中的单独列添加。


    另一方面,这是一种自然的1-N关系,您可能应该实现它。

    您可以将所有Notify列作为布尔值添加到用户表中,然后将活动列切换为true吗?这对我来说是最简单的,但我只是想知道这是否是一种好的数据库设计……是的,这是一种好的数据库设计。简单明了是好的。卷曲和坚硬是不好的。很少需要1对1的表关系。能否将所有Notify列作为布尔值添加到用户表中,然后将活动列切换为true?这对我来说是最简单的,但我只是想知道这是否是一个好的数据库设计…是的,这是一个好的数据库设计。简单明了是好的。卷曲和坚硬是不好的。很少需要一对一的表关系。