基本上,度假村提供四项服务:
services (Table with all resort services)
ser_id ser_name
1 Breakfast
2 Dinner
3 Towels
4 Taxi
会员可以选择在度假村预订时想要的服务。在chosen_services表中有三个选项,它们适用于相应的成员案例:
为了使事情更清楚,这就是selected_services表的样子:
chosen_services (Table with all member chosen resort services)
resort_id mem_id ser_id chosen_type
2 5 0 all
2 5 1 cancelled
2 5 2 cancelled
2 6 4 chosen
2 7 0 all
如果任何服务的价格发生变化,我们需要提取选择该服务的成员,并通过电子邮件向他们发送更改。
我已经坚持了几个小时,我们怎么能让这个东西起作用?
答案 0 :(得分:1)
根据您的评论进行修改:
我可能会考虑添加服务包的概念,以便您可以引入两个新表(packages和packages_to_services)
表格可能包含以下字段
packages
--------
pack_id pack_name
1 Breakfast Package
2 Dinner Package
3 Towels Package
4 Taxi Package
5 All Services Package
packages_to_services
--------------------
pack_id ser_id
1 1
2 2
3 3
4 4
5 1
5 2
5 3
5 4
您可以将chosen_services
表更改为chosen_packages
表,如下所示
resort_id mem_id pack_id cancelled
2 5 5 1
2 5 3 0
2 5 4 0
2 6 4 0
2 7 5 0
您可以查询所有信息,例如
SELECT DISTINCT cp.mem_id
FROM chosen_packages AS cp
INNER JOIN packages_to_services AS pts
ON cp.pack_id = pts.pack_id
WHERE cp.resort_id = 2
AND pts.ser_id = 2
AND cp.canceled = 0
请注意,您的应用程序需要有逻辑来理解当成员5取消选择服务1和2时,他实际上取消了包5并添加了包3和4。
此外,如果您需要在包中添加或删除服务,它只是packages_to_services
表上的记录插入/删除,无需更新任何其他表,因为所有用户都注册了该包会自动接收服务变更。