gpt4 book ai didi

成员(member)订阅付款的 SQL 表设计帮助

转载 作者:行者123 更新时间:2023-12-04 09:29:59 27 4
gpt4 key购买 nike

我正在为一家高尔夫俱乐部规划/设计一个 MSSQL 数据库。我有以下表格:

成员——标准联系信息成员(member)类型 - 全职、初级、60 岁以上等。付款方式——现金、定期订单、支票等。

我正在努力解决的表格设计之一是付款。每年 1 月,订阅金额都会发生变化,例如 2010 年,正式成员(member)的订阅费用为 1000 英镑,因此如果成员(member) A 是“正式成员(member)”,他可以通过一次付款或 10 个月的分期付款预付 1000 英镑。

这部分没有问题。我可以有一个包含 PaymentID、MemberID、Date、PaymentAmount 的付款表,这可以告诉我该成员(member)迄今为止已经支付了多少以及未支付的金额。

我的问题是在 2011 年 1 月,正式成员(member)订阅可能会增加到 1100 英镑,这会在尝试进行计算时产生问题。理论上,我需要存档 2010 年的付款并重新开始 2011 年的付款——我不想这样做,因为我想展示成员(member)曾经支付的每一笔付款的历史记录。我欢迎就此场景的最有效表设计提出任何建议。

最佳答案

我认为您需要成员(member)级别的可变订阅金额。例如,如果我注册了,你给我打折帮助你设计,你向我收取的金额应该与订阅日期一起位于成员(member)级别,这样你就知道要收集多少,每月或一次全部.当我的订阅即将到期(滑动或静态)时,我应该按基本费率收取费用,这将是新费率。在这一点上,数学很简单,因为你知道我什么时候注册的,我迄今为止支付了多少以及我欠了多少(按比例或滑动)。

这是一个基本的例子:

Member
MemberId
Name
Address
Etc...

Product
ProductId
Name
Description
Price

Payment
PaymentId
SubscriptionId
Amount
DatePaid

Subscription
SubscriptionId
MemberId
ProductId
Price
StartDate
EndDate (if needed)

未经测试的查询,但非常接近:

*-- how much do I owe?*
select m.Name, sum(s.Price) - sum(p.Amount) as Owes
from Member m
join Subscription s on m.MemberId = s.MemberId
join Payment p on s.SubscriptionId = p.SubscriptionId
where m.MemberId = 1

*-- how long have I been a member*
select datediff('year', min(StartDate), getdate()) as yrs,
datediff('month', min(StartDate), getdate()) as mths,
datediff('day', min(StartDate), getdate()) as dys
from Subscription
where MemberId = 1

*-- when does my subscription expire*
select max(EndDate) as ExpirationDate
from Subscription
where MemberId = 1

*-- list all payments by product*
select m.Name as MemberName,
pr.Name as ProductName,
pr.Price as ProductPrice,
s.Price as SubscriptionPrice,
p.Amount as AmountPaid
p.PaidDate,
from Member m
join Subscription s on m.MemberId = s.MemberId
join Payment p on s.SubscriptionId = p.SubscriptionId
join Product pr on s.ProductId = pr.ProductId
where MemberId = 1

关于成员(member)订阅付款的 SQL 表设计帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com