最佳实践:创建一个包含用户/角色的简单CRUD web应用程序


Best Practices: Creating a simple CRUD web application with users/roles

在网上搜索了大量内容后,我找不到任何内容,也找不到如何与用户一起创建web应用程序。我能找到的最接近的东西是这篇stackoverflow的文章,它概述了如何在SQL服务器上创建一个包含用户/角色的web应用程序。

我还从这篇文章中找到了几个备选方案。

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

我正在CodeIgniter上创建一个web应用程序,它是一个葡萄酒管理工具,类似于CellarTracker。每个用户都有自己的"酒窖",或者他们可以对其进行CRUD操作的葡萄酒集合。传统的制作方法是什么。我应该如何构建数据库?是否有任何CI库可以简化用户管理、角色、权限等?(我已经发现TankAuth似乎是最好的身份验证库)。

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

**users_table**
id
email
password
**wines_table**
id
user_id

我的计划是让每瓶葡萄酒都有一个与之相关的用户id。不过,我怀疑这是否是处理众多用户的CRUD网络应用程序的最安全或最有效的方法。

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

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

这张桌子上有喝酒的父母和孩子。父项包含酒庄的字段、葡萄酒的名称、位置等。子项将是年份的具体年份。

因此用户在其跟踪器中输入葡萄酒名称。系统会查找它——如果没有找到,则用户会创建记录。系统会创建一个带有年份的父记录和一个单独的子记录。

如果找到了葡萄酒,则用户可以更新父记录,然后选择年份或输入新年份。

然后,系统会将一条记录添加到一个单独的表users_wines中,其中包含父代(葡萄酒)的id和子代(特定年份)的id

这打开了许多不同的可能性,包括由用户组共享葡萄酒列表。

您还可以很容易地更改用户和他的酒瓶之间的关系,因为它们是分开的。用户可以更改users线上的状态-酒窖里的葡萄酒、正在饮用的葡萄酒、空酒瓶-这不会影响葡萄酒本身的记录。

====编辑-是的,提到wine.com api会是一个很好的信息。这就引出了更大的问题。建议您首先定义您的用户能够做什么。我的第一个问题是,如果用户不喜欢wine.com上的名字怎么办?如果api中存在实际错误怎么办你会去客服那里查询api中的葡萄酒名称吗

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

就我个人而言,我认为尝试创建一个酒单会很烦人,但你不能编辑名字。这似乎让用户失去了太多的控制。

然而,如果这是一款适用于需要问责的餐厅的应用程序,那么葡萄酒名称不可更改就可以被视为一项功能。

因此,请花一些时间了解您的用户角色和用户故事。然后让它通知数据关系。