php - 经销商定位器 mysql 和 php 的关系模式

标签 php mysql sql relational-database

我有一个项目,其中有一个经销商定位器,应该可以找到该地区的经销商。 经销商供应多个品牌的不同商品(例如:水泥砖等)。

<小时/>

这些项目具有子类别,并且还可能具有可变长度的子类别。 子类别下是品牌。 品牌是该产品的最低级别,意味着没有最终产品,所有这些加在一起就是产品
这些经销商有一个位置,用于在谷歌地图上绘制它们的 map 。
定位器必须具有过滤器,可以在其中选择类别,然后选择子类别,如果存在,则选择子子类别。还可以选择产品的品牌和数量。

<小时/>

我尝试了不同的方法来创建数据库,但都失败了。 我在访问选择每个过滤器选项后必须显示的产品时遇到困难。

<小时/>

我的问题:

  1. 我应该为每个产品创建一个表吗?如果是的话,会是什么? 属性?
  2. 如何处理可变长度子类别?
  3. 如何根据类别、子类别或品牌访问每种产品。
<小时/>

示例架构:

table:categories(Parent_ID | Category_ID | Category_Name);
table:product (Dealer_ID| Brand_ID|Quantity); - table for each product
table:brands(brand_ID|Category_ID|Brand_Name);
table:Dealer(dealer_ID|lat|long|name ...etc.);
When the page loads all dealers are shown in the map based on location.
On selecting each option the page reloads and displays the dealers based on the selection.
With my current schema I am unable to access them based on selection.

最佳答案

我将创建一个产品表,并为每个唯一产品创建一个条目(而不是为每个分类排列创建一个条目)。所以水泥砖、铲子、锤子等。

对于类别,我将创建一个具有以下字段的类别映射表: product_id(int)、parent_category_id(int)、child_category_id(int)

这两个字段都会映射到一个类别表,如下所示:id(int)、name(text)、status_id(int)、created_at(timestamp)、updated_at(timestamp)、deleted_at(timestamp) )

此实现允许您拥有任意数量的子类别,并且可以轻松查找,因为您只需要查看 child_category_id 是否与请求的过滤器中的匹配。

至于品牌问题,这实际上取决于您对品牌的了解程度。如果你除了..说出名字之外不需要任何东西,你可以使用 First Normal Form并将品牌放在产品条目本身上(作为产品表上的一列)。如果您需要更多详细信息,和/或需要将单个品牌与多个产品相关联......您可以使用基本的外部参照。

关于php - 经销商定位器 mysql 和 php 的关系模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29879556/

相关文章:

SQL:根据用户注册表和事件日志计算第一天保留率

mysql - 根据另一个字段的内容添加或减去值

php - 在单个产品页面上添加一个复选框,这会在 Woocommerce 中增加额外费用

asp.net - 如何编写桥接两个表的查询?

mysql - Grails 中属性的自引用关系?

MySQL 简单嵌套选择语句

php - 如何在 php 中获取此 mysql 查询的两行的总和值

javascript - 如何使用javascript在选中复选框时激活按钮?

javascript - 制作sql删除按钮来提交表单

PHP 和 MySQL 按日期和时间显示