如何在MySQL数据库中存储音阶

如何在MySQL数据库中存储音阶,mysql,sql,json,database,database-design,Mysql,Sql,Json,Database,Database Design,我有一个个人项目来帮助我记住一些音乐理论,我有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尖音 我想能够存储'规模'又名一系列以上的关键。我还希望能够存储和弦,一个以上键的

我有一个个人项目来帮助我记住一些音乐理论,我有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中,那么您需要一个链接表。 首先,您需要桌上钢琴键,在这里您将存储所有36个键及其排序顺序,类似这样:
ID||PIANO|u键| SORT|u顺序
此表中的记录将如下所示:
1 | | C3 | | 1
第二,您需要一个钢琴音阶表,您将在其中存储音阶:
ID| | SCALE_NAME
在所有这些之后,您将需要表键缩放链接,在其中存储缩放和键之间的链接:
键ID |缩放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

如果不想存储在JSON中,则需要一个链接表。 首先,您需要桌上钢琴键,在这里您将存储所有36个键及其排序顺序,类似这样:
ID||PIANO|u键| SORT|u顺序
此表中的记录将如下所示:
1 | | C3 | | 1
第二,您需要一个钢琴音阶表,您将在其中存储音阶:
ID| | SCALE_NAME
在所有这些之后,您将需要表键缩放链接,在其中存储缩放和键之间的链接:
键ID |缩放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

我真的很喜欢,我真的很喜欢。