而且每个客户都有基本信息(name, age, address)
,而且网站提供的解决方案很少,目前只有1个,也许将来会有2个或3个(不是很大的东西)。
目前该网站提供的一个解决方案是:
PaymentSolution
现在PaymentSolution有自己的服务:
PersonalPaymentService
OfficePaymentService
这两个服务都有
active
参数,可以true/false
对于每项服务,有3个付款选项,也可以是
active
true/false
例如:
PersonalPaymentService(active true)
paymentType startPaymentDate(date value) finishPaymentData(date value) active(boolean)
apartment payment 1/1/2018 1/1/2019 true
car payment 1/1/2018 1/1/2019 true
jetSki payment 1/1/2018 1/1/2019 false
OfficePaymentService(active false)
paymentType startPaymentDate(date value) finishPaymentData(date value) active(boolean) contactEmail(string value)
office payment 1/1/2018 1/1/2019 true [email protected]
computers payment 1/1/2018 1/1/2019 false [email protected]
我想知道如何将这种信息结构建模为sql表,有人能提供一些指导吗?
我很难打破这种关系,让这种模式能够在未来扩展到更多的解决方案
我希望能够执行的查询如下:
give me PersonalPaymentService data for customer id 35.
give me OfficePaymentService for account id 43.
give me all data for customer id 67
什么都能帮上忙!谢谢!
最佳答案
我认为你应该重新审视你的设计,根据你的评论,
例如,为客户ID提供所有个性化付款服务数据
35岁。或者给我帐户ID 43的OfficePaymentService…或者当然给我客户ID 67的所有数据
我认为PersonalPaymentService和OfficePaymentService是数据的逻辑表示,而您的实际支付只是您描述的6种类型。
如果您想保持表的干净,并且将mysql用作数据存储,我会说只需创建一个
CustomerID, PaymentType, StartPaymentDate, EndPaymentDate
其中paymentType只属于6个子类型。
并使用逻辑编程(php、java等)将付款分类为office和personal类型。
使用此架构的好处是,将来如果决定引入其他付款类型,则不需要更改任何架构。
但是,如果您的限制是sql应该回答您的查询,不管是个人付款还是办公室付款,理论上您可以引入另一种类型(列)paymentcategory,它有个人或办公室付款。
关于mysql - 将模型分解为sql表的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48725726/