当前位置:  开发笔记 > 后端 > 正文

将用户表与关系数据库中的人员表分开

如何解决《将用户表与关系数据库中的人员表分开》经验,为你挑选了1个好方法。

我做了很多网络应用程序,你要做的第一件事是用一个用户名,密码,名字,电子邮件和所有其他常用的flotsam制作用户表.我当前的项目提出了一种情况,即非用户记录需要与用户类似地运行,但不需要能够成为一阶用户.

是否合理创建第二个表,people_tb即主关系表和数据存储,并且仅使用users_tbfor authentication进行身份验证?是否分离user_tb,从people_tb存在的任何问题?如果这是常见的,那么一些策略和解决方案以及缺点是什么?



1> Chris R...:

这当然是一个好主意,因为您正在规范化数据库.我在我正在编写的应用程序中完成了类似的设计,其中我有一个employee表和一个用户表.用户可能来自外部公司或员工,因此我有单独的表,因为员工始终是用户,但用户可能不是员工.

您将遇到的问题是,无论何时使用用户表,您几乎总是希望person表获取您想要显示的名称或其他常用属性.

从编码的角度来看,如果您使用的是直接SQL,那么精神上解析select语句需要花费更多的精力.如果您使用的是ORM库,可能会有点复杂.我没有足够的经验.

在我的应用程序中,我在Ruby on Rails中编写它,所以我经常做像employee.user.name这样的事情,如果我把它们放在一起,那就是employee.name或user.name.

从性能的角度来看,你要击中两个表而不是一个表,但是给出适当的索引,它应该可以忽略不计.例如,如果你有一个包含主键和人名的索引,那么数据库会点击用户表,然后是人员表的索引(几乎直接命中),所以性能几乎与有一张桌子.

您还可以在数据库中创建一个视图,以使两个表连接在一起,从而为您提供额外的性能增强.我知道在Oracle的更高版本中,如果需要提高性能,甚至可以在视图上放置索引.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有