私はRealmを使用してAndroidで実装する予定のデータベースを設計しています。私はまだライブラリを使用していることについて調べて読んでいますが、私には1つの質問があります。レルムを使用してブリッジテーブル(下図参照)を実装することは可能ですか?私がドキュメントlinkの "Relationships"セクションで読んだところから、私はRealmListオブジェクトを使用して多対多の関係を行うことができます。たとえば、 "User_Activity"テーブルの場合。しかし、私は、データベース設計を同等のRealmクラスに「変換する」方法はまだ不明です。どんなアドバイスも高く評価されます!ブリッジテーブル相当のレルムクラスを作成していますか?
答えて
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;
}
としてリンクされたオブジェクトを定義します。
あなたの答えをありがとう。非常に良い見えます。しかし、1つの質問。正しいということです> 112017-01-23 - 私はのActivityIDは= 1、キーがそのように見ていることになるとはuserId = 1と活性を持つユーザーを持っている場合、フィールド「userIdAndActivityIdAndDate」としては、例えば「compaundキー」になりますか? –
@GeorgiKoemdzhiev yup、私は '_'sで分けるのが好きです。)また、主キーに時分が必要な場合にも、それはあなたがそこで想像しておくべきものなので、' 2017-01-23-18 -00-00'程度です。 – EpicPandaForce
ご協力いただきありがとうございます!とても有難い! :) –
のようにあなたは、単にあなたのクラスを定義することができます:あなたはあなたのモデルに "外国ID" を格納する必要はありません
public class User {
private int id;
private String username;
...
private UserActivity userActivity;
}
public class UserActivity {
private int id;
private Activity activity;
}
。 Realmは実際に関連するリンクされたオブジェクトをポインタの下に格納しています。だからレルムのリンクdocをたどると、私はこのスキーマがあなたのために正常に動作すると思いフィールド
ありがとうございました。私は混乱していると思うのは、典型的なデータベースの知識を使ってデータベースを設計しようとしていて、Realmが典型的なクラスのように非常にオブジェクト指向であることを忘れていたことです。 –
私の主な関心事特定のユーザーを特定のアクティビティにどのように関連付けることができるか。 UserクラスにRealmList
はい、 'RealmList
User_Activityテーブルは、データベース内の二次の表です。セカンダリテーブルは、多対多の関係を持つ2つの異なるテーブルの関連レコードをバインドするのに役立ちます。だから、私はRealmでUserActivityクラスを定義する理由はありません。
public class User {
private RealmList<Activity> activities;
}
public class Activity {
private RealmList<Users> users;
}
多対多の関係が必要な場合は、十分である必要があります。
しかし、あなたの質問のように、私はあなたが1対多の関係が必要と考えている、だから
のように、正しい定義は次のようになります。
public class User {
private RealmList<Activity> activities;
}
public class Activity {
private user = User;
}
リンクオブジェクトはrealm-javaではまだサポートされていません。https:// github。 – EpicPandaForce
2つのテーブルを持つユーザー - userIdを持つユーザー(および上記の他のフィールドとRealmListのアクティビティ)とActivityテーブル"type"、 "date"、 "duration"フィールド(ユーザーのIDでアクティビティを取得しようとしているのでIDなし)を指定します。 –
ありがとうございます。思考、それは迅速だった:) –
- 1. 相当のLinkedHashmapをC++で使用していますか?
- 2. twigファイルに相当するHTMLテンプレートを生成しますか?
- 3. 私は以下のジャクソンマッピング相当するものを作成したいジャクソン
- 4. ファイルベースのjava.util.concurrent.locks.Lockに相当しますか?
- 5. RubyのcURLに相当しますか?
- 6. virtualenvのLuaに相当しますか?
- 7. JMockItのtimes()に相当しますか?
- 8. QTMovieViewのオーディオに相当しますか?
- 9. WP7のデータリストに相当しますか?
- 10. QtのGtkSpinnerに相当しますか?
- 11. マイクロフォーマットのDTDに相当しますか?
- 12. mstestのassert.warningに相当しますか?
- 13. IOSのphpmyadminに相当しますか?
- 14. .NETのGWTに相当しますか?
- 15. ウェブアプリケーションのapplication.doevents()に相当しますか?
- 16. cuBLASのcudaGetErrorStringに相当しますか?
- 17. perrorのC++に相当しますか?
- 18. Javaのmemcmp()に相当しますか?
- 19. MVCのRedirectToPageに相当しますか?
- 20. angular2の$ scope.my_modelに相当しますか?
- 21. ココアの `loadViewIfNeeded`に相当しますか?
- 22. TFSのオープンソースに相当しますか?
- 23. C#のfunc_get_argに相当しますか?
- 24. luaのリターンに相当しますか?
- 25. Djangoはブリッジテーブルを変更します
- 26. NSToolbarItemに相当するキーを割り当てますか?
- 27. 私はVB doeventsのPHP相当物を探しています
- 28. Jqueryが相次いでアニメーションを作成しますか?
- 29. .NETはGetLastInputInfoに相当しますか?
- 30. SprintfはMathematicaに相当しますか?
ユーザーがに属することができます複数の活動?アクティビティは複数のユーザーに属しますか? – EpicPandaForce
@EpicPandaForceアクティビティ(Static、Running、Walkingなど)は、複数のユーザーに属することができます。これは私の頭の中でそれを見たものです。アクティビティテーブルには、Walking、Running、Cyclking、Staticの4つのエントリしか格納されず、UserActivityで参照され、異なるユーザに関連付けられます。 –
ああ、これまでの過去のユーザー活動を日付別に記録することもできます。 – EpicPandaForce