简单的会员数据库设计方法

时间:2018-05-16 10:05:38

标签: php sql database

我有点不确定什么是解决我对项目(Laravel API和Angular UI)的一个要求的最佳方法。所以我有一个非常简单的任务。我需要为选定年份的成员及其订阅状态创建数据库架构。

我需要尽可能简单地保持这一点,因为这是一个非常简单的管理员应用程序,管理员用户在付款时会手动标记每个成员的付费状态,因此这里没有什么特别或高级的。在UI上它应该如下所示:

enter image description here

所以基本上每年成员都可以在那一年的每个月支付会员资格。

注意:x表示该月的会员付费会员资格。

从数据库的角度来看,我正在思考并试图决定这样的事情:

注意:成员资格和another_membership是我考虑使用的表格,我会根据建议选择其中一个

enter image description here

所以基本上这背后的想法非常简单,每次会员付费,会员表将更新日期和会员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可能是一个“好”的想法。像这样:

enter image description here

也困扰我的一件事是,好主意可能首先获取所有成员,然后根据成员ID从成员资格表中获取所有数据,例如,如果我有20个成员的分页,我将使db调用像这样:

  1. 获得第0页,包含20名成员
  2. select * from membership m where m.member_id in (list_of_ids)

2 个答案:

答案 0 :(得分:1)

您不希望将成员资格信息存储在列中。 membershipanother_membership都可以 - 它们将值存储在行中。

选择哪个?这真的取决于你。对于一般应用,我会选择以下内容:

  • MemberShipId
  • EffDate - 从日期开始
  • EndDate - 迄今为止
  • PAYMENTDATE
  • 。 。 。其他信息

您的会员资格是一个月的期限,因此拥有一个日期(比如每月的第一个)或将列拆分为(年和月)都可以。

答案 1 :(得分:1)

@GordonLinoff写的是我将如何构建数据库。

您可能需要的下一件事是将行旋转到列的方法;你可能最终得到一个产生以下行的输出的查询:

UserName Month Member
---------------------
Tom      Jan18    null
Tom      Feb18      1
.....

This问题向您展示如何将其转换为您的前端所关注的行。