首页 > 解决方案 > 简单的会员数据库设计方法

问题描述

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

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

在此处输入图像描述

所以基本上每年会员都可以在当年的每个月支付会员费。

注:x 表示当月会员付费会员。

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

注意:membership 和 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 调用:

  1. 获取包含 20 个成员的第 0 页
  2. select * from membership m where m.member_id in (list_of_ids)

标签: phpsqldatabase

解决方案


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

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

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

这个问题向您展示了如何将其转换为您的前端关心的行。


推荐阅读