我正在创建一个简单的应用程序,用户通过 OAuth 系统登录,我将他们的用户 ID 存储在 session 中。
我的数据库有 3 个表:用户、组和页面
- 一个用户可以在多个组中
- 一个组可以有很多用户
- 一个页面可以有多个组
基本上在我的设置区域:
- 可以将用户分配到组
- 可以将组添加到页面以允许访问
然后我可以使用用户的 ID 来查找他们所在的组,然后选择他们有权访问的页面 ID。然而,这种方法似乎很冗长,我认为会涉及很多循环(另外,我想我会得到许多相同的页面 ID?)。
我的解释草图:
http://i.imgur.com/oFVsniH.png
我确实觉得有更好的方法来实现这一点 - 使用一个“数据透视表”和 3 个表......类似:
http://i.imgur.com/IZfhZO1.jpg
如果有人可以深入了解什么是最好的,以及我的关系 (M-t-M) 是否正确,那就太棒了。
仅供引用:在 Laravel 4 上构建它
谢谢!
最佳答案
通常 Fourth Normal Form旨在防止您在单个交集表中存储多个多对多关系。
在这种情况下,您将页面的访问权限授予组,而不是用户。因此,我不会将对页面的引用存储在记录组中用户成员身份的同一个表中。
例如,您在一个组中有 1000 个用户,并且该组可以访问 1 个页面。但是在您的第二个设计中,您必须将组对页面的访问权限存储在 1000 行上。
关于mysql - 简单的关系型数据库规划建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284352/