如图
比如有一个旅游行程“上海到杭州、苏州旅游”
1、第一天去杭州,行程中有交通、多个景点、吃饭和住宿信息
2、第二天去苏州,行程中也有交通、景点等其他信息
应该如何设计mysql的数据表的结构?
如图
比如有一个旅游行程“上海到杭州、苏州旅游”
1、第一天去杭州,行程中有交通、多个景点、吃饭和住宿信息
2、第二天去苏州,行程中也有交通、景点等其他信息
应该如何设计mysql的数据表的结构?
首先你要对业务做抽象。
如果想在一个订单里把交通、景点、饮食和住宿等不同的业务比较和谐地结合起来,可以把它们都抽象成商品。表结构可以这样设计:
订单表:
id, order_no, all_price, contact_name, contact_mobile ...
商品表:
id, product_no, order_no, price, product_type, product_info, start_date_time, end_date_time
商品订单关联表
order_id, product_id
这样你就可以用不同的 product_type 表示不同的商品,只要新增 product_type 就可以很方便地接入新的商品。
其实这个问题可以是这样的,首先有基础的表
比如
1、景点表 包括景点介绍,景点门票等信息
2、交通之类的表
3、餐饮之类的表
最重要的就是把这几个表的信息汇总到一张行程表,我觉得你的困惑在于不定项的行程如何存表,这个可以
一、拆分成每一天,在用户建立行程的时候插入一条数据。
二、将整个流程变成一条数据,比如流程是一个json的对象,无论多少天,无论每一天多少项目,一股脑的全部变成字符串存进去,
设计数据表的时候两个基本要求:
两个表应该可以满足需求了。
由于有动态类型,每种动态类型的参数又不一致,所以用了JSON,这样可以满足筛选需求
id
,day_sequence
,date
,route
,serial
);(id,第几天,日期,路线,当前这个行程的编号--建议创建这个字段避免使用id--多天的行程使用同一个行程编号),以及其它能查寻到这个行程的字段,如用户信息
id
,serial
,time_spend
,comment
);(id,行程编号,耗时,详细内容:上海做旅游大巴到杭州)
id
,serial
,locate
,comment
,url
); (id,行程编号,景点名称,游览备注:浏览西湖,图片地址) 这里可以录入多个景点信息,和行程编号serial一致即可id
,serial
,meal_type
,restaurant
,comment
,url
);(id,行程编号,早中晚餐枚举,餐厅,餐饮记述,图片地址)
id
,serial
,city
,hotel
,comment
,url
);(id,行程编号,落座城市,酒店名称,描述,图片地址)
此外,要做成行程记录的话,走到哪记录到哪的显示结果,以上每个表添加一个时间字段,查询出来周后排序展示;
图片地址可存放多张图片,图片地址自定义分隔符;
弊端:联表查询有点多
。
5 回答3.3k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
5 回答1.4k 阅读
谢邀,你的需求注意表关联性不要太强。会导致后期维护成本过高。
餐饮表与交通表以及酒店表都应是独立的公共表。
主表计划表中存储json或序列化,将用户选择的餐饮,交通与酒店的信息统一存储,注意:这里要随当时下单价格一并存储到主表的字段内,旅游的酒店价格会随时变化,不应通过绑定方式查询。用户何时下单,所有价格应当定格在下单时的金额上。根据上述条件,你应建立以下数据表
公共表
主表
主表内应有plan_content 字段,用于存储上述用户所选信息,这里注意:存储的是实际订的酒店或者景点,并非是仅仅绑定酒店编码、景点编码。
看到你上述的其他回答回复,切记不应将酒店、景点、餐饮归类为一个project表,通过某个标识查询,首先这类设计会使表数据庞大并不易于处理,其次对表维护的成本也会提高。最后在大数据时代,所有信息存储到一个表内,实际为找“死”.