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



这些项目具有子类别,并且也可能具有可变长度的子类别。
在子类别下是品牌。品牌是该产品的最低级别,这意味着没有最终产品,所有这些都是产品
这些经销商有一个位置,可用于在Google地图上将其映射。
定位器必须具有过滤器,可以在其中选择类别,然后选择子类别,如果存在则选择子子类别。也可以选择产品的品牌和数量。



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



我的问题:


我应该为每个产品创建一个表格吗,如果是的话
属性?
如何处理可变长度子类别?
如何根据类别或子类别或品牌访问每个产品。




示例架构:


  table:categories(Parent_ID | Category_ID | Category_Name);
  表格:产品(经销商ID |品牌ID |数量); -每个产品表
  表格:品牌(brand_ID |类别ID | Brand_Name);
  table:Dealer(dealer_ID | lat | long | name ...等);
  页面加载后,所有经销商都将根据位置显示在地图上。
  选择每个选项后,页面将重新加载并根据选择显示经销商。
  使用我当前的架构,我无法根据选择访问它们。

最佳答案

我将创建一个产品表,并为每个唯一产品创建一个条目(而不是为每个类别排列创建一个条目)。因此,水泥砖,铁锹,锤子等

对于类别,我将创建一个类别映射表,该表将具有以下字段:
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/

10-11 12:34