php - 简化数据库关系设计
问题描述
我有一个 Laravel 小项目,会员可以付费参加课程、支付保险、参加活动,或者付费通过特殊类型的考试。
所以我有 5 个表members
、classes
、和insurance
,我需要添加表,以便跟踪每个表的成员付款。events
exams
payments
所以目前payments
表格将是这样的:
id date amount member_id class_id insurance_id event_id exam_id
1 2019-01-01 150 2 1 NULL NULL NULL
2 2019-01-01 250 11 NULL 14 NULL NULL
3 2019-01-01 220 15 NULL NULL 6 NULL
4 2019-01-01 350 32 NULL NULL NULL 8
有没有更好的方法没有:
class_id, insurance_id, event_id, exam_id
支付表中的字段,因为我猜这会使关系更加复杂,并且也可能只是使用 Laravel 作为 PHP 框架进行数据库查询。
解决方案
如果不使用一个表中的所有 id,则使用事务表并在所有这些表中使用该 transaction_id。
表交易 => id、payment_data、created_at、created_by 等
表事件 => id、name、transaction_id 等
推荐阅读
- javascript - Express.js Rout 重定向错误:发送后无法设置标头
- c++ - 使用 move_pages() 移动大页面?
- cube.js - 如何在 cubejs 中聚合来自另一个多维数据集的数据?
- java - 如何从 EJB 的 jUnit 中的上下文中获取 bean?
- c++ - C ++多重继承和vtables:成员变量访问只是方法访问
- .net-core - 将 NET Core 服务作为“网络服务”运行
- excel - 根据单元格值更改图像。图像大于单个单元格 | 没有 VBA
- python - 通过使用散景悬停地图突出显示国家
- r - R:将动态日期格式转换为日期类?
- objective-c - 将 react-native 应用程序作为另一个应用程序中的视图控制器运行时发送到类的无法识别的选择器