创建桥 table 等效领域 class?
Creating a bridge table equivalent realm class?
我正在设计一个数据库,我计划使用 Realm 在 Android 上实施该数据库。我仍在探索和阅读有关使用该库的信息,但我有一个问题与我有关。是否可以使用 Realm 实现桥接 table(见下图)?
根据我在文档 link 的 "Relationships" 部分中阅读的内容,我可以使用 RealmList 对象建立多对多关系。例如,对于 "User_Activity" table。但是,我仍然不确定如何将 "convert" 数据库设计成 class 等效的领域。
您可以简单地定义您的 类,例如:
public class User {
private int id;
private String username;
...
private UserActivity userActivity;
}
public class UserActivity {
private int id;
private Activity activity;
}
您不必在模型中存储 "foreign ID"。 Realm 实际上是将相关的 linked 对象存储为下面的指针。所以只要按照Realm的link doc定义linked对象为字段
public class User extends RealmObject {
@PrimaryKey
private String userId;
private String password;
@Index
private String username;
private String paGoal; // ?
private long maxInactivityInterval;
private RealmList<UserActivity> userActivities;
private Activity currentActivity; // optional
}
public class UserActivity extends RealmObject {
@PrimaryKey
private String userIdAndActivityIdAndDate; // userid_activityid_2017-01-23
@Index
private Date date;
private long duration;
private User user;
@Index
private String userId;
private Activity activity;
@Index
private String activityId;
}
public class Activity extends RealmObject {
@PrimaryKey
private String activityId;
@Index
private String type;
}
我认为这个模式适合你。
User_Activity table 是数据库中的辅助 table。辅助 tables 有助于将来自 2 个不同 tables 的相关记录与 many-to-many 关系绑定。所以,我认为没有理由在 Realm.
中定义 UserActivity class
public class User {
private RealmList<Activity> activities;
}
public class Activity {
private RealmList<Users> users;
}
如果你想要 many-to-many 关系应该就足够了。
但是关于你的问题,我相信你需要one-to-many关系,就像那样
因此,正确的定义如下:
public class User {
private RealmList<Activity> activities;
}
public class Activity {
private user = User;
}
我正在设计一个数据库,我计划使用 Realm 在 Android 上实施该数据库。我仍在探索和阅读有关使用该库的信息,但我有一个问题与我有关。是否可以使用 Realm 实现桥接 table(见下图)?
根据我在文档 link 的 "Relationships" 部分中阅读的内容,我可以使用 RealmList 对象建立多对多关系。例如,对于 "User_Activity" table。但是,我仍然不确定如何将 "convert" 数据库设计成 class 等效的领域。
您可以简单地定义您的 类,例如:
public class User {
private int id;
private String username;
...
private UserActivity userActivity;
}
public class UserActivity {
private int id;
private Activity activity;
}
您不必在模型中存储 "foreign ID"。 Realm 实际上是将相关的 linked 对象存储为下面的指针。所以只要按照Realm的link doc定义linked对象为字段
public class User extends RealmObject {
@PrimaryKey
private String userId;
private String password;
@Index
private String username;
private String paGoal; // ?
private long maxInactivityInterval;
private RealmList<UserActivity> userActivities;
private Activity currentActivity; // optional
}
public class UserActivity extends RealmObject {
@PrimaryKey
private String userIdAndActivityIdAndDate; // userid_activityid_2017-01-23
@Index
private Date date;
private long duration;
private User user;
@Index
private String userId;
private Activity activity;
@Index
private String activityId;
}
public class Activity extends RealmObject {
@PrimaryKey
private String activityId;
@Index
private String type;
}
我认为这个模式适合你。
User_Activity table 是数据库中的辅助 table。辅助 tables 有助于将来自 2 个不同 tables 的相关记录与 many-to-many 关系绑定。所以,我认为没有理由在 Realm.
中定义 UserActivity classpublic class User {
private RealmList<Activity> activities;
}
public class Activity {
private RealmList<Users> users;
}
如果你想要 many-to-many 关系应该就足够了。
但是关于你的问题,我相信你需要one-to-many关系,就像那样
因此,正确的定义如下:
public class User {
private RealmList<Activity> activities;
}
public class Activity {
private user = User;
}