组织被禁用户的“正确”方式是什么?
我是应该简单地在现有的users表中添加一个名为is_banned的新列作为布尔值,还是应该创建一个名为banned_users的新表作为具有user_id的数据透视表
同样的问题也适用于管理员。我应该为站点管理员创建一个新表,还是只创建一个名为is_admin的新列
这两个选项的性能如何?
谢谢。
发布于 2015-07-21 05:36:41
下一类用户-添加另一个表-会发生什么?最好不要。
您可以添加一个名为type的新列或类似的列。一种方法是它包含一个指示类型的数字,例如
1 = normal user
2 = admin
3 = banned或者,您甚至可以添加另一个名为user_types的表来引用它,但只有在类型随时间变化的情况下才需要这样做。
如果您需要组合类型-用户同时具有多个类型,那么您可以将该列设置为位字段。
什么时候需要单独的桌子?
当这些不同的用户将具有不同的属性并且每种类型的用户的表将不同时。
发布于 2015-07-21 05:51:00
满足多种标准的可扩展解决方案如下所示:
包含用户数据的角色表,包含角色的users
roles
user2roles你将用户数据与他们在应用程序中的实际角色分开-每个用户至少会有姓名和姓氏,这些与他们的权限或角色无关。
您很可能需要添加更多角色。例如,一个角色是admin。另一个角色正在被禁止。另一个角色可以被禁止一周,两周等等-基本上你可以在你去的时候添加这些角色,而不需要改变你的表来支持未来的功能。
您的应用程序(php、python等)收集数据,然后对这些角色执行操作。
现在你有了一个已经建立了关系的系统,你可以扩展,这很容易被幼儿园的孩子们理解。
这是一个混合了权限和角色的简化系统,您可以进一步扩展它,但最好保持简单。
发布于 2015-07-21 06:17:12
你需要考虑禁止的概念将如何在现实世界中发挥作用。你只是想要一面旗帜吗?他们是什么时候被禁止的,被谁禁止的呢?过去禁止历史吗?被禁制者的回应机制?投诉列表,包括用户/日期/原因?
数据模型是系统中最难发展的部分,所以你需要考虑所有可能的未来,甚至是路线图上还没有的东西。
为了提高效率,您可能决定要一个ban表和一个ban列。但这也是要付出代价的,因为你现在在多个地方捕捉到了相同的事实。
这些问题很微妙,有时甚至很复杂。不要接受一刀切的答案。
https://stackoverflow.com/questions/31526730
复制相似问题