Дизайн базы данных, лучший способ сохранить конфигурации для организации

В моем приложении у меня есть такие объекты, как организации и пользователи. Каждый пользователь принадлежит организации. Я хочу реализовать двухфакторную аутентификацию для пользователей на основе настроек организации Ip (я сохраню в нем диапазон IP-адресов) и геолокации (я сохраню название города, широту, долготу и радиус). Как лучше всего сохранить эти настройки для организация. Моя идея состоит в том, чтобы создать одну сущность TwoFactorSettings и хранить в ней IpConfigs и Geolcation как разные сущности.

Есть ли лучшее решение или более общая структура, которая может помочь в этом случае?

@Entity
public class TwoFactorSettings{

  private int id;

  private String createdDate;

  private String createdBy;

  @OneToOne
  private IpConfigs ipConfigs;

  @OneToOne
  private Geolcation geoLocation;


  @OneToOne
  Organisation organisation;
}

person M1r1    schedule 04.02.2019    source источник


Ответы (1)


Поскольку каждый пользователь принадлежит организации, вы можете создать отношение «один к одному» для пользователя с сущностью организации. Затем создайте связь между организацией и объектами ее настроек (ipConfigs и геолокация).

 @Entity
 public class User {

  @OneToOne(targetEntity=Organization.class)
  @JoinColumn(name="organization_id")
  private Organization organization;

}



@Entity
public class Organization {

  @OneToOne(targetEntity=IpConfigs.class)
  @JoinColumn(name="ipconfig_id")
  private IpConfigs ipConfigs;

  @OneToOne(targetEntity=Geolcation.class)
  @JoinColumn(name="geolocation_id")
  private Geolcation geoLocation;

}
person Muizz Mahdy    schedule 04.02.2019
comment
Связь между организацией и пользователем - это @OneToMany, я хочу найти лучший способ сохранить двухфакторные конфигурации для организаций. В настоящее время я хочу сохранить конфиги на основе IP и геолокации, что, если в будущем я захочу добавить больше «факторов».? Это хороший способ напрямую сопоставить организацию Entity? - person M1r1; 04.02.2019
comment
@ M1r1 M1r1 Если вы собираетесь добавить больше факторов в будущем, лучше использовать сущность «TwoFactorSettings» или «OrganizationDetails». Таким образом, данные более нормализованы. en.wikipedia.org/wiki/Database_normalization - person Muizz Mahdy; 04.02.2019