powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите в проектировании БД
24 сообщений из 24, страница 1 из 1
Помогите в проектировании БД
    #38238107
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как поступить в такой ситуации или вообще есть ли решение. Дело в том что есть база (привязана к определенной прогр.) , но стоить задача переделать интерфейс программы и соответственно немного переделать базу ( добавить несколько дополнительных таблиц и некоторые таблицы изменить и в некоторые добавить доп.поля). Сама база в процессе работы, надо будет в итоге чтобы было совместимость между новой и текущей работающей бд. А вообще старая она не одна, их несколько работают в разных подразделениях , а в новой программе все бд будут в одной и добавиться права доступа каждому подразделению. Если нюансы при такой разработке и может кто-то сталкивался с такой ситуацией? Или все же прийдется создавать БД без привязке к старой, тогда как лучше или безболезненно перенести данные из старых баз в новую? Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38238169
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentik,

1) Спроектировать новую БД и программу.
2) Разработать "программу" переноса из старой БД в новую.

1) Так будет проще разработать новую программу.

2) Некоторое время пользователи все равно будут работать и в старой и новой, соответственно программа переноса должна уметь переносить только новые данные. Кроме того разработав "программу" переноса вы сможете тестировать новую программу на актуальных данных.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38238194
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul2) Некоторое время пользователи все равно будут работать и в старой и
новой, соответственно программа переноса должна уметь переносить только новые данные.
Кроме того разработав "программу" переноса вы сможете тестировать новую программу на
актуальных данных.
Эта "программа переноса" обычно "репликатором" зовётся и на период внедрения её лучше
использовать в режиме master-master, чтобы при неприятностях можно было откатиться на
старую версию не потеряв новых данных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38238499
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentik,

1. Вы уверены что сУБД потянет столько пользователей?
2. Если исходников нету (а как правило такое повсеместно), то чего-то подправить и добавить как-то весьма сомнительно. Соответственно придется писать ТЗ на написание с чистого листа и переноса нужных данных.
3. Вполне возможно что велосипед уже давно изобретен. Вам действительно неподходят типовые решения (та же 1С, аксапта, ...) ? Может стоит озвучить чего хотите, а мы подскажем в какую сторону смотреть?..
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38238525
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentik,

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

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

На практике, получается:
1. убрать весь Г-код. Особенно всяческие SELECT *. Выборки должны тащить ровно то что им необходимо. С этой целью была сделана прокладка в виде базового класса, через которую теперь идут все запросы к таблицам. Множественные разовые и "узкоспециальные" выборки были заменены на генератор выборок, формирующие запросы "как надо"... уже на этом этапе код стал и читаемее и проще и, как ни странно, шустрее. Да, транзакционность обновлений и втыкание проверок.

2. после п.1. можно готовить расширения БД вполне нормально прямо на рабочей версии. Новые поля - все равно ни на что не влияют. Новые таблицы - тем более. К таблицам можно добавить доп. поле - "старые данные" и проставить в нем признак. Оно уже ни на что не повлияет.

3. делается новый код. Фактически, с учетом п.1. - это расширения генератора запросов. по мере продвижения тут, новые поля и новые таблицы начинают заполняться данными большей частью "автоматически".

4. по необходимости - делаем перенос в новые таблицы "старых" данных... признак есть, перенос - не проблема.

5. удаляем всё, что уже не нужно.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38242133
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Множественные разовые и "узкоспециальные" выборки были заменены на генератор выборок, формирующие запросы "как надо"Вы не могли бы подробнее рассказать как реализован этот ad-hoc-generator?..
Это что-то типа qbe?..
Что значит "как надо"?...
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38268758
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сложно описать, что конретно нужно т.к. ТЗ пока нет и не известно когда будет... пример бд есть но как мне обьяснили многое там уже не надо или не используется, часть будет инфы нужно держать как архив для использования в статистике. т.е. практически в каждой таблице нужно что-то убрать, что-то отнести к архивной инфе, а остальные поля использовать в новой базе(вообщем мозги кипят, не могу собраться мыслями :( ).
Есть несколько небольших вопросов: 1) как лучше использовать хранение поля ФИО в одном поле или лучше разбить на три? т.к. мне в дальнейшем надо будет реализовать склонение по падежам и подскажите как это склонение реализовать и хранить в базе?
2) по поводу телефонов лучше поле делать number или все же выбирать varchar?
3) насчет улиц, улицы должны рабиваться по районам, но некоторые улицы находяться в двух районах , а есть такие, что и в трех...

p.s. прошу тапками меня не закидывать... т.к. я новичок в проектировании баз .
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38268794
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Разбить на три
2) varchar
3) решение зависит от обстоятельств
3.1) Считать, что в разных районах разные улицы с совпадающими названиями
3.2) Организовать связь улиц с районами M:N.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38268796
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentik,

1. В одном поле. по ходу сразу и склонение прописывать, т.к. есть весьма нестандартные ситуации.
2. varchar
3. Ну и что? Могу удивить - некоторые еще и повторяются в разных городах. Смотрите КЛАДР как макет.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38270512
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov1) Разбить на три
2) varchar
3) решение зависит от обстоятельств
3.1) Считать, что в разных районах разные улицы с совпадающими названиями
3.2) Организовать связь улиц с районами M:N.

по поводу первого пункта как все же реализовать склонение по падежам ФИО и хранить в базе ?
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38270544
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже за разбить ФИО на части. Слить потом гораздо проще чем снова разбивать.
stydentik по поводу первого пункта как все же реализовать склонение по падежам ФИО и хранить в базе ?Ну сказали же вам - добавляйте еще полей для падежей. Если озабочены размером, то заполняйте их только в странных случаях оставив null (места не занимает) для дефолтных. Пусть оператор при заведении решает.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38270591
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikкак все же реализовать склонение по падежам ФИО и хранить в базе ?

