MySQL,每个找到的记录加入不同的父表

标签 mysql database-design full-text-search data-modeling

我有以下父 <-> 子数据模型:

(几乎每一行都是一个表格,缩进表示子级)

consumerGoods
    food
        meat
            item
        fruit
            item
        vegetable
            item

肉类、水果和蔬菜的子项在同一个表(命名项)中,因为它们具有相同的属性。在 items 表中,我有描述父项和 parentId 的字段。

所以一个项目记录可以是:

id:1
parentType:meat
parentId:4
price:3.25
expDate:2009-12-31
description:bacon

我现在正在为“items”中描述字段的内容构建一个全文 MySQL 搜索,但我也希望每个结果都有其父表的信息,所以一个“bacon-item”有数据那在它的父记录中。我还希望每个返回的结果都包含父食品记录和父消费品记录中的数据。

我现在有以下查询,但我不知道如何根据记录中字段的值进行连接,或者这是否可能。

选择 * 从 元素 哪里匹配 (描述 反对 ('搜索关键字')

一种方法是对每个匹配的“项目”记录进行多次查询,但如果我有很多结果,那将是很多查询,也会减慢我想做的任何过滤用于基于方面的搜索。另一种选择是制作一个新表,其中包含每个项目记录的所有父项目信息并搜索它,但是如果我添加项目记录,我将不得不不断更新该表,这是多余的并且需要做一些工作。

如果我的思考方向正确,或者我完全被误导了,我想听听。欢迎提出任何建议。

最佳答案

作为一般经验法则,您的数据库结构应该包含 数据,但它本身不应该是数据。当您觉得必须根据您从其他表中读取的数据连接到另一个表时,您就会打破这一点。到那时,您需要备份并考虑您的整体数据模型,因为很有可能您正在做一些不太正确的事情。

关于MySQL,每个找到的记录加入不同的父表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776408/

相关文章:

mysql - Perl MySQL 全文搜索

php - SQL : Get Number of First Place Scores of User

mysql - 同时从两个表中选择?

javascript - 如何连接 Bookshelf.js 中的三个表?

.net - 在mysql中获取索引还是使用配对列表?

mysql - 在 Top 10 的数据库设计方面需要帮助

php - MySQL 多表与行

ruby-on-rails - 如何批量分配然后单独编辑

PostgreSQL 全文搜索 西类牙语字符 Ñ

elasticsearch - 通配符查询 Elasticsearch 不适用于多词值