|
|
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Добрый день, форумчане. Я недавно начал изучать язык SQL и в частности проектирование баз данных. Поэтому хотелось бы услышать мнение более опытных разработчиков, да и вообще, критика - стимулятор роста))) От слов к делу. База данных музыкальных файлов. Схема БД лежит во вложении. Хотелось бы чтобы Вы высказали свои замечания, и подсказали бы ответы на следующие вопросы: 1. Я вроде старался привести базу к 3НФ. И вроде бы нарушений 3НФ не вижу, но возможно это от недостатка опыта. Вопрос: База находится в 3НФ? 2. Таблица Tracks получилась достаточно большой, содержит много столбцов, но вроде как все столбцы характеризуют сущность музыкального произведения. Вопрос: Нужно ли как-то разбивать эту таблицу на более мелкие? Не создаст такая большая таблица трудности впоследствии при эксплуатации БД? База будет реализовываться на MS SQL 2008 EE. Заранее спасибо за отзывы и конструктивную критику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 18:26 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Непойму как тут файл приложить к сообщению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 18:39 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Как-то все сумбурно. TrackNumbers наверняка должен быть связан с Albums. Или от куда ты будешь брать номера треков? Из альбомов или из некого общего списка? Подумай есть ли смысл Years и Albums делить на два справочника? В общем я бы пересмотрел необходимость иметь кучу справочников. Цель то какова? Что с помощью этой базы хочешь потом делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 08:46 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
а што такое таблица tracknumbers?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 09:40 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Как меломан с большим стажем и большой коллекцией, скажу так... :) 1. Можно добавить тип альбома. Навскидку: студийный, концертный, сборник типа best of, переиздание старого альбома, сплит (совместный альбом 2-3-n исполнителей), просто сборная солянка (типа 145 хитов Радио Шансон))) 2. Стиль можно вешать не на песню, а на альбом. И лучше дать возможность повесить несколько стилей. Для сборной солянки разных стилей - various. 3. Как быть, если в альбоме более 1 диска? Нумерация каждого обычно идет с 1. Да и зачем вообще отдельный справочник номеров песен? Можно сделать так: альбом - диск (либо другой носитель, кстати тоже можно справочник) - песня на носителе. 3. Locations - не совсем понятно, что имеется ввиду. Есть студии звукозаписи, на которых выпускаются альбомы (но не песни) - можно ввести справочником. Есть страны, откуда родом музыканты (но не песни). Или что-то другое? 4. Rating. Чей? Откуда? А как быть, если песню оценили более 1 человека? А если кто-то оценивает альбом целиком? 5. AlbumAutors. А надо ли? Можно всегда вытащить через песни. (Кстати, aut h ors, если только мы не в Испании))) 6. Bitrates, Extensions. Не расширение, а формат или кодек. И как быть с mp3 или ogg с переменным битрейтом? Заводить всё от VBR 1 kbps до VBR 700 kbps? 7. Tracks. Comment, Descripton - что есть что? Filename, Link, FullPath - куда пути и ссылки? Т.к. дальнейшая цель использования БД непонятна, то остановлюсь.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 11:39 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Я обычно подобные поделки не обсуждаю, но тут решил высказаться. 1. К "я бы пересмотрел необходимость иметь кучу справочников" +500. На битрейт и год справочник уж точно не надо. На кодек - возможно надо, только если от кодека что-то получить хочется. В 99,99% случаев достаточно просто поля, куда пихать значения типа flac, ape и т.п. 2. Фото из справочника артистов вообще убрать. Если уж хочется фото, это надо делать отдельной табличкой. Вообще, надо приучаться к модульности и отсутствию излишней связанности при проектировании БД. Большая проблема очень многих людей в том, что они не видят, к чему приведет минимальное возможное изменение техзадания на БД. А оно не должно приводить к тому, что придется всё переделывать. Если это не просто диплом типа "сдал-забыл", тем более. При промышленной эксплуатации систем легкость поддержки и развития становится вообще краеугольным камнем и дамокловым мечом (в зависимости от радиуса кривизны рук). Поэтому в вашем варианте: 1. Как только появится необходимость прицепить 2-е фото музыканта, придется думать. 2. Как только придется необходимость прицепить скан диска, придется думать. 3. После 1 и 2 придется думать, почему фото музыканта и фото диска лежат в разных табличках, тогда как обе сущности суть фото, и вообще на обложке диска может быть изображен сам музыкант в виде вполне себе приличного фото. 4. Дополнительно. Насчет кодека - даже если потом потребуется сделать отдельный справочник кодеков и на него навесить какую-то логику, это всегоа можно будет легко сделать минимальным движением серого вещества: само же уникальное имя кодека, которое будет использоваться в варианте без справочника, будет уникальным кодом (или даже PK, кому как нравится) в справочнике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:00 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, что не пояснил сразу предназначение БД. Базу хочу использовать в очередной программе-каталогизаторе музыки. Toshik Номера треков - это поле "Номер дорожки" из информации, например, об mp3 файле в ID3v1. Как я понимаю берется оно с номера дорожки в альбоме, или номера трека с диска, если это какой-то сборник. О необходимости иметь кучу справочников - спасибо - ценный совет, решил не делать и удалить лишние таблицы. Цель применения базы см. начало поста)) bootty Многие замечания взял на заметку, спасибо. Добавил тип альбома. Стиль решил наоборот вешать все-таки на песню, т.к. в ID3v1 стиль есть у каждой песни, а уж стиль всего альбома, тогда определять по песням входящим в него. Про нумерацию см. выше. Location - место расположения трека. Т.е. например: HDD, CD, DVD, грамм-пластинка и т.д.))) Rating - рейтинг выставленный пользователем проги музыкальной композиции. Comment поле из ID3v1, Description - описание в проге заданное. Link - поле из ID3v1. FileName - имя физического файла, FullPath - путь к файлу если Location = HDD. Со временем хотелось бы добавить к проге помимо возможности катологизации, возможность проигрывать файл прямо из проги. Вот тут вот Location и FullPath пригодятся. Сергей Васкецов Спасибо за идею про фото, сделал отдельную таблицу. Спасибо всем кто откликнулся, постарался максимально учесть ваши замечания. Во вложении вторая версия базы))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 20:16 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Уже лучше! Я вот только не совсем понимаю необходимости иметь таблицу TrackAutors. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 13:42 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
TrackAuthors - вспомогательная таблица для реализации связи: многие ко многим. Т.е. например, несколько групп могут совместно записать одну песню, ну и наоборот несколько песен может принадлежать одной группе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 16:22 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
inc-dec-iПрошу прощения, что не пояснил сразу предназначение БД. Базу хочу использовать в очередной программе-каталогизаторе музыки.А каков будет сценарий использования программы, можно полюбопытствовать? Судя по наличию путей к файлам, будет примерно так: скармливаю программе папку с музыкой, и она сама хитрым образом заполняет эту базу, так? Не взлетит. Взлетит лишь в одном случае, когда перед этим во всех файлах кто-то тщательно ручками прописал и перепроверил все тэги. Иначе в базе будут исполнители "The Beatles", "Beatles", "Beatles, the" и т.п. (названия песен и альбомов, стилей - аналогично, даже при использовании CDDB). При другом же сценарии (при ручном добавлении информации) замумукаешься забивать всё и прописывать пути... Мой выбор - аккуратно разложить по папочкам типа Жанр(ы)\Исполнитель (Страна)\Альбом\Песня или 1-я буква\Исполнитель (Страна)[Жанр(ы)]\Альбом\Песня , а потом скормить это каталогизатору типа MPEG Audio Collection. Сейчас уже таким образом отсортировано около 400Gb (более 50000 песен), и примерно столько же на очереди. Получающийся каталог можно посмотреть по ссылке . Отчет можно настроить самому из программы. Из минусов подхода - каталогизация только файлов на компьютере. С другой стороны, единицам требуется больше. Многих и встроенная библиотека Winamp'а устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 16:00 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
boottyС другой стороны, единицам требуется больше. Многих и встроенная библиотека Winamp'а устраивает.Многим и она не нужна вовсе, папки по алфавиту и хорош. Человек тренируется, базы данных вон лепит, занятие благородное и без практического применения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 16:18 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
boottyкогда перед этим во всех файлах кто-то тщательно ручками прописал и перепроверил все тэги. Иначе в базе будут исполнители "The Beatles", "Beatles", "Beatles, the" и т.п. (названия песен и альбомов, стилей - аналогично, даже при использовании CDDB) Вообще-то это ETL пишется от структуры БД, а никак не наоброт. Вы ж наверное не предлагаете к каждой сущности навесить еще таблички с "синонимами"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 16:24 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
maniac85Многим и она не нужна вовсе, папки по алфавиту и хорош. Человек тренируется, базы данных вон лепит, занятие благородное и без практического применения)При количестве папок более 100 уже тяжеловато ориентироваться в группах и стилях. А базы лучше делать хоть с каким-то практическим применением, а не модель сферической БД в вакууме :) Сергей ВаскецовВообще-то это ETL пишется от структуры БД, а никак не наоброт. Вы ж наверное не предлагаете к каждой сущности навесить еще таблички с "синонимами"?Не к каждой, разумеется. Но если бы писал для онлайн-сервиса, то постарался бы предусмотреть такую возможность для основных сущностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 17:18 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
boottyНо если бы писал для онлайн-сервиса, то постарался бы предусмотреть такую возможность для основных сущностей. Это настройка ETL (в Вашем применении БД), поэтому к самим данным непосредственного отношения не имеет. Это примерно как обосновать кроме необходимости внесения в синонимы "Beatles" еще и "Битлы", "Жуки", "Bitlz" и т.п. В общем, это примерно как желание увековечить ошибки, вместо желания их исправить. В инете достаточно утилит, чтобы пройтись по папкам и поправить теги mp3 как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 08:35 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовЭто настройка ETL (в Вашем применении БД), поэтому к самим данным непосредственного отношения не имеет. Это примерно как обосновать кроме необходимости внесения в синонимы "Beatles" еще и "Битлы", "Жуки", "Bitlz" и т.п. В общем, это примерно как желание увековечить ошибки, вместо желания их исправить.Конечно, всё так. Но всегда найдется кто-то, кто будет утверждать, что какой-то вариант исправления неверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 10:37 |
|
||
|
Оцените структуру БД Музыки
|
|||
|---|---|---|---|
|
#18+
1. Альбом может содержать несколько дисков (каждый со своим ID). Нумерация треков у каждого с единицы. 2. Альбом может состоять из нескольких больших произведений. Каждое может состоять из нескольких частей. Каждая часть может быть записана на нескольких треках (нумерация не обязательно с единицы), возможно, на разных дисках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 18:37 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=78&tid=1542854]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 400ms |

| 0 / 0 |
