2017-05-19 1 views
-1

音楽理論を覚えやすくするために私はこの個人的なプロジェクトを持っています。私はここにピアノの鍵があります。これらは次のようにラベルされています。MySQLデータベースに音階を保存するには

C3, C3c D3, D3c, E3, F3, F3c, G3, G3c, A3, A3c, B3, C4, C4c D4, D4c, E4, F4, F4c, G4, G4c, A4, A4c, B4, C5, C5c D5, D5c, E5, F5, F5c, G5, G5c, A5, A5c, B5. 

C3はC3Cです.C3Cはシャープなノートです。

enter image description here

私は上記の一連のキー別名「スケール」を格納することができるようにしたいです。私はまた、上記の鍵の組み合わせである和音を保存できるようにしたいと考えています。

私はこのようになりますCメジャースケール...

保存したい例えば

[C3、D3、E3、F3、G3、A3、B3を、C3]

私がする必要がありますMySQLデータベースを使用してこれらのメモを保存し、取得します。私のオリジナルの考えは、これらをJSON配列としてプレーンテキストフィールドに格納することでしたが、明らかにこれは良い習慣ではありませんが、私は理由を理解できません。

このようなパターンを無期限に格納するには、どのような代替データベース構造が有効でしょうか?

答えて

2

JSONに格納しない場合は、リンクテーブルが必要です。 最初に、PIANO_KEYSテーブルが必要です。ここでは、36個のキーすべてをソート順に格納します。次のようになります。
ID || PIANO_KEY || SORT_ORDER
この表のレコードは、次のようになります。
1 || C3 || 1
第2に、スケールを格納するPIANO_SCALESテーブルが必要です。
ID || SCALE_NAME
この後、スケールとキーの間にリンクを保存するテーブルKEY_SCALE_LINKSが必要になります。
KEY_ID || SCALE_ID
あなたはこれで要求されたスケールからすべてのキーを取得することができます:私は本当にそのような

select k.piano_key 
from piano_keys k, 
    key_scale_links l 
where k.id = l.key_id 
    and l.scale_id = :requested_scale_id 
order by k.sort_order 
+0

を。 –

関連する問題