Как отдельную таблицу с масками и соответствующими им склонениями. Брать нужное склонение
с длиннейшей маской. Так автоматически обработаются исключения (если таковые будут).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38296772
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извеняюсь за возможно глупый вопрос (на форуме не нашел) , но все же.
С помощью чего можно проектировать базу, чтобы можно было создавать диаграму (ERD) и потом, чтобы можно было проверить связи между таблицами и др. ?
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38296809
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikС помощью чего можно проектировать базу

Лично я предпочитаю лист бумаги и карандаш.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38296824
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovstydentikС помощью чего можно проектировать базу

Лично я предпочитаю лист бумаги и карандаш.

да я тоже сейчас так делаю, но с увелечением количества таблиц и связей начинаюсь теряться, а на счет проверки связей вообще молчу ( . Может есть какие либо инструменты для проектирование и особенно проверки связей?
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38296905
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikно с увелечением количества таблиц и связей начинаюсь теряться

Увелись формат листа до А0.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297252
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikда я тоже сейчас так делаю, но с увелечением количества таблиц и связей начинаюсь теряться, а на счет проверки связей вообще молчу ( . Может есть какие либо инструменты для проектирование и особенно проверки связей?

Значит вы что-то делаете не то ;-)
Анализировать схему БД >10 таблиц, уже затруднительно.
Поэтому этого не надо делать. ;-)
Разбейте БД на "логические" части.
Старайтесь, что бы в логической части было не больше 10 таблиц.
Именуйте суррогатный ключ везде как <имя таблицы>_ID
Это позволит вам видеть связь м/у "логическими" частями БД, не отрисовывая эту связь на прямую.
Название таблиц должно быть "звучащим". Не бойтесь длинных названий таблиц.
Название полей так же должно быть понятным.
В общем где-то так.

P.S. В том же MS SQL Project manger существует построить диаграмму БД.
Когда таблиц в БД ~100 - это превращается в довольно интересную "паутинку".
В которой разобраться довольно трудно.
А разбить на "логические" части бывает затруднительно, т.к. все в одной схеме и добавление таблицы может привести к задаче "плотной упаковки" :-)
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297423
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgulstydentikда я тоже сейчас так делаю, но с увелечением количества таблиц и связей начинаюсь теряться, а на счет проверки связей вообще молчу ( . Может есть какие либо инструменты для проектирование и особенно проверки связей?

Значит вы что-то делаете не то ;-)
Анализировать схему БД >10 таблиц, уже затруднительно.
Поэтому этого не надо делать. ;-)
Разбейте БД на "логические" части.
Старайтесь, что бы в логической части было не больше 10 таблиц.
Именуйте суррогатный ключ везде как <имя таблицы>_ID
Это позволит вам видеть связь м/у "логическими" частями БД, не отрисовывая эту связь на прямую.
Название таблиц должно быть "звучащим". Не бойтесь длинных названий таблиц.
Название полей так же должно быть понятным.
В общем где-то так.

P.S. В том же MS SQL Project manger существует построить диаграмму БД.
Когда таблиц в БД ~100 - это превращается в довольно интересную "паутинку".
В которой разобраться довольно трудно.
А разбить на "логические" части бывает затруднительно, т.к. все в одной схеме и добавление таблицы может привести к задаче "плотной упаковки" :-)Спасибо за ответ. Попробовал JDeveloper (т.к. база Oracle), проектирование есть, но проверку связей, что-то не нашел.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297599
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikпроверку связей, что-то не нашел.
Чисто из любопытства: а что Вы называете "проверкой связей"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297616
stydentik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovstydentikпроверку связей, что-то не нашел.
Чисто из любопытства: а что Вы называете "проверкой связей"?

Я новичок в бд , тем более в проектировании, поэтому возможно не все понимаю и смотрю на вещи не с той стороны, но я думаю нет же такого, что наставить связей между таблицами и это в любом случае будет правильно и будет работать корректно.
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297653
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikнет же такого, что наставить связей между таблицами и это в любом случае
будет правильно и будет работать корректно.
Слова "правильно" и "корректно" в данном случае не имеют смысла, поскольку правильность
"работы" связей зависит от ТЗ. Если они отвечают требованиям ТЗ, значит построены
правильно. Если не отвечают, значит неправильно. Соответственно ни о какой автоматической
или даже автоматизированной проверке не может идти речи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297710
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stydentikЯ новичок в бд , тем более в проектировании, поэтому возможно не все понимаю и смотрю на вещи не с той стороны, но я думаю нет же такого, что наставить связей между таблицами и это в любом случае будет правильно и будет работать корректно.

Вообще-то это звучит так:
"Я не умею ездить на машине и не знаю ПДД. Посоветуйте мне машину чтобы на ней ездить и чтобы правила соблюдать". :-)

Так вот.
Связи проектируются человеком исходя из задачи.
Правильность/не правильность определяет только человек.

Например можно создать БД, в котором не содержится ни единого внешнего ключа.
Но связи м/у таблицами будут. Они будут на логическом уровне.
И человек знающий данные связи может работать с данной БД.

И наоборот. В БД может быть куча внешних ключей, но ни один их них не будет иметь смысла.

<:o)
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38297864
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulПосоветуйте мне машину чтобы на ней ездить и чтобы правила соблюдать

OFF: гуглемобиль.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите в проектировании БД
    #38298017
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmad_nazgulПосоветуйте мне машину чтобы на ней ездить и чтобы правила соблюдать

OFF: гуглемобиль.


Зачем ждать долго - общественный транспорт или такси ;-)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите в проектировании БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]