2009-08-12 10 views
0

私は学習のために音楽プレーヤーを書いています。私はそれのデータベース部分を設計する方法がわかりません(私はそれを自分で作成し、MySQLのいくつかのバージョンは使用しません)。これまでの私の最善の考え方は、ファイル名、タイトル、アーティスト、アルバムなどの変数を持つ "ソング"クラスを作成することです。それから私は "歌"の配列を持っています。これは十分に機能しますが、更新するときは恐ろしいようです。 1つの曲をライブラリに追加するには、他のすべての曲に対してチェックする必要があります。非常に大きなライブラリや大きな更新では、これは望ましくありません(n^2?)。簡単に更新可能な音楽ライブラリデータベースを作成する

私はデータ構造について少し知っています。私は何らかの種類のハッシュ関数がこれを高速化できると考えていましたが、ハッシュに関する私の知識は非常に限られています。

私の質問:音楽ライブラリデータベースの改善とそのデータベースの改善は何ですか?

おかげで、

ティム

編集:私はPythonでプログラミングをしています。

+0

これを行う予定の言語は? – JasonV

+1

あなたは自分のデータベースを書くつもりですか? –

答えて

1

あなた自身を作成するには、b +ツリー構造などを見たい場合があります。そうすれば、リストを非常に高速に挿入して検索することができます。ここ

は彼らに少し情報を与えるために、ウィキペディアへのリンクです http://en.wikipedia.org/wiki/B%2B_treeウィキペディアからの直接

指数のHレベルのB-ためのB +ツリーの場合:

* The maximum number of records stored is n = bh 
* The minimum number of keys is 2(b/2)h − 1 
* The space required to store the tree is O(n) 
* Inserting a record requires O(logbn) operations in the worst case 
* Finding a record requires O(logbn) operations in the worst case 
* Removing a (previously located) record requires O(logbn) operations in the worst case 
* Performing a range query with k elements occurring within the range requires O(logbn + k) operations in the worst case. 
+0

有用かもしれないb-treeの別のリンクは次のとおりです。 http:// mattfleming。com/node/192 –

+0

学習のために、あなたは間違いなくこれを実行する必要があります。ロッサの楽しみ。 –

0

の場合あなたは良いインデックスを持っています。私は、この点でリレーショナルデータベースが提供しなければならないことは一般的にはないことがわかりました。私はMySQLの経験が少ないですが、私はあなたが言っていることをする最も速い方法は、実際にはデータベースのクエリです。

また、本当に必要な場合を除き、パフォーマンス上の機能に焦点を当てることはお勧めしません。あなたがそこに着いたらその問題を解決してください。

0

「基本キー」または各曲の一意の識別子を特定します。これを辞書のデータ構造のキーとして使用して、同じソングを再度挿入すると、値が

のように設定してください。上書きされます。

たとえば、Javaでは、HashMapを使用できます。ファイル名はキー、曲オブジェクトは値です。したがって、同じファイル名を再度入力しようとすると、それが書き換えられます

+0

情報の品質に応じて、ファイル名は稀ではありません。ファイルのハッシュまたはより多くの情報の組み合わせは通常です。 TrackN.mp3という名前のファイルも良い例です。同様に、従来の曲のレンディションもかなりあります(whitechristmas.mp3など) – andy

0

あなたの質問は、索引を作成する方法についての2つのように見えますが、簡潔であればJohnが答えましたが、あなたの前提に瑕疵がある。

iTunesやWindows Media Playerで曲が分割されているので、アーティスト - >アルバム - >曲が表示されます。新しい曲を追加する必要がある場合は、アーティストとアルバムを先に見るだけで、同じアーティストが複数のアルバムで曲を作り直すことができるため、これらをデータベースに追加する必要があります。

関連する問題