我目前正在使用PHP和MYSQL构建一个界面以及我所有的沙龙服务,一切都很好,直到我不得不添加我的打蜡服务:
在谈论打蜡时,你可以将这些组合在一起:
Lips
Chin
Face
Underarms
Arms
Eyebrows
None of the above
也是其中之一:
Half Leg
Full Leg
No Legs
其中一个:
Small Bikini
Big Bikini
Brasilian
No Bikini
所以,我正在考虑做二元的第一部分,直到我发现第一部分我有128个组合,加上下一组(腿)的3个不同的变化,以及比基尼区域的4个以上。 ..这总共有2048种可能的组合??所以这意味着我将需要用2048种不同的描述,价格和服务代码填充数据库(最重要的一栏)
所以,当我知道我在这里做错了(关于方法)时,我需要你的帮助才能知道从BD的角度来看这是怎么做的。毕竟我只需要一个服务代码,以便将来区分每个服务与其他服务。
如果这是真正做到这一点的方式,你用什么或用什么来生成数据的2000多行?
由于
答案 0 :(得分:1)
如果您不使用软件,您会怎么做?如果客户来了,请问,如眉毛,手臂和全腿....
你会说眉毛是3美元,手臂是6美元,全腿是10美元吗?
如果是这样,您可以为自己提供的每项特定服务创建数据库行,并允许您的客户选择任何产品组合。
这涉及客户端与服务表之间的多对多关系。在像MySQL这样的RDMS中,您需要一个client
表,一个service
表和一个client_service
表。其中第三个包含数字对,client_id
和service_id
,也许是日期。如果你想知道某个客户昨天有什么服务,你可以使用像这样的查询
select cs.service_time, c.name, s.service
from client c
join client_service cs ON c. client_id = cs.client_id
join service ON cs.service_id = s.service_id
AND DATE(cs.service_time) = CURDATE() - INTERVAL 1 DAY
where c.name = 'Jane'
client_service
表的要点是允许您将多个客户端与每个服务关联,并为每个客户端关联多个服务。这是一个比你提到的组合更好的软件设计选择,它很快会超过你客户的头发,嗯,头。
此类表的用户界面将显示您提供的服务列表(服务表中的行),每个服务表旁边都有一个复选框。
当您在每个客户端等待时,您将检查您提供的服务。然后,您的软件将在您的client_service表中为列表上的每个检查创建一行。
如果您的service
表包含每项服务的价格,您可以按如下方式检索这些价格。
select DATE(cs.service_time), c.name, s.service, SUM(s.price) AS price
from client c
join client_service cs ON c. client_id = cs.client_id
join service ON cs.service_id = s.service_id
AND DATE(cs.service_time) = CURDATE() - INTERVAL 1 DAY
where c.name = 'Jane'
group by c.name, DATE(cs.service_time), s.service WITH ROLLUP