Mysql 类别、子类别和关键字过滤数据的数据库设计

Mysql 类别、子类别和关键字过滤数据的数据库设计,mysql,database-design,Mysql,Database Design,我正在创建一个应用程序,列出本地企业,并按类别、子类别和关键字对它们进行分组。以下是如何对业务进行分类的规则: 企业可以属于多个类别和子类别 一个企业可以有多个关键字 不是每个类别都有子类别,但是那些有子类别的只有两个级别(类别->子类别) 子类别可以属于多个类别 另外值得一提的是,客户在excel文档中给了我一份业务列表,该文档如下所示: 每个类别都是一个单独的选项卡或页面 每个页面都包含企业列表、地址、关键字和子类别 “业务”子类别由子类别名称列中的“X”指定 我一直试图通过数据透视

我正在创建一个应用程序,列出本地企业,并按类别、子类别和关键字对它们进行分组。以下是如何对业务进行分类的规则:

  • 企业可以属于多个类别和子类别
  • 一个企业可以有多个关键字
  • 不是每个类别都有子类别,但是那些有子类别的只有两个级别(类别->子类别)
  • 子类别可以属于多个类别
另外值得一提的是,客户在excel文档中给了我一份业务列表,该文档如下所示:

  • 每个类别都是一个单独的选项卡或页面
  • 每个页面都包含企业列表、地址、关键字和子类别
  • “业务”子类别由子类别名称列中的“X”指定
我一直试图通过数据透视表来解决这个问题,但这导致我使用了很多数据透视(category_subcategory、business_关键字、business_category),我担心这会对性能产生实质性影响,也会影响根据过滤器确定要显示哪些业务的查询量


我认为我的思路是正确的,但我觉得有一种更为理想的方法来实现这一点。

如果我读对了所有这些,我认为您应该制作以下表格:

商业
身份证、姓名等

关键词
身份证、字等

类别
身份证、姓名等

子类别
身份证、姓名等

类别\子类别
标识、类别标识、子类别标识

业务类别
id、业务id、类别id

业务\u子类别
标识、业务标识、子类别标识

企业\u关键词

id、business\u id、keyword\u id

如果我读对了所有这些,我认为您应该制作以下表格:

商业
身份证、姓名等

关键词
身份证、字等

类别
身份证、姓名等

子类别
身份证、姓名等

类别\子类别
标识、类别标识、子类别标识

业务类别
id、业务id、类别id

业务\u子类别
标识、业务标识、子类别标识

企业\u关键词

id、business\u id、keyword\u id

正确的方法是这样:

1.业务(id(*PK),名称,…)
2.关键字(id(*PK),关键字,…)
3.类别(id(*PK)、名称、父类别(*FK),…)
4.分类号(分类号(*FK),分类号(*FK),…)
5.Bis_键(Bis_id(*FK),关键字_id(*FK),…)

其中(*PK)为主键,(*FK)为外键


在这个模型中,您将使用递归拥有无限的子类别。如果您想100%确定是否有任何错误,也可以添加引用整数,但这对db来说是一个非常严格的限制,因此,如果您知道如何添加引用整数,请将其放入其中。

正确的方法是这样:

1.业务(id(*PK),名称,…)
2.关键字(id(*PK),关键字,…)
3.类别(id(*PK)、名称、父类别(*FK),…)
4.分类号(分类号(*FK),分类号(*FK),…)
5.Bis_键(Bis_id(*FK),关键字_id(*FK),…)

其中(*PK)为主键,(*FK)为外键

在这个模型中,您将使用递归拥有无限的子类别。如果你想100%确定你想要有任何错误,你也可以添加引用整数,但是这对一个db来说是一个非常严格的限制,所以如果你知道怎么做,就把它放进去