Asp.net 需要帮助设计数据库-用户和项目

Asp.net 需要帮助设计数据库-用户和项目,asp.net,vb.net,database-design,sql-server-2012,Asp.net,Vb.net,Database Design,Sql Server 2012,在master_db中,我有两个表users和project,分别存储用户详细信息和项目详细信息 我想解决一个问题: 我有一个.aspx页面,允许我“管理”一个项目,添加用户并为他们分配角色。我想知道如何创建一个表,允许我在“项目”中添加/删除“用户”。 我正在考虑创建一个user\u project表来存储user\u id和project\u id 你对这个问题有什么想法或其他解决办法吗?嗯,我认为你需要做得更多一些。例如,用户33在项目88中有角色4,而在项目74中有角色2。这听起来像用户

master_db中,我有两个表usersproject,分别存储用户详细信息和项目详细信息

我想解决一个问题:

我有一个.aspx页面,允许我“管理”一个项目,添加用户并为他们分配角色。我想知道如何创建一个表,允许我在“项目”中添加/删除“用户”。

我正在考虑创建一个user\u project表来存储user\u idproject\u id


你对这个问题有什么想法或其他解决办法吗?

嗯,我认为你需要做得更多一些。例如,用户33在项目88中有角色4,而在项目74中有角色2。这听起来像用户想要的吗

如果用户始终具有相同的角色,则您的解决方案是正确的

否则,您将不得不向用户项目添加角色id


因此,我将有一个user\u project,它是一个user\u id、project\u id和role\u id。此表的主键是(user\u id、project\u id)。

是的,您将有一个用户表,其中包含仅与用户相关的信息(名称、电子邮件等),一个项目表仅与项目相关,然后是第三个表“项目用户”这将保存用户表和项目表(userID、projectd)的外键,以及任何其他必要的列,如“角色”、“访问级别”等。。。这只与用户和项目之间的关系有关。“Project Users”表中的主键是两个外键的组合

您可以有一个安全级别表,一个角色表,等等。。。您可以将这些表中的PK粘贴到“项目用户”表的“角色”或“安全级别”列中


希望这对你有所帮助。

你走上了正确的道路。这称为“连接”(或“链接”)表,其键是从多对多关系中涉及的两个表迁移的键的组合。例如:

CREATE TABLE user_project (
    user_id int REFERENCES users (user_id),
    project_id int REFERENCES project (project_id),
    PRIMARY KEY (user_id, project_id)
)
(请注意,默认情况下,表位于MS SQL Server下,除非在主键中显式使用非聚集关键字,在本例中这可能是正常的。)


这确实是代表这种关系的“标准”方式。告诉我更多关于“角色”角色的信息我可能也有一些建议如何处理…

这就是使用的要点。您在实施此过程中是否遇到了任何具体问题?是的,这正是您应该做的。这意味着我必须创建另一个具有role\u id和role\u名称的表“role”?谢谢!只是个附带的问题。。有没有办法在MS SQL Server 2012 GUI中选择两个主键?@Brian你是说SQL Server Management Studio?是的,2012版本。@Brian很遗憾,我面前没有主键,而且我的记忆有点模糊,因此我无法给出确切的逐点指示,但我确实记得它在UI中清晰可见。试着搜索一下(右键点击桌子,看看你得到了什么),我相信你会很快找到它!或者,只需使用DDL SQL;)顺便说一句,这不是“两个主键”,这是一个由两个字段组成的复合主键。每个表可以有一个主键(主键)和多个备用键(唯一约束)。