Структура базы данных

Дополнительные плагины к программе
User avatar
ilychuk
Star
Posts: 382
Joined: Mon Oct 22, 2012 1:58 pm
Location: Minsk, Belarus
Contact:

Re: Структура базы данных

Post by ilychuk » Mon Sep 21, 2015 4:38 am

public2009 wrote:SQLite, как бы это помягче сказать, та ещё какашка.
Хуже только MySQL.
Ой, не работали вы с такими СУБД как Paradox и прочими dbase. А если по существу: любая база какашка, если не уметь ей пользоваться. И в данном случае я частично на стороне разработчиков: как правильно сказал TerribleFloater разработка мувинизера началась раньше, чем в SQLite появились обсуждаемые ключи. И многие пользователи не первый день пользуются этой программой: добавляют/удаляют людей и фильмы... И в итоге в базе по-любому есть мусор. И сейчас изменить структуру таблиц не почистив мусор будет несколько проблематичным.

Но стремиться к этому надо :)

TerribleFloater
Superstar
Posts: 1896
Joined: Thu Feb 28, 2008 4:20 pm

Re: Структура базы данных

Post by TerribleFloater » Mon Sep 21, 2015 8:38 am

ilychuk wrote:как правильно сказал TerribleFloater разработка мувинизера началась раньше, чем в SQLite появились обсуждаемые ключи.
TerribleFloater может сказать ещё правильнее :lol:
Когда разработка программы началась, в БД было фактически 4 (четыре!) таблицы: movies, persons, data да manuals. Ну фига ли тут контролировать, когда всё на ладони?..
А вот потом пошло усложнение винегрета по просьбам посетителей ресторана...
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

public2009
The leading part candidate
Posts: 104
Joined: Thu Sep 16, 2010 7:43 am

Re: Структура базы данных

Post by public2009 » Mon Sep 21, 2015 12:29 pm

ilychuk wrote:Ой, не работали вы с такими СУБД как Paradox и прочими dbase.
С базами данных я работаю с 1994 года. Такшта работали, работали.
ilychuk wrote:Но стремиться к этому надо :)
Категорически согласен.
Моя база, например, не проходит валидацию целостности. В чём проблема - мувинайзер не говорит. Всё собираюсь написать свою валидацию с расширенным логированием проблем, да руки не доходят.

TerribleFloater
Superstar
Posts: 1896
Joined: Thu Feb 28, 2008 4:20 pm

Re: Структура базы данных

Post by TerribleFloater » Mon Sep 21, 2015 12:45 pm

public2009 wrote:Моя база, например, не проходит валидацию целостности. В чём проблема - мувинайзер не говорит.
И не скажет. Он запускает, если не ошибаюсь, встроенную PRAGMA_inegrity_check, а она возвращает или 0, или 1. Бинарная логика такая бинарная...
public2009 wrote:Всё собираюсь написать свою валидацию с расширенным логированием проблем, да руки не доходят.
Удачи в дохождении рук.
В аналогичной ситуации я просто пролистал таблицы и понял, где затык.
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

User avatar
ilychuk
Star
Posts: 382
Joined: Mon Oct 22, 2012 1:58 pm
Location: Minsk, Belarus
Contact:

Re: Структура базы данных

Post by ilychuk » Mon Sep 21, 2015 7:05 pm

Так давайте попробуем объединить усилия и сделать что-то общеполезное :). Кстати, TerribleFloater, А можно вашу "схему данных" в менее сжатом виде, чтоб я смог сравнить с тем, что получилось у меня.

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

TerribleFloater
Superstar
Posts: 1896
Joined: Thu Feb 28, 2008 4:20 pm

Re: Структура базы данных

Post by TerribleFloater » Mon Sep 21, 2015 7:43 pm

ilychuk wrote:Так давайте попробуем объединить усилия и сделать что-то общеполезное :).
Чует моё сердце, что ничего не сможет получиться :-( Причина для чутья проста: средствами SQLite невозможно увидеть битую запись в БД, так? Если движок запись видит — значит, она правильная. А если запись неправильная — он её проскакивает (в лучшем случае; в худшем — останавливается). То есть получится примерно то же самое, что со встроенной проверкой целостности. Или всё хорошо, или что-то плохо.
ilychuk wrote:Кстати, TerribleFloater, А можно вашу "схему данных" в менее сжатом виде, чтоб я смог сравнить с тем, что получилось у меня.

А законченную версию можно будет выложить в общий доступ.
Сделать-то сделаю, но как её предъявить? OpenOffice их в виде картинки не сохраняет за ненадобностью. Я выкладывал скриншот. Понадобится делать скриншоты частей общей картины, потом их склеивать.
В принципе, такую "схему" можно сделать в любой программе, позволяющей разработать запрос "в режиме дизайна". То есть в окно конструктора запроса забрасываем все таблицы, рисуем "связи", делаем SELECT чего угодно — просто чтобы непустой запрос сохранить :-) И вуаля. И вот тогда программу можно отбирать по критериям удобства: в какие форматы графики можно сохранять, например. Или, как в DVD- и BD-Сценаристах, автоматически расставлять таблицы в окне, чтобы красиво смотрелось.
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

User avatar
ilychuk
Star
Posts: 382
Joined: Mon Oct 22, 2012 1:58 pm
Location: Minsk, Belarus
Contact:

Re: Структура базы данных

Post by ilychuk » Tue Sep 22, 2015 4:38 am

