音楽理論を思い出すのに役立つこの個人的なプロジェクトがあります。36 個のピアノの鍵盤があります。それらは次のようにラベル付けされます。
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 はミドル C ノート C3c は C シャープ ノートです。
上記の一連のキーである「スケール」を保存できるようにしたいと考えています。上記のキーを組み合わせたコードも保存できるようにしたいです。
たとえば、次のような C メジャー スケールを保存したいとします。
[C3、D3、E3、F3、G3、A3、B3、C3]
MySQL データベースを使用して、これらのメモを保存および取得する必要があります。私の最初の考えは、プレーン テキスト フィールドに JSON 配列としてこれらを保存することでしたが、理由はわかりませんが、明らかにこれは良い習慣ではありません。
このような無期限の一連のパターンを保存するには、どの代替データベース構造が機能しますか?
JSON で保存したくない場合は、リンク テーブルが必要です。まず、テーブル PIANO_KEYS が必要です。このテーブルには、36 個のキーすべてをソート順で保存します。たとえば、
ID || です。PIANO_KEY || SORT_ORDER
このテーブルのレコードは次のようになります:
1 || C3 || 1
次に、スケールを保存する 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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加