【问题标题】:Proper way to design an inventory system设计库存系统的正确方法
【发布时间】:2011-08-23 15:58:25
【问题描述】:

我是一个很好的程序员,但在设计系统架构方面我并不擅长。我正在制作一个非常简单的库存系统,但是我想知道一种构建它的好方法。

我有大约 20 件设备可供用户使用 [查看全部 |更新 |删除 |添加]他们每个人。但是我对不同的设备有不同的访问级别(需要是动态的,改变谁可以查看或删除什么)。

例如,一件设备会有?

addPart1.php
removePart1.php
updatePart1.php
index.php (view all parts)

addPart2.php
removePart2.php
updatePart2.php
index.php (view all parts)

对于所有部分?我对尝试设计一个良好、可扩展且高效的结构感到困惑。

【问题讨论】:

  • 如果您的业务增长并最终拥有 50,000 个不同的零件,会发生什么?您将拥有 50,000 个 addPart.php、50,000 个 removePart.php 等……完全无法维护。
  • addPart.php?id=1 GET 参数是否损坏?

标签: php mysql architecture inventory


【解决方案1】:

访问控制列表 (ACL) 是附加到对象的权限列表。 ACL 指定哪些用户或系统进程被授予访问对象的权限,以及允许对给定对象执行哪些操作。在典型的 ACL 中,列表中的每个条目都指定一个主题和一个操作(例如,文件 WXY 的 ACL 上的条目 (Alice, delete) 授予 Alice 访问文件 WXY 的权限)。

来源:维基

请看:

http://dev.juokaz.com/php/acl-made-easy-part-1(ACL 教程)

http://sourceforge.net/projects/tackle/

【讨论】:

    【解决方案2】:

    您可以对产品表进行分类,因此每种设备都有自己的“类别”或“组”。您可以通过为每个产品分配一个“group_id”来做到这一点(在您表的新列上)。如果您有 300 种产品,其中一些将在第 1 组,其他在第 2 组,等等。

    然后,在您的用户表(包含每个管理员的用户名/密码的表)上,您需要添加一个名为“group_permissions”的附加字段。在该字段上,您必须存储每个用户可以查看的“组 ID”列表。您可以存储这些权限,用逗号分隔。

    $permissions = '1,2,5,9';
    

    每次用户访问您的一个 PHP 文件时,您都会获得其权限并进行如下简单检查:

    SELECT * FROM products WHERE group_id IN($permissions)
    

    这只会返回用户有权编辑或查看的产品。这取决于您的界面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2013-08-10
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 2019-12-30
      • 2020-04-18
      • 1970-01-01
      相关资源
      最近更新 更多