最佳实践:使用用户/角色创建简单的CRUD Web应用程序

时间:2013-08-08 20:38:23

标签: php codeigniter crud

在网上搜索了一大笔钱之后,我找不到任何我正在寻找的东西或概述了如何与用户一起创建Web应用程序。我能找到的最接近的是this stackoverflow post,其中概述了如何在SQL服务器上创建具有用户/角色的Web应用程序。

我还从this post找到了几个替代方案。

  • 创建一个简单的关系数据库
  • 制作'元表'

我正在CodeIgniter上创建一个Web应用程序,它是一个葡萄酒管理工具,类似于CellarTracker。每个用户都有自己的“酒窖”,或者他们可以执行CRUD操作的葡萄酒系列。什么是传统方式来做到这一点。我该如何构建数据库?是否有任何CI库可以使用户管理,角色,权限等更容易? (我已经发现TankAuth看起来像是最好的身份验证库)。

以下是我将如何构建(部分)数据库:

**users_table**
id
email
password

**wines_table**
id
user_id

我的计划是让每瓶葡萄酒都有一个与之相关的用户ID。我怀疑这是处理具有许多用户的CRUD Web应用程序的最安全或最有效的方法。

我有CRUD操作的经验,但我不确定如何将它们与用户管理系统连接。

1 个答案:

答案 0 :(得分:2)

考虑为与用户无关的葡萄酒提供完全独立的表格。

这张桌子上有葡萄酒的父母和孩子。父母包含酒庄的字段,葡萄酒的名称,位置等。孩子们将是年份的特定年份。

因此用户在其跟踪器中输入葡萄酒名称。系统查找它 - 如果找不到,则用户创建记录。 system使用年份创建父记录和单独的子记录。

如果找到葡萄酒 - 则用户可以更新父记录,并选择一年或输入新的一年。

系统然后会将记录添加到单独的表 - users_wines - 中,父级(葡萄酒)的ID和子级的ID(特定年份)

这开辟了许多不同的可能性,包括由用户组共享的酒单。

您还可以轻松更改用户与其葡萄酒瓶的关系 - 因为它们是分开的。用户可以更改users_wines的状态 - 酒窖中的葡萄酒,喝酒,空酒瓶 - 这不会影响葡萄酒本身的记录。

==== 编辑 - 是的,提到wine.com api本来是个好消息。这会产生更大的问题。建议您首先定义用户可以执行的操作。我的第一个问题是 - 如果用户不喜欢wine.com上的名字怎么办?如果api中存在实际错误怎么办? 您是否会向客户提供从api返回的错误葡萄酒名称?

或者 - 用户可以在列表中重命名葡萄酒吗?如果他们可以,那么与wine.com的数据关系将会非常不同。

我个人认为尝试创建一个酒单很烦人,但你不能编辑这些名字。似乎从用户那里删除了太多的控制权。

然而,如果这是一个需要问责制的餐馆的应用程序 - 那么葡萄酒名称不可更改可被视为一个功能。

所以花一些时间处理您的用户角色和用户故事。然后让它告知数据关系。