首页 > 解决方案 > 动态列的数据库设计

问题描述

我正在尝试设计一个数据库,用户可以在其中根据他们的销售量和商店中的可用性来设置不同产品的成本。用户只能为产品和可用性设置价格,但产品是由系统管理员为用户创建的。我尝试将数据库设计为具有三个表,一个用于产品,另一个用于用户,然后第三个是用于将用户链接到现有产品的模式,user_id使用product_id. 我无法做的是知道如何以及在哪里设置产品的价格属性

标签: mysqllaravel-8

解决方案


如评论中所述,在您的情况下,使用数据透视表然后附加所有其他数据是 mysql 数据库的最佳选择,您可以使用 user_id 作为主键的 users 表,以 product_id 作为主键的 products 表然后创建一个模态表 product_user 以 product_id 和 user_id 字段为索引,成本为十进制,可用性或数量。在插入或更新期间,您将按如下方式使用附加

      $userProduct = Product::where(['id'=>$data['product_id']])->first();
    $userProduct->userProducts()->attach(User::where('id', $data['user_id'])->first(), ['amount' =>$data['cost'],'availability' =>$data['quantity']]);

在您的 Product 模型中,您将需要创建 userProducts() 函数来处理一对多关系


推荐阅读