0

マシンの故障記録を保持するために、Javaでシステムを構築する必要があります。しかし、これは私にとって少し複雑になっています。

要件はこのようなものです。

内訳レコードを入力するとき、ユーザーはマシンを選択できる必要があります(たとえばコンボボックスから)。マシンを選択すると、マシンのセクションを示すコンボボックスが下に表示されます。セクションが選択されると、選択されたセクションにサブセクションがある場合、別のコンボにそれらのサブパートが表示されます...これは、予想される最終的な関心部分に到達するまで、そのようになります。次に、ユーザーのみが内訳に関する説明を入力できます。

その部分が明確であることを願っています。

次に、もう1つの要件、検索可能性があります。上記と同様です。レコードは、上記のすべてのフィールドで検索できる必要があります。つまり、マシンに複数のレベルのサブセクションがある場合、それらすべてのレベルで検索できるはずです...

2つのレベルのサブセクションを持つマシンを処理するシステムを構築しました。しかし、それは仕事をしていません。だから私は最初からやり直しました(数回:D)。

私はを使用してSQLExpress 2008います。しかし、私はそれについてあまり経験がありません。SQLExpressを使用して、ネストされた/ツリー構造のデータを処理する方法がわからないためです。XMLを使うことを考えました。ええ、それは少し醜いです。なぜなら、データベース以外に、ネストされたデータを含むXMLファイルのフォルダーを維持する必要があるからです。私はそれをやったと思った..検索要件について覚えるまで..:(

最後に、私はあきらめました。そして突然フォーラムを思い出しました!誰かがこれで私を助けることができますか?これは私に割り当てられたトレーニングプロジェクトです。私はプログラミングが好きですが、高度な知識や経験はあまりありません。この動的な性質とネストされたデータを処理するための要件は、私を混乱させます。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

3

データベースの設計は完全に直観的でも簡単でもありません。試行錯誤による学習には、非常に長い時間がかかる場合があります。実験によって学ぶ前に、いくつかの基本的な概念を学び、それらをいくつかのケースに適用する方法を学ぶことをお勧めします。フルスタックはすでにあなたを正しい方向に向けています。要約は次のとおりです。

ツリー構造のデータを SQL テーブルに格納するには、いくつかの方法があります。別の列を使用して、同じテーブルの別の行にある Id 列を参照する「ParentId」と呼ぶ隣接リスト手法があります。これを使用して任意の深さのツリーを作成できますが、再帰的に検索するのは簡単ではありません。通常、SQL 言語に対して製品固有の拡張機能を使用するか、プログラミング言語でツリー検索を行う必要があります。後者を選択すると、優れた DBMS が提供するほとんどすべての機能が無駄になります。ネストされたセット モデルと呼ばれる別のアプローチがあります。ツリーに新しい葉を入れたり、葉を枝に変えたりする必要がある場合、これを更新するのは少し難しくなります。しかし、クエリは非常にうまく機能します。

これらのアプローチは両方とも、主キーへの外部キー参照の概念を理解していること、および多対 1 または多対多の状況でリレーショナル モデルを使用できることを前提としています。すべての属性の検索に等しく適したデータベースを作成することは、重要な設計上の問題です。初歩的なことをマスターするまで、それに取り組まないでください。

データベースの設計は、正しく行えばそれほど複雑ではありません。10 万行のコードよりも 100 のテーブルを理解する方が簡単です。しかし、それはプログラミングよりも抽象的です。アクション指向の命令ではなく、データ宣言の観点から要件を表現することを学ぶのは難しい場合があります。

于 2012-09-25T11:16:31.260 に答える