php - 简单的会员数据库设计方法
问题描述
我有点不确定解决我的项目(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 调用:
- 获取包含 20 个成员的第 0 页
select * from membership m where m.member_id in (list_of_ids)
解决方案
@GordonLinoff 写的是我将如何构建数据库。
您可能需要的下一件事是将行旋转到列的方法;您最终可能会得到一个查询,该查询会产生以下输出:
UserName Month Member
---------------------
Tom Jan18 null
Tom Feb18 1
.....
这个问题向您展示了如何将其转换为您的前端关心的行。
推荐阅读
- node.js - 如何在我的 Adonisjs 控制器中使用 axios 或任何其他 http 请求客户端包
- multithreading - 没有线程的`stack ghci`?GHCI 中的 OpenGL 卡顿
- groovy - 为什么从 groovy 运行“python --version”时标准输出为空?
- zip - HapiJS v18:返回一个 zip 文件/流
- proxy - 在 ubuntu 上使用代理后面的作曲家时出现 OpenSSl 错误
- python - 为短语分配分数
- c# - “值不能为空。参数名称:源”在实体框架上运行嵌套查询时
- processing - 处理 rect() 会导致绘制图像而不是矩形?
- intellij-idea - 如何在 IntelliJ IDEA 的模板中创建不可编辑/锁定的区域
- sql-server-2008 - 我应该如何正确使用 sp_msforeachDB 创建和删除备份