我有点不确定什么是解决我对项目(Laravel API和Angular UI)的一个要求的最佳方法。所以我有一个非常简单的任务。我需要为选定年份的成员及其订阅状态创建数据库架构。
我需要尽可能简单地保持这一点,因为这是一个非常简单的管理员应用程序,管理员用户在付款时会手动标记每个成员的付费状态,因此这里没有什么特别或高级的。在UI上它应该如下所示:
所以基本上每年成员都可以在那一年的每个月支付会员资格。
注意:x表示该月的会员付费会员资格。
从数据库的角度来看,我正在思考并试图决定这样的事情:
注意:成员资格和another_membership是我考虑使用的表格,我会根据建议选择其中一个
所以基本上这背后的想法非常简单,每次会员付费,会员表将更新日期和会员ID,这样我将为每个会员支付所有款项。
由于第一张图片中的用户界面,我几乎没有问题,我不确定如何处理。
为了从第一张图片生成引导表,我想的是,例如,如果我想从某些选择中获得2018年的所有会员资格,我会做类似的事情:
Select * from member m left join membership ms on m.id = ms.member_id where date >= 01-01-2018 and date <= 01-31-2018 and m.selection_id = 1
但我仍然不确定什么是每月映射成员身份的最佳方式。我想也许可以从会员表中对所有日期进行分组,然后以某种方式生成此表
有人对此有任何建议吗?我应该使用会员桌或another_membership表吗?我应该在UI或API端进行映射(成员和月份状态)吗?还有其他建议吗?有人告诉我,使用member_id,year和所有12个月作为属性创建简单表并且每个月只存储true / false可能是一个“好”的想法。像这样:
也困扰我的一件事是,好主意可能首先获取所有成员,然后根据成员ID从成员资格表中获取所有数据,例如,如果我有20个成员的分页,我将使db调用像这样:
select * from membership m where m.member_id in (list_of_ids)
答案 0 :(得分:1)
您不希望将成员资格信息存储在列中。 membership
或another_membership
都可以 - 它们将值存储在行中。
选择哪个?这真的取决于你。对于一般应用,我会选择以下内容:
您的会员资格是一个月的期限,因此拥有一个日期(比如每月的第一个)或将列拆分为(年和月)都可以。
答案 1 :(得分:1)
@GordonLinoff写的是我将如何构建数据库。
您可能需要的下一件事是将行旋转到列的方法;你可能最终得到一个产生以下行的输出的查询:
UserName Month Member
---------------------
Tom Jan18 null
Tom Feb18 1
.....
This问题向您展示如何将其转换为您的前端所关注的行。