2017-05-19 4 views
-1

음악 이론을 기억하는 데 도움이되는이 개인 프로젝트가 있습니다. 여기에있는 위치는 다음과 같습니다. 피아노 키가 36 개 있습니다. 다음과 같이 레이블이 지정됩니다.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은 중간 C 노트 C3c는 C 날카로운 쪽지입니다.

enter image description here

나는 위의 키의 일련의 일명 '저울'저장할 수 있어야합니다. 나는 또한 위의 키들의 조합 인 코드를 저장할 수 있기를 원합니다.

I는 다음과 같이 유용한 C 큰 스케일을 저장할 ...

[C3, D3, E3, F3, G3, A3은, B3, C3]는

I가 필요 MySQL 데이터베이스를 사용하여이 노트를 저장하고 검색하십시오. 필자의 원래 생각은 이것을 JSON 배열로 평면 텍스트 필드에 저장하는 것이었지만 분명히 이유는 모르지만이 방법은 좋지 않습니다.

이와 같은 패턴의 무기한 일련의 저장에 사용할 수있는 대체 데이터베이스 구조는 무엇입니까?

답변

2

JSON에 저장하지 않으려면 연결 테이블이 필요합니다. 먼저, 정렬 순서와 함께 36 개의 키를 모두 저장할 위치 인 PIANO_KEYS 테이블이 필요합니다.
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 
+0

합니다. –

관련 문제