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

Дополнительные плагины к программе
TerribleFloater
Superstar
Posts: 1889
Joined: Thu Feb 28, 2008 4:20 pm

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

Post by TerribleFloater » Fri Sep 18, 2015 11:27 am

Visio мне в первую очередь и вспомнилась, но там и впрямь рисовать нужно всё, не только связи, но и сами таблицы. Обычно её используют на самом начальном этапе проектирования, а нам тут она и впрямь совершенно не нужна — рисовать ручками каждую таблицу, когда вот она, готовенькая рядышком лежит :-)
Но по любому: я боюсь, что всё, что удастся в конечном итоге получить — это картинку. Неважно, в чём нарисовать эту модель (хороший термин, мне понравился; гораздо точнее, чем "структура") — для нормальной работы во времени (с новыми версиями) и пространстве (с новыми участниками) её нужно будет загрузить снова в программу и привязать к базе данных. Программ таких, даже если они и найдутся, явно мало, бесплатных ещё меньше :-( Заставить всех, желающих поучаствовать, работать в одной такой программе вряд ли получится. Да тот же OpenOffice сам по себе достаточно немалый монстр, и ставить его лишь для моделирования БД вряд кто согласится. Я сам-то выбрал его просто потому, что он у меня уже стоял, оставалось лишь прикрутить драйвер и создать подключение :-)
Поэтому именно картинку можно будет публиковать, обсуждать, исправлять, пополнять и т.д.
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

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

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

Post by ilychuk » Fri Sep 18, 2015 12:34 pm

Я думаю что модель базы будет жить своей жизнью, плагины и ПО - своей. На данный момент и ПО и основные плагины для мувинизера создаются в Делфи. Там, на сколько помню нет модуля для графического представления схемы. Потому разработчики и не парились ни с связями, ни с зависимостями.
Просто наличие такой схемы - пусть и в виде картинки заметно поможет новым плагинописателям. В связи с тем, что авторы не организовали на уровне базы отслеживание изменений в зависимых таблицах существует большая вероятность при удалении записи оставить "мусор" в зависимых таблицах. А в итоге ляснет целостность. Поэтому, прежде всего я хочу подобную схему сделать ДЛЯ СЕБЯ, и есть большая вероятность что я какой-то ключ или зависимость упустил...

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

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

Post by TerribleFloater » Fri Sep 18, 2015 3:18 pm

Просто SQLite — низкоуровневый язык :-) Всё отдано на откуп программисту, всё можно сделать изнутри программы. Необязательно описывать внутри базы её структуру. Вот и получается то, что получилось, например с таблицей loans:
Image
Обратите внимание: в поле movie занесено значение 347, таинственным образом совпадающее со значением поля edition. Хотя истинное значение кода фильма, которому принадлежит издание с кодом 347, равно 1307. Где и когда в программном коде был допущен косяк, исправлен ли он — я не знаю, остаётся лишь надеяться на лучшее. Тем не менее, как я уже плакался в другой теме, в моей базе осталось несколько десятков фильмов, у которых таинственным образом займы исчезли вообще.
Насчёт вероятности оставления мусора только поддержу. Практически наверняка он остаётся в таблице браков людей и аналогичной таблице связей фильмов. Это вызвано неудачной их проектировкой, когда один и тот же человек/фильм фигурирует в полях primary и secondary.
ilychuk wrote:прежде всего я хочу подобную схему сделать ДЛЯ СЕБЯ, и есть большая вероятность что я какой-то ключ или зависимость упустил
А вот насчёт этого сильно сомневаюсь. Если Вы упустите какую-то зависимость при создании подобной схемы, то она сама Вам ничем не просигнализирует об ошибке. Только другой человек. Но тогда уже надо делать не ДЛЯ СЕБЯ...
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

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

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

Post by ilychuk » Sat Sep 19, 2015 4:46 am

TerribleFloater wrote:
ilychuk wrote:прежде всего я хочу подобную схему сделать ДЛЯ СЕБЯ, и есть большая вероятность что я какой-то ключ или зависимость упустил
А вот насчёт этого сильно сомневаюсь. Если Вы упустите какую-то зависимость при создании подобной схемы, то она сама Вам ничем не просигнализирует об ошибке. Только другой человек. Но тогда уже надо делать не ДЛЯ СЕБЯ...
Я неверно выразился. Под "упущенной зависимостью" я и имел в виду например удаление персоны из ряда таблиц, а вот в таблице браков забыл удалить связи по secondary_people (не помню как правильно оно звучит), а удалил только по primary

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

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

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

Post by public2009 » Sat Sep 19, 2015 6:05 am

Извините, что влезаю в ваш разговор, но тема с целостностью базы очень интересна для меня.

Мне непонятно от слова совсем - почему в базе отсутствуют foreign keys.
Что это: банальная безграмотность разработчиков или гениальное архитектурное решение?

Ваше мнение?

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

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

Post by TerribleFloater » Sat Sep 19, 2015 6:44 am

А почему они обязаны быть?
Вон в КЛАДР их внесли, так база раздулась на порядок, и на порядок медленнее стала загружаться :-( Теперь в "стандартный" офисный комп со "стандартной" 1С:7.7 "Зарплата и кадры" Москва и область грузятся за полдня вместо получаса :-(
Хочу: чёрные списки, пол людей, пользовательские поля изданий.
Кинопоиск: Image ПлюсКинопоиск: Image

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

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

Post by public2009 » Sat Sep 19, 2015 7:05 am

Мы говорим про Movienizer, а не про неизвестный мне классификатор, правда?
И не про кривой 1с, известный своей неторопливостью и ограниченностью.

Отвечая на вопрос - обязаны, потому что это единственный известный мне надёжный способ обеспечить целостность данных в небитой базе.
Допустимо отсутствие ключей постоянно или временно только для крайне специфических случаев.

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

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

Post by public2009 » Sat Sep 19, 2015 7:07 am

Форины увеличили объём базы в 10 раз?
Вы шутите.

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

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

Post by TerribleFloater » Sat Sep 19, 2015 7:14 am

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

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

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

Post by public2009 » Sat Sep 19, 2015 2:31 pm

SQLite, как бы это помягче сказать, та ещё какашка.
Хуже только MySQL. Те вообще долго обходились даже без транзакций.
Ненуачо.

Post Reply