3

私は音楽データベースの作成に取り組んでいます。

playlist3 つのテーブル、 、musicおよびそれらをリンクするテーブルが必要だと思います。

Playlist table:
play_id PK,
Created_By,
play_name

music table:
music_id PK,
track_title,
artist,
album

ユーザーに好きなだけプレイリストを作成してもらいたい。必要な数のトラックをプレイリストに追加できます。テーブルのプレイリスト部分は理解していますが、音楽テーブルからプレイリスト テーブルにトラックを追加するときは、あいまいになります。音楽テーブルがトラックでいっぱいになっている場合、1 つのプレイリストに 2 つのトラックが表示されるようにするにはどうすればよいですか?

これを行う方法が少しわかりません。テーブル構造が適切かどうか、またはフィールドを追加する必要があるかどうか。主キーと外部キーに関係があるかどうかはわかりませんが、それらをリンクするには別のテーブルが必要だと思います。どんな助けでも大歓迎です。

4

2 に答える 2

3

音楽テーブルがトラックでいっぱいになっている場合、1 つのプレイリストに 2 つのトラックが表示されるようにするにはどうすればよいですか?

次のようなものが必要です。

Tracks:

  • TrackId
  • Title
  • ...

PlaylistsTracks:

  • Id
  • PlayListId
  • TrackId
  • ...

すでにある他の 2 つのテーブルについては、次のようにします。

プレイリスト テーブル: play_id PK、Created_By、play_name

音楽テーブル: music_id PK、track_title、アーティスト、アルバム

これらのテーブルには問題があります。この方法のテーブルは正規化されていません。2 つの追加のテーブルを作成する必要があります。

Users:

  • Id
  • Name
  • ..

Artists:

  • ID
  • Name
  • ...

それで:

  • Created_Byを参照する外部キーを作成しusers(Id)ます。
  • 列の代わりにテーブルに外部キーを作成しArtistID、参照します。musicartistArtists(ID)
  • テーブルtrack_idの列の代わりにtrack_title列を作成しmusicます。
于 2012-11-17T20:01:58.560 に答える
1

あなたは正しい軌道に乗っていると思います。次のようなテーブル設定は、必要なことを行うはずだと思います (これは私の頭の中から外れているので、構文の問題は許してください)。

DROP TABLE IF EXISTS tPlaylist;
CREATE TABLE tPlaylist (
    playlistId INT,
    /* ... Other Data ... */
    PRIMARY KEY (playlistId)
);

DROP TABLE IF EXISTS tMusic;
CREATE TABLE tMusic (
    musicId INT,
    /* ... Other Data ... */
    PRIMARY KEY (musicId)
);

DROP TABLE IF EXISTS tPlaylistMusicMap;
CREATE TABLE tPlaylistMusicMap (
    mapId       INT,
    playlistId  INT,
    musicId     INT,
    trackNumber INT,
    PRIMARY KEY (mapId),
    /* ... Other Data ... */
    FOREIGN KEY (playlistId) REFERENCES tPlaylist (playlistId),
    FOREIGN KEY (musicId) REFERENCES tMusic (musicId),
    UNIQUE KEY (playlistId, musicId, trackNumber)
);

これの基本的な要点は、ユーザーが tPlaylist テーブル (ユーザー プレイリストごとに 1 行) でプレイリストを作成できるようにし、すべての音楽トラック データを tMusic に配置し、マッピング テーブル tPlaylistMusicMap に各プレイリストの個々のトラックが格納される場所であることです。 . プレイリスト ID、ミュージック ID、およびトラック番号の一意のキーにより、同じ tMusic エントリをプレイリスト内のトラック リストの異なる場所で複数回使用できます。

外部キー制約を追加するために編集されました。

于 2012-11-17T20:00:31.360 に答える