Структура базы для музыкального сайта

idencial

Одинаковый
Структура базы для музыкального сайта

Для музыкального сайта требуется реализовать алфавит и выбор артистов по алфавиту.
У меня в голову пришла следующая структура базы (упрощенная):

table artists
artist_id | artist_name

table letters
letter_id | letter

table letters_artists
letter_id | artist_id

Соотв. в letters - алфавит, в artists - музыканты,
а в letters_artists - сопоставление кто к какой букве принадлежит

Возникло 2 вопроса:
1.Знаю, что такая структура не оптимальна, поэтому может кто знает какая структура будет лучше?
2.Если я хочу музыканта, например Brian McKnight записать на 2 буквы - B & M, то при моей структуре
я просто делаю 2 записи в таблице letters_artists, но к сожалению, т.к имя музыканта хранится как artist_name
в таблице artists, то при выводе списка для M я получу ес-но Brian McKnight, а не McKnight Brian.
Вопрос в том какая нужна структура базы, чтобы на B я выводил Brian McKnight, а на M - McKnight Brian?
 

Crazy

Developer
table artists
artist_id | artist_name | first_letter

И исользовать group by при выборке списка заузанных букв.
 

idencial

Одинаковый
Т.е вместо 3-х таблиц - одна?
А как при такой организации указать артиста для 2-х букв?
 

Crazy

Developer
Да. Торможу. В таком случае нужно по крайней мере 2 таблицы:

table artists
artist_id | artist_name

table letters
letter | artist_id
 

idencial

Одинаковый
Ну я в принципе предполагал, что таблица, хранящая алфавит лишняя, но такая схема не решает вопрос №2
 

HEm

Сетевой бобер
Это уж как тебе самому приспичит и каких правил ты будешь придерживаться
На некоторых сайтах пишут например строго "Фамилия Имя"
Можешь кстати придумать такую вещь - заводить артиста в нескольких (N) вариантах но (N-1) вариант будут не рабочими а ссылками на один правильный
 

idencial

Одинаковый
Я, наверное, туплю.
Не подскажешь как же он решает?
На примере Brian McKnight.
Вносим две записи в letters, но при выводе на букву M будет выводится Brian McKnight, а не McKnight Brian.
 

akul

Guest
Автор оригинала: idencial
Я, наверное, туплю.
Не подскажешь как же он решает?
На примере Brian McKnight.
Вносим две записи в letters, но при выводе на букву M будет выводится Brian McKnight, а не McKnight Brian.
Если непонятно, _как_ сделать - еще раз внятно произнеси, _что_ ты хочешь сделать. Ты хочешь искать и формировать списки букв по имени И фамилии. Ты хочешь менять местами имя И фамилию. Что мы здесь наблюдаем? Мы наблюдаем ДВЕ сущности. Имя и фамилию. Которые требуют ДВУХ разных полей. А ты свалил их в одну кучу, а теперь думаешь, как это кучу разгрести.
 

Crazy

Developer
Автор оригинала: idencial
Вносим две записи в letters, но при выводе на букву M будет выводится Brian McKnight, а не McKnight Brian.
Пусть для Brian McKnight мы имеет artist_id=1001. Вносим в letters две записи:

artist_id=1001, letter=M
artist_id=1001, letter=B

Вопросы еще остались? :)
 

Crazy

Developer
Автор оригинала: akul
Мы наблюдаем ДВЕ сущности. Имя и фамилию. Которые требуют ДВУХ разных полей.
Где имя, а где фамилия у жены Санчо Пансы? Звали ее так: Хуанта-Тереса Гутьеррес Каскахо. Причем, это еще очень короткое имя. :)

Так что с категоричностью будь осторожнее please. :)
 

akul

Guest
хорошо, уточним: _в данном примере_ две сущности. Естественно, я подумал о таких вариантах, но решил не предлагать пока отдельную связанную таблицу для имен по двум причинам. Одна из них - уровень вопрошающего, другая - попробуй представить, в каком виде представит такой сайт оную Хуаниту при поиске по буквам Г или К, и она станет очевидна.
 

Crazy

Developer
В моем варианте нет проблем при поиске по любой букве. :)
 

Crazy

Developer
Автор оригинала: si
я так понял у него не продлема поиска, а проблема с выводом:
Если мы переключились на обсуждение отображения, то лично я сделал бы так: все найденные записи упорядочиваются о алфавиту согласно исходному написанию полного имени, причем слова, начинающиеся на требуемую букву, хайлайтятся любым угодным способом.
 

si

Administrator
Если мы переключились на обсуждение отображения
с этого как раз начиналось (вопрос номер 2) :)
все найденные записи упорядочиваются о алфавиту согласно исходному написанию полного имени, причем слова, начинающиеся на требуемую букву, хайлайтятся любым угодным способом.
помоему нормальное решение
 
Сверху