Хранить данные для песен MySQL DB - PullRequest
1 голос
/ 06 апреля 2010

Я храню огромный набор песен в базе данных MySQL. Вот что я храню в таблице «песен»:

CREATE TABLE `songs` (
  `song_id` int(10) unsigned NOT NULL auto_increment,
  `song_artist` varchar(255) NOT NULL,
  `song_track` varchar(255) NOT NULL,
  `song_mix` varchar(255) NOT NULL,
  `song_title` text NOT NULL,
  `song_hash` varchar(40) NOT NULL,
  `song_addtime` int(10) unsigned NOT NULL,
  `song_source` text NOT NULL,
  `song_file` varchar(255) NOT NULL,
  PRIMARY KEY  (`song_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1857 DEFAULT CHARSET=latin1

Теперь я хотел бы отследить, сколько пьес имеет каждая песня, и другие специфичные для песни данные, относящиеся к песне. Я не хочу продолжать добавлять поля в таблицу «песен» для этого. Как можно более эффективно хранить данные, относящиеся к песне? Какая лучшая практика здесь?

1 Ответ

5 голосов
/ 06 апреля 2010

Если это отношение 1 к 1, вы должны добавить его в таблицу песен. Нет ничего плохого в добавлении дополнительных полей в таблицу, когда отношения требуют этого. Затем вы можете использовать SQL для увеличения поля в каждой игре.

Можно использовать другой подход, если, скажем, вы хотите отслеживать, сколько раз конкретный пользователь проигрывал песню. Вы можете создать таблицу отношений, которая будет иметь song_id, user_id, plays в качестве полей (song_id и user_id образуют составной ключ).

В зависимости от того, что вы подразумеваете под

данные песни

будет определять способ изменения схемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...