Помогите правильно организовать структуру таблиц...

Tsep

Guest
Помогите правильно организовать структуру таблиц...

Вообщем надо соорудить каталог для хранения информации о музыкальных произведениях.

Допустим есть Лунная соната. Она, допустим, есть в 20-ти исполнениях(оркестр такой-то, скрипка такая-то....) - То есть название одно, и видов исполнения несколько.
Название также может быть на нескольких языках.

Вообщем получается, что имеем название на нескольких языках (произвольное количество) и в нескольких исполнениях(произвольное количество).

Как бы поправильнее соорудить таблицы, чтобы при поиске работало как можно быстрее с группировкой по названию.
 

Фанат

oncle terrible
Команда форума
Две таблицы:
- произведения
- исполнения
связаны по первичному ключу произведений.
 

Tsep

Guest
то есть в произведения мы запихиваем название, то есть Лунная соната?

Но ведь назавние может быть на нескольких языках, то есть нужна еще 1 таблица? или как свзяать по первичному ключу в данном случае?
 

Фанат

oncle terrible
Команда форума
Если нормализовывать БД - то да, нужна ещё одна таблица с названиями. скажем, id из таблицы с произведениями, язык и название на нём.
 

Tsep

Guest
что-то все равно не пойму....
на одно произведение в таблице с названиями может быть несколько записей на соотв. языке у которых ключ=id из табл с произведеними.
Но ведь может быть несколько произведений с таким названием, что тогда ставить в id из таблицы с произведениями?
Дублировать записи в таблице с названиями?
 

Фанат

oncle terrible
Команда форума
несколько РАЗНЫХ произведений с одинаковыми названиями?
естественно, дублировать.
 

Tsep

Guest
Произведение одно, но у него несколько вариантов исполнения.
просто хочется, чтобы при поиске "Лунная соната", у которой, допустим, 20 вариантов исполнения выводилось не 20 записей, а одна, в которой было бы : Лунная соната - 20 варинтов. Как такое сделать? Юзать Distinct?

может 4-ю таблицу лучше, чтобы не дублировать названия, в которой будут id названия и id произведения?
 

Фанат

oncle terrible
Команда форума
не понял, нафига 4 таблица?
просто хочется, чтобы при поиске "Лунная соната", у которой, допустим, 20 вариантов исполнения выводилось не 20 записей, а одна, в которой было бы : Лунная соната - 20 варинтов. Как такое сделать? Юзать Distinct?
нет. дистинкт тебе тут не поможет. group by и count
 

Tsep

Guest
Видимо придется так и сделать, просто не нравится, что придется дублировать названия:(
 

Фанат

oncle terrible
Команда форума
ДА С КАКОЙ РАДОСТИ У ТЕБЯ НАЗВАНИЯ БУДУТ ДУБЛИРОВАТЬСЯ?
 

Tsep

Guest
ну есть таблица произведения song:
id mp3
1 a1.mp3
2 a2.mp3
3 a3.mp3

3-mp3 - ки одного произведения но в разном исполнении. название одно.

и таблица с названиями:
titles:
id song_id title
1 1 Лунная соната
1 2 Лунная соната
1 3 Лунная соната

вот они и дублируются...
 

Фанат

oncle terrible
Команда форума
ты сам себя запутал
есть таблица произведения
3-mp3 - ки одного произведения но в разном исполнении.
то есть, ты таблицу исполнений обозвал зачем-то таблицей произведений.
а таблица произведений у тебя вообще куда-то пропала, но появилась совершенно непонятная таблица названий, которая тут ни к селу ни к городу.

Перечитай топик, сделай всё по-человечески, и не будет у тебя ничего дублироваться.

Только забудь на время о многоязычных названиях. Они тебя с толку сбивают. Надо не кидаться на задачу скопом, а решать поэтапно. Сначала разберись с произведениями, а когда разберешься - займись названиями.
 

Tsep

Guest
Точно я себя запутал...

Выходит упрощенно так вроде:
Произведение: proizv
id
1
2


Исполнение ispoln
mp3 proizv_id
t1.mp3 1
t2.mp3 1
t3.mp3 1
a1.mp3 2

Названия titles
proizv_id title lang
1 Песня1 ru
1 Song1 en
2 песня2 ru
2 song2 fr

А имеет ли смысл тогда таблица proizv усли там только id и вроде никакой общей инфы не намечается?
 

Фанат

oncle terrible
Команда форума
странная у тебя какая-то база.
Названия - аж на 10 языках. А даже автора - нету.
 

fixxxer

К.О.
Партнер клуба
Так ты точно себя запутаешь.
Сначала составь одну табличку - как бы ты это делал в Excel.
А потом иди сюда, изучи то, что по ссылке, и нормализуй базу.
 

Tsep

Guest
Фанат
Каюсь, про автора забыл. Его точно надо в произведение записать.
а языков для произведения может быть несколько. допустим китайская песня: китайское, английская транскрибция, русский перевод...
fixxxer
К сожадению в Excel никогда не делал таблички. За ссылку спасибо!

В любом случае разобрался - изначально перепутал таблицы и что в них ложить.
Спасибо!
 
Сверху