TerribleFloater wrote:
ilychuk wrote:Так давайте попробуем объединить усилия и сделать что-то общеполезное :).
Чует моё сердце, что ничего не сможет получиться :-( Причина для чутья проста: средствами SQLite невозможно увидеть битую запись в БД, так? Если движок запись видит — значит, она правильная. А если запись неправильная — он её проскакивает (в лучшем случае; в худшем — останавливается). То есть получится примерно то же самое, что со встроенной проверкой целостности. Или всё хорошо, или что-то плохо.
Я думал немного другое дело: запросами поочередно проверять наличие в "родительской" таблице наличия всех кодов из "потомка". И если у родителя такого кода нет - выносить инфу в окно пользователю с возмжностью отметить на удаление. Нечто подобное я уже писал, а сейчас переделываю и расширяю функционал своей программы. А там если понадобится - и плагинов можно будет написать
TerribleFloater wrote:
ilychuk wrote:Кстати, TerribleFloater, А можно вашу "схему данных" в менее сжатом виде, чтоб я смог сравнить с тем, что получилось у меня.

А законченную версию можно будет выложить в общий доступ.
Сделать-то сделаю, но как её предъявить? OpenOffice их в виде картинки не сохраняет за ненадобностью. Я выкладывал скриншот. Понадобится делать скриншоты частей общей картины, потом их склеивать.
Можно без склеивания - просто скриншоты :)
TerribleFloater wrote: В принципе, такую "схему" можно сделать в любой программе, позволяющей разработать запрос "в режиме дизайна". То есть в окно конструктора запроса забрасываем все таблицы, рисуем "связи", делаем SELECT чего угодно — просто чтобы непустой запрос сохранить :-) И вуаля. И вот тогда программу можно отбирать по критериям удобства: в какие форматы графики можно сохранять, например. Или, как в DVD- и BD-Сценаристах, автоматически расставлять таблицы в окне, чтобы красиво смотрелось.
В подобном ПО, а тем более под SQLite, я не силен. потому и сделал в Workbench. И именно поэтому и спрашивал более знающих людей на каком ПО стоит остановиться.

TerribleFloater
Superstar
Posts: 1896
Joined: Thu Feb 28, 2008 4:20 pm

Re: Структура базы данных

Post by TerribleFloater » Tue Sep 22, 2015 5:49 am

ilychuk wrote:Я думал немного другое дело: запросами поочередно проверять наличие в "родительской" таблице наличия всех кодов из "потомка". И если у родителя такого кода нет - выносить инфу в окно пользователю с возмжностью отметить на удаление. Нечто подобное я уже писал, а сейчас переделываю и расширяю функционал своей программы. А там если понадобится - и плагинов можно будет написать
А, в этом частном случае да. Но это и впрямь можно сделать запросами, так что и плугины не обязательно делать. Набор запросов для интерфейса/плугина Джефа получится отнюдь не бесконечный :-) Вывод будет в табличку, правда ;-) Удалять, кстати, вовсе не самое полезное дело. Вполне может оказаться так, что в подчинённой таблице просто сбилась ссылка на таблицу-владельца, и нужно исправлять, а не удалять.
ilychuk wrote:
TerribleFloater wrote:
ilychuk wrote:Кстати, TerribleFloater, А можно вашу "схему данных" в менее сжатом виде, чтоб я смог сравнить с тем, что получилось у меня.

А законченную версию можно будет выложить в общий доступ.
Сделать-то сделаю, но как её предъявить? OpenOffice их в виде картинки не сохраняет за ненадобностью. Я выкладывал скриншот. Понадобится делать скриншоты частей общей картины, потом их склеивать.
Можно без склеивания - просто скриншоты :)
Ладно, сяду как-нибудь поплотнее. Проблема тут именно в расположении таблиц на картинке, чтобы читалось удобно. Пользователям Сценаристов и впрямь повезло.
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

public2009
The leading part candidate
Posts: 104
Joined: Thu Sep 16, 2010 7:43 am

Re: Структура базы данных

Post by public2009 » Tue Sep 22, 2015 6:50 am

TerribleFloater wrote:Но это и впрямь можно сделать запросами, так что и плугины не обязательно делать. Набор запросов для интерфейса/плугина Джефа получится отнюдь не бесконечный :-) Вывод будет в табличку, правда ;-)
Не, пусть будет плагин.
Нажал одну кнопку и получил список всех косяков типа "Целостность [movie.code = edition.movie]: <123> Пираты Карибского моря (1999) = <Null>".
И дальше вдумчиво принимаешь решение - удалить, вставить фейковую запись или игнорировать.

TerribleFloater
Superstar
Posts: 1896
Joined: Thu Feb 28, 2008 4:20 pm

Re: Структура базы данных

Post by TerribleFloater » Tue Sep 22, 2015 8:18 am

public2009 wrote:Не, пусть будет плагин.
Нажал одну кнопку и получил список всех косяков типа "Целостность [movie.code = edition.movie]: <123> Пираты Карибского моря (1999) = <Null>".
И дальше вдумчиво принимаешь решение - удалить, вставить фейковую запись или игнорировать.
В общем да, но Ваш конкретный пример не катит :-) Если я правильно его понял, конечно.
Вполне может оказаться так, что фильм есть, а издания нет. Это нормально. Из фильмографии, из связей, просто скачал на будущее...
Вот когда в изданиях есть ссылка на код фильма, а самого фильма с таким кодом нет — это да, беда с целостностью. Но тогда бы Вы не узнали, что это фильм "Пираты Карибского моря"!

Есть кстати, обратная ситуация, но к целостности БД она отношения не имеет. Если открыть карточку фильма и сохранить её, то программа автоматом создаст для этого фильма издание (если его не было). Вот такие пустые издания тоже можно рассматривать как мусор.
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

Post Reply