我正在开发一个项目,该项目使用一个表将所有餐厅数据存储在同一个表中。
区域有一个单独的表,其中包含 area_id
和 area_name
有六个字段对我来说是问题的根源。 他们是:
delivery_area_1 , delivery_area_2, delivery_area_3
minimum_order_1, minimum_order_2 and minimum_order_3
delivery_area_1
字段包含以逗号(',') 分隔的所有 area_id
列表,其中餐厅以最低订单 1 进行送货,以此类推,对于送货区域 2和 3。
当用户按area_id
搜索时,结果包含在该area_id内提供外卖的所有餐厅,并且相应的最低订单将与其他详细信息一起显示在结果中。
我建议将此送货区域数据移至单独的映射表,其中将包含:
restaurant_id、area_id 和最低订单
。
但是这样做会导致 20,000 家餐厅的映射表中的条目数量超过 1000,000 个。目前有1000家餐厅,但今后数量将迅速增加。每家餐厅的配送范围约为 30-80 个区域。
这是一个好的举措吗?这将是一个重大决定。所以请帮我解决这个问题。
是否有更好的方法来简化和优化搜索?
它是一个 PHP 网站。
最佳答案
简短:是,更改它(这称为 database normalization )。
仅包含 3 列的表中的一百万行并不是什么大问题。您可以选择添加两个表而不是仅一个表:
minimum_order (restaurant_id, minimum_order_id, amount)
delivery_area (restaurant_id, area_id, minimum_order_id)
这将为您带来优势,即一组区域的金额发生变化,只需更新 minimum_order
处的金额,而不是 minimum_order 处的多行(每个区域一个)
.
关于php - MySql:映射表或同一个表中的所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512828/