CREATE TABLE `samples` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`u_id` int(10) NOT NULL,
`istm_id` int(10) NOT NULL,
`reg_date` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
`s_name` varchar(100) NOT NULL,
`bpm` int(10) NOT NULL,
`genres` varchar(100) NOT NULL,
`price` int NULL DEFAULT 0,
`del_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '삭제 여부 (0=삭제 전, 1=삭제 후)',
`del_date` DATETIME(6) NULL COMMENT '삭제 날짜',
`field` VARCHAR(255) NULL,
PRIMARY KEY (`id`)
);
CREATE INDEX `IDX_samples_u_id` ON `samples`(`u_id`);
CREATE INDEX `IDX_samples_istm_id` ON `samples`(`istm_id`);
우선 프로젝트 처음에 준비를 해뒀던 DB 테이블인데 만들어보려고 생각중에 음악을 만들 때 사용하는 샘플 종류가 있다는게 떠올랐다.
one-shot과 loop 개념.
말 그대로 one-shot을 직독직해하면 한번만 쏜다. 한번의 소리만 들린다 이고, loop는 다양한 소리들이 loop의 형태로 사용할 수 있게 하는 개념이라고 생각하면 쉽다.
loop는 드럼의 패턴일 수도 있고 드럼들과 다른 악기들이 종합된 형태일 수 있으며, 또 그냥 코드의 정렬일 수도 있고(여기서 말하는 코드는 음악에서의 코드다), 멜로디만 구성되어있을 수도 있다. 즉 loop의 바리에이션은 넓다.
근데 one-shot은 그게 아니다. 드럼의 킥 사운드, 스네어, 심벌즈 등이 한번만 찍는 소리고 작곡가가 무한하게 가공 및 조합해서 사용할 수 있게끔 제공한다. 또, 사운트 효과로 분류되는 FX의 개념도 one-shot인 경우가 많다.
그래서 이걸 왜 말하냐고?
bpm이 not null로 선언되면 안된다는 것을 길게 말한 것이다. one-shot은 반드시 bpm의 개념이 필요하지 않다. 왜? 한번만 소리가 찍힐테니까 90bpm의 곡에서도 200bpm의 곡에서 사용할 수 있으니까. 근데 또 one-shot이지만 길게 쓸 수 있는 one-shot 샘플도 존재한다. 이 경우에는 one-shot임에도 불구하고 bpm이 필요할 수도 있다. 그러니까 결론은 bpm이 not null이면 안된다는 것과, one-shot인지 아닌지 구분할 수 있는 칼럼이 지금 이 테이블에 필요하다는 것이 결론이다.
그래서 이렇게 변경.
-- samples 테이블 생성
CREATE TABLE `samples` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`u_id` int(10) NOT NULL,
`istm_id` int(10) NOT NULL,
`reg_date` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
`s_name` varchar(100) NOT NULL,
`bpm` int(10) NULL, -- BPM 필드는 NULL 가능하게 변경
`genres` varchar(100) NOT NULL,
`price` int NULL DEFAULT 0,
`is_one_shot` TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'one-shot 여부 (0=아님, 1=one-shot)',
`del_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '삭제 여부 (0=삭제 전, 1=삭제 후)',
`del_date` DATETIME(6) NULL COMMENT '삭제 날짜',
`field` VARCHAR(255) NULL,
PRIMARY KEY (`id`)
);
CREATE INDEX `IDX_samples_u_id` ON `samples`(`u_id`);
CREATE INDEX `IDX_samples_istm_id` ON `samples`(`istm_id`);
is_one_shot
칼럼 추가와 bpm null 허용! 이게 결론이다.
'Coding History > project' 카테고리의 다른 글
회원가입 로그인 로직 중, 중복 이메일 처리. (1) | 2024.09.26 |
---|---|
[IDE-인텔리제이] java.lang.ClassCastException 오류 해결. (0) | 2024.09.26 |
추천 곡 랜덤화와 앨범 이미지까지 삽입하기. (5) | 2024.09.23 |
로그인 하지 않으면 메인페이지 접근 안되는 문제 (2) | 2024.09.23 |
스포티파이 플레이어 임베드하기. (원하는 재생목록도 가져오기) (3) | 2024.09.22 |