0

私は、人々がプレイリストを作成し、localStorageにオブジェクトとして保存できるプロジェクトに取り組んでいます。現時点ではすべてがクライアント側です。

だから私は今、飛躍を遂げて、ユーザーログインシステムを作りたいと思っています(私はphp mysqlとfb connectまたはoauthシステムを使ってそれを行うことができます、他の提案はありますか?). 問題は、ユーザーごとにSQLデータベースを作成してプレイリストを(メディア情報とともに)保存するか、それとも他の方法があるかを決定することです。大量のデータベースを処理するのは (速度の点で) 問題になりますか?

次のようにデータベースを1つだけ作成するのはどうですか:

ユーザー データベース ---> { user(primary key) pass someotherInfo} を含む 1 つのテーブル、次に USER ごとのテーブル (プレイリストを含む)、プレイリストごとの 3 番目のテーブル (ユーザー ID とメディア情報を含む、私のプライマリ キーは何でしょうか?)

例: 10 人の登録ユーザーがいて、各ユーザーには 2 つのプレイリストがあります

1.table 1: 10 entries
2.table(s): username - playlists (10 tables) || i make one table with one field user other field playlist name
3.tables: each playlist - media info, owner (20 tables)

またはもっと簡単な方法はありますか?

私の質問が明確であることを願っています。

PS: 私は php とデータベースに不慣れです (これは非常にばかげているかもしれません)

4

2 に答える 2

2

驚いたことに、ほとんどの回答は質問を見逃しているようですが、試してみます。

これはデータ モデリング (必要なものを可能な限り最良の方法で表現するために、データベース内の多数のテーブルをまとめる方法) と呼ばれます。世の中には、起きているすべての時間をデータ モデルの調整と設計に費やしている人がいます。それらはあらゆるシステムの健全性にとって非常に重要であり、実際には、ほとんどの人が信用しているよりもはるかに重要です.

あなたは正しい道を進んでいるように聞こえます。エンティティを定義し、それぞれにテーブルを作成することは常に良いヒントです。この場合、ユーザーとプレイリストと曲 (たとえば) があります。このようにテーブルを定義します。ユーザー、ソング、プレイリスト。

次は、フィールドとテーブルの名前を定義することです (おそらく、上で提案された単純な名前は、まあ、単純です)。特にデータモデルが将来同じデータベースで拡張および拡張されることを知っている場合(または、これが避けられないことを知っているため)、偽の名前空間(つまり、単なるUSERではなくMYAPP_USER)を導入する人もいれば、突っ込むだけの人もいます彼らが必要とするものは何でも。

大きな問題は常に、正規化とその周辺のさまざまな問題、パフォーマンスと適用性のバランスを取ることです。このテーマについてはたくさんの本が書かれているので、意味のある答えを提供する方法はありませんが、私にとってはその要点ですは;

テーブル内のデータ フィールドが独自のテーブルに値するのはどの時点でしょうか? たとえば、データを分割する方法に応じて、テーブルを 1 つ、2 つ、または 6 つだけ使用してアプリケーションを作成できます。これが、あなたの質問が本当に出てくるところだと思います。

あなたの仮定はほぼ正しいと思います。覚えておくべきことは、一貫した命名規則です(識別子の命名方法についてはたくさんの意見があります)。あなたのアプリケーション(上記の表を使用)については、私はそうします;

USER { id, username, password, name, coffee_preference } 
SONG { id, artist, album, title, genre } 
PLAYLIST { id, userid } 
PLAYLIST_ITEM { id, songid, playlistid, songorder }

SQL を使用して、ユーザーのすべてのプレイリストを取得できるようになりました。

   SELECT * FROM PLAYLIST WHERE userid=$userid

または、プレイリスト内のすべての曲を取得します。

   SELECT * FROM SONG,PLAYLIST_ITEM WHERE playlist_item.playlistid=$playlist.id AND song.id=playlist_item.songid ORDER BY playlist_item.songorder

等々。繰り返しになりますが、この主題については本が書かれています。技術的な解決策を書き留めながら、明確かつ意味的に考えることがすべてです。また、これだけをキャリアとして持っている人もいます (DBA のように)。特に私がここに書いたことについては、多くの意見があるでしょう。幸運を。

于 2011-05-29T23:03:50.840 に答える
0

MYSQL や Postgresql などの SQL データベース、または MongoDB などの NOSQL データベースのいずれかを使用できます。それぞれに長所と短所がありますが、初心者のように見えるので、ほとんどの初心者が使用する MYSQL をお勧めします。これらの記事をご覧ください

http://dev.mysql.com/tech-resources/articles/mysql_intro.html http://www.redhat.com/magazine/007may05/features/mysql/

もちろん、たくさんのリソースがあるので、The Big G で自由に検索することもできます。

于 2011-05-29T22:33:40.817 に答える