2011-12-09 8 views
0

私は、Javaを使用して、ホームプロジェクト(体重トレーニングを念頭に設計されています)として、小さなプラグインベースのトレーニング電卓を開発しようとしています。オブジェクトを格納するのに適したデータベースの種類は何ですか?

アプリケーションコアは、プラグインが接続できる特定のサービスを提供します。これらのうちの1つは、プラグインがデータを格納して取得できる、いわゆる "データサービス"です。さて、私のオブジェクトが構築される方法は、リレーショナルDB、またはオブジェクトリレーショナルDBとうまく対応していないと感じます。しかし、私はオブジェクトがバイナリとして保存されている場合、検索やクエリを実行することができない可能性があります。

問題は、1つ以上のオブジェクトコンポーネントで構成された1つ以上のオブジェクトコンポーネントで構成されるオブジェクトである単一のエントリ(LogEntryオブジェクト)を格納することです。

私のオブジェクトが、この(擬似コード)のようになります。私の質問がある

// This is the plugin itself 
class Log 
{ 
    member PersonalStats; 
    member LogBook; // ideally, this would be a table with the log entries 

    ... // methods 
} 

/* ================= */ 

// part of Log class 
class PersonalStats 
{ 
    member Date birthdate; 
    ... // etc., all the personal stuff 

    ... // methods 
} 

// part of Log class 
class LogBook 
{ 
    member List<LogEntry> entries; 

    ... // methods 
} 

/* ================= */ 

// an object of this class should represent one dataset in LogBook 
class LogEntry 
{ 
    member List<ExerciseDetail> exercises; 
    member String comments; 
    member Date date; 

    ... // methods 
} 

/* ================= */ 

class ExerciseDetail 
{ 
    member Exercise exercise; 
    member List<SetSchema> warmUps; 
    member SetSchema workSet; 

    ... // methods 
} 

class Exercise 
{ 
    member String name; 

    ... // methods 
} 

class SetSchema 
{ 
    member int sets; 
    member int reps; 
    member double weight; 

    ... // methods 
} 

:コアアプリケーションがデータベースのサポートを提供することができるようにするためには、DBMSの種類は、この種のに適しているでしょうデータスキーマ?私はそれが言語特有でないことを希望します。

私は確信していますが、もしデータベースが使えそうなのであれば。だから、あなたが何か提案があれば、自由に共有してください。

答えて

1

あなたは、関連エンティティのための良いケースです。明白な関係のいくつかは、あなたがきちんとデータベーステーブルにこれらのエンティティの関係をマッピングし、トムにより示唆されるようにすることができます

  • Log --> One To One --> PersonalStats, LogBook
  • LogBook --> One To Many --> LogEntry
  • LogEntry--> One To One --> ExerciseDetail
  • ExerciseDetail --> One To One --> Exercise
  • ExerciseDetail --> One To Many -->SetSchema

です、ANYを使用OR Mapping t Hibernateのようなools。 spring as a integration layerを使用してください。

+0

あなたの答えをありがとう、それは私を助けた。私はあまりにも特定の詳細に巻き込まれていたので、私はこれに気付かなかった。 –

1

場合によっては、答えが問題になります。問題は、オブジェクトを1つの巨大なテーブルとして保存することです。これが問題です。

各クラスをテーブルにマップすると、すべてがうまくいくように見えます。

あなたは本当に春の冬眠を見てください。私は多くのアプリケーションを起動し、この組み合わせを使用してすぐに起動して実行しています。

+0

ありがとうございます。私は両方の答えを受け入れることを好むだろうが、私は他のものと一緒に行くことを選ぶ。 –

関連する問題