在我正在开发的系统中,我们允许客户预订很多东西。目前,我有这两个实体:
@Entity
public class Reservation implements Serializable {
...
private long startTime;
private long endTime;
private int status;
@ManyToOne
private Customer theCustomer; // record who made this reservation
@ManyToOne
private ReservableUnit theUnit; // record what this reservation is for
...
}
@Entity
public class ReservableUnit implements Serializable {
private int numOfAvailableUnits;
...
private int[][][] firstMonth = new int[31][24][2];
...
private int[][][] fourthMonth = new int[31][24][2];
}
//status
public static final int AVAILABLE = 0;
public static final int BLOCKED = 1;
public static final int RESERVED = 2;
在ReservableUnit表中,我有4个int [31] [24] [2]数组,用于存储最多3个月前所有30分钟时间段的状态。我使用数组是因为我认为当我将它们带入内存时,检查所请求的时隙是否可用会很快。
我的一位朋友告诉我,这不是一个好方法,因为我必须在数据库中存储大对象。他建议我删除这些字段,当我需要检查插槽是否可用时,我应该通过计算Reservation表中的行来计算为这些插槽进行的预留数量。显然,我朋友的方式可以为数据库节省一些空间。但是,从长远来看,我们将在Reservation表中有很多行,这意味着处理插槽状态需要更长时间。
我是一名在设计数据库方面没有扎实工作经验的学生。因此,如果有人能就此事给我一个建议,我将非常感激。
致以最诚挚的问候,
James Tran