高效 SELECT 的 SQL 表设计
用于解释我的结构的通用表格设置 - 简化以指定我的目标的核心。根据食谱。
tbl_item
item_id、item_name、misc_info
1、面包等
2、纸杯蛋糕等
tbl_ingredients_item
ii_id, ing_id, item_id
1, 1, 1
2, 1, 3
3, 2, 1
4, 2, 4
tbl_配料
ing_id、ing_name
1、面粉
2、盐
3、黄油
4、Frosting
我需要选择每一行 tbl_items 及其成分。然后在 php 中,迭代每一行,以便我可以吐出结果语句:
Item: bread
其他信息:等等
成分:
1. 面粉
2.盐
就目前情况而言,我相信数组最终会是这样的:
面包等,面粉
面包等,盐
纸杯蛋糕等,面粉
纸杯蛋糕等,糖霜
这是正确的表格设置吗?在 php 中处理此问题的有效方法是什么?
感谢您的任何帮助。
Generic table setup to explain my structure - reduced to specify the core of my goals. Based after recipes.
tbl_item
item_id, item_name, misc_info
1, bread, etc.
2, cupcake, etc.
tbl_ingredients_item
ii_id, ing_id, item_id
1, 1, 1
2, 1, 3
3, 2, 1
4, 2, 4
tbl_ingredients
ing_id, ing_name
1, Flour
2, Salt
3, Butter
4, Frosting
I need to select every row of tbl_items, and its ingredients. Then in php, iterate through each row so I can spit out the resulting statement:
Item: bread
Misc Info: Etc.
Ingredients:
1. Flour
2. Salt
As it stands I believe the array will end up like this:
bread, etc., flour
bread, etc., salt
cupcake, etc., flour
cupcake, etc., frosting
Is this the proper table setup, and what is an efficient way of dealing with this in php?
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使数据库结构简单直观。你所拥有的一切都很好。
如果您想在一次数据库调用中读出配方,您的选择是编写一个连接 3 个表的 SQL 查询,或者编写一个基于查询的视图并从中进行选择。如果这还不够快(并且您的数据库支持它),您可以创建视图并为其建立索引,以便将非规范化数据保留在磁盘上(从而避免联接)。
Make the database structure simple and intuitive. What you've got is fine.
If you want to read out the recipes in one DB call, your options are to write a SQL query that joins your 3 tables, or write a view over your query and select from that. If that isn't fast enough (and your DB supports it), you can create your view and index it, so that the denormalised data is persisted on disk (thus avoiding the joins).