数据库搜索价格的方法

uks*_*ksz 3 database database-design spring-boot

我即将建立一个平台后端,以寻找蔬菜供应商的最优惠价格.简而言之,客户能够过滤他感兴趣的蔬菜或水果,然后后端能够使用JSON进行响应,该JSON将返回供应商的名称和计算的价格.以下是我正在考虑的数据库示例Vendors Table:

+----+----------+--------+--------+--------+
| ID |   Name   | Potato | Tomato | Apple  |
+----+----------+--------+--------+--------+
|  1 | Example1 |      5 |      5 |      6 |
|  2 | Example2 |        |      2 |      3 |
|  3 | Example3 |      8 |      9 |     10 |
+----+----------+--------+--------+--------+
Run Code Online (Sandbox Code Playgroud)

马铃薯,番茄和苹果中的值是下表中的FK(例如Potato Table:

+----+-------+
| ID | Price |
+----+-------+
|  5 |    10 |
|  8 |    20 |
+----+-------+
Run Code Online (Sandbox Code Playgroud)

简而言之,当FK Potato第一个表中的值为null时,表示供应商不提供此产品.

我的问题是:数据库结构的这种好方法是否可以轻松添加供应商可能销售的新产品,并且是快速方法 - 当主表有多达10,000条记录时需要大量时间吗?如果没有,我需要实施哪些变更?

我正在考虑将SpringBoot作为我的后端.对于算法搜索,我正在考虑querydsl.

waj*_*jih 8

你和Many-To-Many之间有一个关系,所以你需要另一个表来分解这个关系,让我们命名它,它可能包含主要2个表之间的每个新关系. vendorvegetablevendor_vegetableprice在此输入图像描述

每条记录都vendor_vegetable显示新价格,您可能需要在此表中添加更多字段,例如新价格的日期

编辑:

你的设计不那么好也不动态,考虑你需要添加一种新的水果或蔬菜(例如香蕉),然后你必须改变Vendors表来添加新的列名banana,然后添加一个名为的新表banana.

如果您决定更改名称,该banana怎么办?

SQL原则问题是否是已知的一个:Many-To-Many关系.在此设计中,您只需要向vegetable表中添加新记录,然后当您需要将供应商的价格与此新扭结相关联时,您只需将新记录添加到vendor_vegetable表中.