2016-04-26 8 views
0

私は働いている会社のセバーバルゾーンで音楽を演奏するマルチゾーンの音楽プレーヤー(C#とSQLを使用)を作った。事前に定義された異なるプレイリストは、スケジュールされた時間に自動的に読み込まれます。音楽のパーツデータベースの設計

私は今プレイリストを少し賢くするために探しています。 1つまたは複数の時間帯(つまり、朝、正午、夜​​)に曲を接続できるようにしたい。

私が達成しようとしているのは、あらかじめ決められたプレイリストを使用するのではなく、毎日劇的な時間に "オンザフライ"でプレイリストを生成することです。私の音楽ライブラリに曲を追加することで、「許可された」時間帯を確実に設定できるようになります。プレイリストを設定する時間を置いても十分です...

私は現在音楽テーブル、プレイリストテーブル、実際のプレイリストを格納するためにこれらの2つのテーブルを接続するテーブル。

私は物事が過度に複雑になる傾向があるので、私は効率的な方法でデータベースを設計する方法についていくつかのヒントをお願いしたいと思っていました...(そして多分、プレイリストを作成する)

+0

:乱数によって生成することができます。曲に複数の時間帯があることはありますか?これを実際のファイルに保存するためにinbuilt MP3タグを使用してみませんか? –

+0

はい、はい、曲は複数の拍子を持つことができます。私は音楽ファイルを置き換える/復元する必要がある場合に備えて、このデータをすべてデータベースに保存したいと思っています... – Liknes

+0

各ビットが1つの許可されたdaypartを表すバイトを格納できます。 Otの文字列x文字で、それぞれ1日分です。もう一つのdaypartのテーブルは私にとって過度のように聞こえる。私はそれを '時代'と呼ぶのではなく、たぶん「お祝い」、「厳粛な」、「季節的な」などを可能にするために「機会」と呼んでいません。 – TaW

答えて

0

本当に面白い問題があります。あなたがその場でプレイリストを生成したいのであれば、プレイリストテーブルは時代遅れだと思います。

私は音楽テーブルに3つの列を追加します:日、午後、夜。 これらの列には、昼間、午後または夜にその曲を再生する可能性が格納されます。

例:

Day | Afternoon| Night 
10 | 40  | 50 

その後、あなたはその場でリストを生成する単純なクエリを行うことができます。

例:私は私のオフィスにいる*

Morning playlist 
Select * from SongTable order by Day * random() limit PLAYLIST_SIZE 

はそうクエリをテストする機会を持っていませんでした。ヒント:あなたは「放送時間帯」で特定の曲をタグ付けしたいと言っている

ABS(CHECKSUM(NewId())) % 100

+0

これはdefenitlyそれを行う方法です!しかし、私はdaypartsが動的であることを望んでいると思う...私は後で時間を追加したいかもしれない(私はここで間違った単語かもしれないことを知っている) – Liknes

+0

JSONフィールドにそれを見るための簡単な方法。 {"日":30、 "正午":30、 "夜間":40} このようにすると、時間帯を動的に拡張できます。プレイリストを照会する簡単な方法はありません。全体のsongTableを照会し、C#を使用してソートして制限する必要があります。 –