mysql的代码结构_高效分类MySQL结构

不要使用单张桌子。转到关系。

我建议在“主”表(具有共同特征的表)和包含特定信息的三个表之间建立所谓的多态关系。结构应该是这样的:

主台

身份证件

标题

类别名称(varchar或char)

类别ID(整数)

类别表

身份证件

(特定列)

“类别名称”字段应包含特定类别表的表名,例如“作业类别”,而“类别ID”应指向类别表中的ID。示例如下:

# MAIN TABLE

id | title | ... | category_name | category_id

-------------------------------------------------------

123 | Some title | ... | job_category | 345

321 | Another title | ... | sale_category | 543

# SPECIFIC TABLE (job_category)

id | ...

---------

345 | ...

# SPECIFIC TABLE (sale_category)

id | ...

---------

543 | ...

现在,无论何时查询主表,您都将立即知道要从哪个表中获取附加数据,并且您将知道该表中的ID。这种方法的唯一缺点是,您必须执行两个独立的查询来获取单个项目的信息。然而,在事务中可能会这样做。

另一方面,对于以另一种方式获取数据(例如,搜索作业类别中的某个内容),可以通过联接从主表中获取相关数据。记住,不仅要加入main.category_id=jobs_category.id,还要使用category_name列作为连接条件。否则,您可以提取属于其他类别之一的数据。

为了获得最佳性能,您可能需要索引类别名称和类别ID列。如前一段所述,这将主要加快连接两个表的任何查询。

希望这有帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值