2011-12-20 2 views
-1

Мне было интересно, есть ли способ объединить два индекса на третий, чтобы сделать серийный номер ... Например: Если я хочу создать базу данных музыки Я бы начал с художников таблицы с -artist_name -artist_id (первичный ключ) -....MySQL объединяет два индекса в один

Тогда таблица альбомов с -album_name -album_id (Pk) -...

А потом застольные песни с - song_title -song_id

Скажем, художник будет X с artist_id - 12345 Тогда альбом Y с album_id - 678 И я хочу song_id быть 12345.678.xxx (точки только для визуализации идеи, длина artist_id и album_id бы постоянный)

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

Или, может быть, это просто мои минимальные знания о MySQL? :)

+0

Ну, я начну с удара, хотя я не понимаю на 100%, где вы пытаетесь это сделать. Вы можете комбинировать поля как с индексами, так и с первичными ключами (что является действительно специализированным индексом). Но идея нормализованной структуры данных состоит в том, чтобы поддерживать размер БД небольшим и помогать в обслуживании, а не уменьшать зависимость от внешних ключей. Итак, когда принц меняет свое имя, вы снова захотите обновить одну запись в таблице Artist, а не 1000 записей в таблице artist_album_song. –

+0

Вы действительно имеете в виду «индекс» в смысле слова MySQL? Похоже, что вы не создали никаких таблиц, которые фактически определяют связь между исполнителем, песней и альбомом. Они необходимы для использования реляционной базы данных. Вам действительно нужно прочитать о том, как правильно спроектировать модель данных для вашей базы данных. – Poodlehat

+0

На самом деле я не совсем уверен, где я собираюсь с ним, но если честно .. Если принц изменит свое имя, альбомы, которые уже на рынке, никогда не изменят имена :) – cyvvilek

ответ

0

Сохраняйте artist_id и album_id как отдельные столбцы в таблице композиций и включайте правильные отношения и индексы внешнего ключа. Это даст вам наилучшую комбинацию целостности данных и производительности запросов.

+0

:) Я боялся, что я был безумный с ним ... :) – cyvvilek

Смежные вопросы