首页 > 解决方案 > 简化数据库关系设计

问题描述

我有一个 Laravel 小项目,会员可以付费参加课程、支付保险、参加活动,或者付费通过特殊类型的考试。

所以我有 5 个表membersclasses、和insurance,我需要添加表,以便跟踪每个表的成员付款。eventsexamspayments

所以目前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 框架进行数据库查询。

标签: phpmysqllaravel

解决方案


如果不使用一个表中的所有 id,则使用事务表并在所有这些表中使用该 transaction_id。

表交易 => id、payment_data、created_at、created_by 等

表事件 => id、name、transaction_id 等


推荐阅读