3

在网上搜索了很多之后,我找不到任何东西正是我正在寻找的或者概述了如何与用户一起创建 Web 应用程序的内容。我能找到的最接近的东西是这个 stackoverflow 帖子,它概述了如何在 SQL 服务器上创建一个包含用户/角色的 Web 应用程序。

我还从这篇文章中找到了一些替代方案。

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

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

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

**users_table**
id
email
password

**wines_table**
id
user_id

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

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

4

1 回答 1

2

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

这张桌子有酒父母和孩子。父级包含酿酒厂的字段、葡萄酒的名称、位置等。子级将是年份的特定年份。

所以用户在他的追踪器中输入葡萄酒名称。系统查找它 - 如果未找到,则用户创建记录。系统创建一个父记录和一个单独的子记录与年份。

如果找到了葡萄酒——那么用户可以更新父记录,或者选择年份,或者输入新的年份。

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

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

您还可以轻松地更改用户和他的酒瓶的关系——因为它们是分开的。用户可以更改 users_wines 上的状态 - 酒窖中的酒、饮用酒、空酒瓶 - 这不会影响酒本身的记录。

==== 编辑 - 是的,提到 wine.com api 会是很好的信息。这涉及到更大的问题。建议您首先定义您的用户能够做什么。我的第一个问题是 - 如果用户不喜欢从 wine.com 返回的名称怎么办?如果 api 中存在实际错误怎么办?你要给客户服务一个错误的酒名吗?

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

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

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

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

于 2013-08-08T22:42:08.650 回答