내 응용 프로그램에 대한 데이터베이스 디자인을 만드는 데 혼란 스럽습니다. 나는 데이터베이스와 스프링으로 최대 절전 모드로 MySQL을 사용하고있다.MySQL 및 최대 절전 모드에서 사용자에 대한 로그 또는 기록 테이블을 갖는 방법
내 요구 사항 : 역할이 admin/user 인 사용자 테이블이 있고 장치 테이블이 있습니다. 장치 테이블에는 장치를 추가 한 userId
인 createdBy
이라는 열이 있습니다. 사용자는 장치 상태를 업데이트 할 수 있으므로 장치 값이나 상태가 변경 될 때마다이 값을 기록해야합니다. 나는 이것을 기록하기 위해 DeviceHistory
이라는 별개의 테이블을 사용하고 있습니다.
최대 절전 모드에서이 기능을 구현하지 않았습니다.
- device 테이블과 device_history 테이블의 int 필드로 userId를 사용해야합니까?
- 제가
- 난 장치 devicehistory 테이블과 사용자 테이블 장치로부터
OneToOne
매핑OneToMany
매핑을 사용한다 디바이스 테이블 deviceHistory 테이블 userid에 O를OneToOne
매핑을 사용한다. 이러한 시나리오가 어떤 샘플 코드는
사용자 테이블이 경우 링크를 공유하십시오 - 사용자 세부 사항을 포함
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", unique = true, nullable = false)
@Column(name="user_id")
private int userId;
@Column(name="name")
@Nonnull
private String name;
@Column(name="password")
@Nonnull
private String password;
@Column(name="role")
private String role;
@Column(name="creation_date", columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP", insertable=false, updatable=false)
@Generated(GenerationTime.INSERT)
@Temporal(TemporalType.TIMESTAMP)
@Nonnull
private Date creationDate;
@Column(name="approved_date")
@Temporal(TemporalType.TIMESTAMP)
private Date approvedDate;
@Column(name="approved_by")
private int approvedBy;
}
장치 테이블 : 여기에 역사 : 장치 세부 사항을
@Entity
@Table(name = "device")
public class Device {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", unique = true, nullable = false)
@Column(name="device_id")
private String deviceId;
@Column(unique=true, name="serial_number")
@Nonnull
private String serialNumber;
@Column(name="creation_date")
@Generated(GenerationTime.INSERT)
@Temporal(TemporalType.TIMESTAMP)
@Nonnull
private Date creationDate;
@Column(name="created_by")
private int createdBy;
}
DeviceHistory 테이블을 포함 어떤 사용자가 장치 상태를 업데이트했는지 그리고 저장시기는 언제입니까?
@Entity
@Table(name = "device_history")
public class DeviceHistory {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", unique = true, nullable = false)
private int id;
@Column(name="device_id")
@Nonnull
private String deviceId;
@Column(name="notes")
private String notes;
@Column(name="last_modified_date")
@Generated(GenerationTime.INSERT)
@Temporal(TemporalType.TIMESTAMP)
@Nonnull
private Date lastModifiedDate;
@Column(name="last_modified_by")
private int lastModifiedBy;
}
질문 텍스트가 아닌 코드 서식 지정에만 코드 블록을 사용하십시오. –