【发布时间】:2014-02-11 04:38:29
【问题描述】:
我需要建立一个 MySQL 数据库系统,用于搜索我们可以使用现有材料制作的产品。
到目前为止,我对数据库结构有了一个想法,但我无法编写查询来准确选择我想要的。
产品表
+-------+-------------+
| id | product |
+-------+-------------+
| 1 | product1 |
+-------+-------------+
| 2 | product2 |
+-------+-------------+
| 3 | product3 |
+-------+-------------+
| 4 | product4 |
+-------+-------------+
材料表
+-------+--------------+
| id | material |
+-------+--------------+
| 1 | material1 |
+-------+--------------+
| 2 | material2 |
+-------+--------------+
| 3 | material3 |
+-------+--------------+
| 4 | material4 |
+-------+--------------+
| 5 | material5 |
+-------+--------------+
| 6 | material6 |
+-------+--------------+
产品的材料需求表(多对多)
+-------+-------------+-------------+
| id | productid | materialid |
+-------+-------------+-------------+
| 1 | 1 | 1 |
+-------+-------------+-------------+
| 2 | 1 | 2 |
+-------+-------------+-------------+
| 3 | 1 | 3 |
+-------+-------------+-------------+
| 4 | 1 | 4 |
+-------+-------------+-------------+
| 5 | 2 | 1 |
+-------+-------------+-------------+
| 6 | 2 | 2 |
+-------+-------------+-------------+
| 7 | 2 | 3 |
+-------+-------------+-------------+
| 8 | 3 | 3 |
+-------+-------------+-------------+
| 9 | 3 | 4 |
+-------+-------------+-------------+
| 10 | 3 | 5 |
+-------+-------------+-------------+
| 11 | 4 | 5 |
+-------+-------------+-------------+
| 12 | 4 | 6 |
+-------+-------------+-------------+
由于库存控制等进一步改进,需要单独使用材料表。这些只是数据库结构的示例。有了这些表格和数据,系统需要执行搜索。而真正的数据库会让我更加复杂和拥挤。
搜索示例;
+----------------------------------------------+--------------------------+
| search | result |
+----------------------------------------------+--------------------------+
| material1, material2, material3, material4 | product1, product2 |
+----------------------------------------------+--------------------------+
| material1, material2, material3 | product2 |
+----------------------------------------------+--------------------------+
| material3, material4, material5, material6 | product3, product4 |
+----------------------------------------------+--------------------------+
| material5, material6 | product4 |
+----------------------------------------------+--------------------------+
| material2, material3, material4, material5 | product3 |
+----------------------------------------------+--------------------------+
| material1, material2, material3 | product2 |
+----------------------------------------------+--------------------------+
| material4, material5, material6 | product4 |
+----------------------------------------------+--------------------------+
| material1, material2 | - |
+----------------------------------------------+--------------------------+
换句话说,搜索必须根据我们作为输入提供的材料名称给出带有产品名称的结果。目的是帮助我们决定如何利用我们拥有的材料和知识。
如果您有执行此类搜索的想法,请提前致谢。我对包括数据库结构更改在内的任何想法持开放态度。我只需要一个查询来处理。不仅仅是查询,我需要你的想法来解决,我需要你的解释来理解。
无论如何,谢谢。
【问题讨论】:
-
我认为您可能想要一个与产品 ID 关联的全文搜索列。
标签: mysql sql database search keyword