首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对这种一对一关系进行建模?

如何对这种一对一关系进行建模?
EN

Stack Overflow用户
提问于 2010-04-14 19:59:15
回答 5查看 431关注 0票数 0

我有几个实体,重新呈现不同类型的用户谁需要能够登录到特定的系统。此外,它们还有不同类型的信息与之关联。

例如:“一般用户”,它有一个电子邮件地址,"admin用户“,它有一个工作站号(注意,这是一个假设的情况)。这两个实体还共享共同的属性,如名字、姓氏、地址和电话号码。最后,他们自然需要一个(唯一的)用户名和密码才能登录。

在应用程序中,用户只需填写他的用户名和密码,应用程序的功能就会根据用户的类型稍有不同。您可以想象,对于此工作,用户名需要是唯一的。

我应该如何有效地对此进行建模?

我不能只创建两个表,因为那样我就不能强制对用户名进行唯一约束。

我也不能将它们都放在一个表中,因为它们有不同类型的特定信息与之关联。

我想我可能需要3个单独的表,一个用于“用户”(带有用户名和密码),一个用于“一般用户”,另一个用于“管理员用户”,但是这些表之间的关系是如何工作的呢?还是有其他的解决方案?

(顺便说一句,目标数据库管理系统是MySQL,所以我不认为数据库系统本身支持泛化)。

EN

Stack Overflow用户

发布于 2010-04-14 20:52:02

我绝对不会像在GeneralUser、AdminUser和ReadOnlyUser中那样做一个有单独表的模型。

在数据库设计中,一个很好的经验法则是“跨向下跳跃”。我不会创建多个表(每种类型一个),而是创建一个SystemUsers表和一个Roles表,并定义一个连接表来将SystemUsers放入角色中。此外,我还会定义个人角色。

通过这种方式,可以将用户添加到多个角色或从中删除用户。

一个角色可以有多个权限,可以随时修改。

连接到其他地方不需要GeneralUserId、AdminUserId和ReadOnlyUserId列-只需要一个SystemUserId列。

这与ASP.Net基于角色的安全模型非常相似。

alt text http://img52.imageshack.us/img52/2861/rolebasedsecurity.jpg

票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2637098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档