哪个更好:在数据库中?

问题描述 投票:0回答:2

我正在使用 JPA 开发一个系统,其中实体“事件”与实体“组”相关联,每个组都有字段(Group1、Group2...)指示其活动的出席状态。

如何设计这个?

mysql database jpa database-design system-design
2个回答
1
投票

计数器的实现会有所不同,具体取决于您对不良计数的不容忍程度以及有多少计数可能受到竞争条件的影响。

对于您的情况,您应该为每个用户提供注册事件,所以更简单,只需通过 crontab 将其计数到另一个表中并将统计信息放在某处(此表或新表,如您所愿)。这很容易、简单、能够容忍错误和不良编码器。


0
投票

实体“事件”与实体“组”相关联,每个组都有五个布尔列(Group1、Group2...),指示他们对事件的出席状态。

实体组有五个布尔字段是什么意思?提示:您共享当前模型的 ER 图,然后继续讨论新需求。

现在,我需要通过添加一个功能来增强系统,该功能可以跟踪每个组参加活动的人数

你有用户表吗?您可以创建(用户 - 事件 - 组)的联结表。要查找活动出席情况,您需要执行

Select count() from JunctionTable where eventId = x AND groupId = y.

如果没有用户表,联结实体可以是(事件 - 组 - 人数)。 虽然如果您的应用程序应该是高度并发的,那么第二种方法会存在一些问题,但是如果发生来自同一组的大量人员同时进入的事件怎么办?你必须锁定联结表记录并逐一递增。

请分享ER图,也许我对你当前表格形状的理解是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.