[image]

Оптимизация БД

reverse engineering
 
+
-
edit
 

HolyBoy

аксакал

техника компьютеры программирование
Возникла нужда переписать старое барахло, которое
  • Глючит периодически, ломая базу
  • Однопользовательское
  • Работает только с BDE, которое старое как г…но мамонта и которое в случае чего не найдёшь сейчас
  • Не имеет документации
Разумеется, надо помимо прочего обеспечить перенос данных из BDE в другую базу. Если с технической стороны я не вижу проблем, т.к. есть программы, напрямую читающие файл BDE и могущие выгрузить его содержимое в обычный текстовый файл, где уже можно спокойно распарсить всё, расковырять логику — дело куда более трудное.

Пришлось заняться изысканиями. Путём размышлений, сопоставлений того, что вижу в БД и таблиц, получилась схема на рисунке. Если большая часть типов связей понятна и прозрачна, то пара таблиц, а именно Type и Groups меня смутили. Что-то слишком много связей от отдельных полей с них берётся. Что это? Кривое проектирование приложения или же тут всё правильно, а мне надо идти и дому… доучивать типы связей и типы НФ?
Прикреплённые файлы:
 
   
Это сообщение редактировалось 25.05.2009 в 17:14
+
-
edit
 

Mishka

модератор
★★★
HolyBoy> Пришлось заняться изысканиями. Путём размышлений, сопоставлений того, что вижу в БД и таблиц, получилась схема на рисунке. Если большая часть типов связей понятна и прозрачна, то пара таблиц, а именно Type и Groups меня смутили. Что-то слишком много связей от отдельных полей с них берётся. Что это? Кривое проектирование приложения или же тут всё правильно, а мне надо идти и дому… доучивать типы связей и типы НФ?

Группы и типы — это обобщённые таблицы. У тебя в системе все объекты имеют типы. Вот они и собраны в одну таблицу, на которую и ссылаются другие таблицы. А отдельные объекты могут группироваться. Группа описана в соотвествующей таблицы (кстати, сама группа имеет тип, а значит, как объект с типом ссылается на таблицу типов). Хороший дизайн или плохой — сказать трудно. Обычно, если в объектах нет множественного наследования (или его аналога в СУБД мире), то таблица типов так и делается. А вот с группами всё интересней — по текущей схеме каждый объект может принадлежать только одной группе. С такой системой юниховские группы не смоделируешь. Но, если достаточно для работы, то и хорошо. Простые группы хороши тогда, когда надо применять групповые операции (изменить, добавить, сгенерить отчёт и т.д.) или деллегировать некоторые свойства группе, тогда проверка на принадлежность группе будет достаточной (если мы знаем, что группа обладает этим свойством).
   6.06.0
+
-
edit
 

zyxman

опытный

HolyBoy> Что-то слишком много связей от отдельных полей с них берётся. Что это? Кривое проектирование приложения или же тут всё правильно, а мне надо идти и дому… доучивать типы связей и типы НФ?

И ни то и ни другое.
Это, похоже, реальный живой проект, который по мере разработки обвешивали дополнениями но не рефакторили, потому что сложность была в разумных пределах.
Сущностей там конечно явно избыточно, но вероятно проще будет не переделывать все как следует, а просто перенабрать все на современных средствах.
   1.5.0.61.5.0.6
+
-
edit
 

sas1975kr

опытный
★☆
zyxman> Сущностей там конечно явно избыточно, но вероятно проще будет не переделывать все как следует, а просто перенабрать все на современных средствах.

Сынок, работает? Ну значит и не трогай! (с)

Тут тяжело судить без понятия о предметной области избыточно сущностей или нет.

Информации нужно хоть чуть больше.
Ответь хотя бы - это вообще все таблицы и связи, или есть еще?

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

Doc
документы

Cl
клиенты

Usr
Очевидно таблица юзеров

Groups
судя по наличию поля Density и отсутствию связей с Usr совсем не группа доступа. А группировка. Только документов или товаров - не понятно...

Str
Таблица строк документа?
А что в appendix?

Comp
Компы? В однопользовательской системе?
А зачем там Groups? Можно предположить что таким образом решали доступ к документам определенной группы... Но почему не через Usr?
Вобщем хотелось бы уточнить что в этой таблице за значения хранятся...

ed
непонятное предназначение

Type
таблица неких типов.
Только судя по реквизитам и связям это просто дополнительная группировка записей других таблиц.

Rec
Левая какая-то таблица. Непонятно к чему.

Первое предположение -
Type это скорее всего таблица типов документов. И
Groups - это скорее всего просто дополнительная группировка к Type документа.
   3.0.113.0.11
+
-
edit
 

tarasv

аксакал

sas1975kr> Type
sas1975kr> таблица неких типов.
sas1975kr> Только судя по реквизитам и связям это просто дополнительная группировка записей других таблиц.
sas1975kr> Type это скорее всего таблица типов документов. И
sas1975kr> Groups - это скорее всего просто дополнительная группировка к Type документа.

Судя по связям это "энциклопедия юного сурка" (с) куда свалены аттрибуты типа type разных сущностей.
   8.08.0
+
-
edit
 

sas1975kr

опытный
★☆
tarasv> Судя по связям это "энциклопедия юного сурка" (с) куда свалены аттрибуты типа type разных сущностей.

Если ХоллиБой даст чуть больше информации - можно будет говорить определеннее.
Таблица Rec для меня непонятна. Да и что такое Comp в однопользовательской системе :)
   3.0.113.0.11
+
-
edit
 

tarasv

аксакал

sas1975kr> Таблица Rec для меня непонятна. Да и что такое Comp в однопользовательской системе :)

Rec какаято типизированная фигня сбоку от основного бизнеса. Comp - компоненты из которых собраны Str.
Общее впечатление что свалили разные сущности в таблицы Groups и особенно Type а в остальном вполне нормализованная схема.
   8.08.0
Это сообщение редактировалось 24.06.2009 в 21:24

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru