私は実際にAndroid用の Barbell Pro に似たアプリを作成したいのですが、実際には、興味/教育目的のためです。または、データベース目的の別の例として、 Fitocracy
問題は、データベースの設計方法がわからないことです...例:
今、私には、これは各人のために保存する大量の情報である可能性があり、そうすることはかなり複雑かもしれないようです。
私はリレーショナルデータベースの経験が少ししかないのですが、リレーショナルデータベースの効率的な問題でそれをどのように設計すればよいのかわかりません。
私はデザインを求めるのではなく、どうやってそれを始めるのかを考えています。データベースの経験がないため、潜在的な複雑さは私にとって困難です。
多分それはそれほど複雑ではないかもしれませんが、私が言うように、私自身からの無知です。
これがプロトタイプのデータベーススキーマです。さまざまなエクササイズルーチンの作成を可能にし、それらのルーチンを日付によって人に割り当て、実行されたエクササイズと担当者の数を記録する場所さえあります。
最初にデータベースを設計しないでください。最初のスキーマに基づいて必要なすべての変数とテーブルを理解するのが難しいと思われる場合は、間違ったところから直接問題にアプローチしている可能性があります。
代わりに、データベースを設計してください何か保存するものがある場合、特に、要約または後者に対してクエリを実行するもの。 JSON
またはXML
をディスクに書き込むだけで、テキストファイルが必要なすべてになることがわかるでしょう。または、ルーチンごとにXMLまたはJSONのblobを保存し、ルーチンを照会、結合、および要約できるようにすることもできます。または、XMLとJSONは、その価値があるほど厄介で、実際に必要なのはいくつかのリレーショナルテーブルだけです。
すでにクライアントアプリケーションを停止していて、フィットネスセンターのクライアントのすべての情報を格納するデータベースサーバーで作業したい場合は、次の手順に従います。
CHAR
に収まらない場合は、データベースに応じて、テキストを「メモ」または「ブロブ」フィールドにいつでも保存できます。)自分が一歩後退したり、順不同だったりするのを恐れないでください。できる限りプロバイダーに依存しないデータベースを維持してください。必要に応じて、設計の要求に応じて、SQLiteからMonoDB、MSSQLに切り替えることができます。
何をするにしても、リレーショナルデータベースに精通していない場合は、これを強調することはできませんKEEP YOUR TABLES NARROW。 set1Reps
やset2Reps
などのフィールドを同じテーブルに追加しないでください。これはコード臭の頭痛の種であり、非対称データまたは明確で異なるサブテーブルを格納するための内部XMLまたはJSONフィールドが必要であることを示す大きな兆候です。
なんらかの理由で非常に広いレコードセットが必要で、フィールドをループして単一のデータオブジェクトに割り当てることができる場合は、ビューと巧妙なSQLを使用していつでも実行できます。しかし、その場合は、とにかく、データオブジェクトの多くをシリアライズおよびシリアル化解除する方がはるかに良いでしょう。
データベースから設計を開始しないでください。だれがどのように、どのように使用するかがわかったら、すべてが間違っているスキーマに閉じ込められます。要件から始めて、要件を証明するテストを記述し、テストに合格するコードを記述し、スキーマを完全に落とします。
開発を数回繰り返した後、JSON/MongoDBが要件に適していると判断する場合があります。または、すでに作成された優れたスキーマを見つけるかもしれません。または、HTML5ローカルストレージが必要なすべてであると決めるかもしれません。
グリーンフィールド(新規)アプリケーションの場合、スキーマは実装の詳細です。それについて心配しないでください。