Форум: "Базы";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизDB Updater Найти похожие ветки
← →
Silver... © (2006-03-01 19:11) [0]Часто бивает так:
Пишешь прогу... Тут приходится изменять структуру БД... не вопрос меняем, а как быть с БД у клиента. Не будет же он мне ее висылать (размер, конфиденциальность, ...)
Вопрос:
Есть какая-нить утилита типа унив. "DB Updater" которая облегчит мне жизнь?
← →
Brenagwynn (2006-03-01 19:14) [1]Смотря, что за БД. Если SQL-сервер какой-нить, тогда
ALTER блаблабла
спасет отца русской демократии.
← →
Silver... © (2006-03-01 20:35) [2]
> ALTER
ну это я и сам знаю ... даже нашел и попробовал много СКЛ инструкций в тему. Но всё равно не всё + МОЖ УЖЕ ЕСТЬ ЧЕГО ГОТОВОЕ и не изобретать велосипед.
Типа Утилита которой даеши:
1. БД и всё для подключения к ней
2. в виз. моде показываешь старое значение Table/Field(Column) - Если есть переименовывает, если нету - добовляет
3. Выполняет SQL запрос
...
из всего этого делает файлик-сценарий который посылается клиенту для Реструктуризации ЕГО базы
Кстати это может быть оформлено ввиде DB-Aware компонента
Вопрос был "есть ГОТОВОЕ?" (не люблю я велосипеды изобретать - это на крайнак тока)
← →
Desdechado © (2006-03-01 21:01) [3]Готовая - это ведение системы версий и скрипты перехода между ними.
Никаких "есть переименовывает, если нету - добовляет", ибо бред.
Ведь таблицы - это не толпа в автобусе, а нечто посерьезнее. Они взаимосвязаны (PK-FK), есть триггеры, есть, в конце концов данные клиента, которые могут при изменении структуры гавкнуться.
Поэтому относиться надо серьезно.
← →
Silver... © (2006-03-01 22:02) [4]
> относиться надо серьезно
А я о чем? Ведь само то как будет меняться структура делает Программер а не кто-нибудь а значит он знает что и как менять надо (ведь к примеру переименовывание Таблиц, полей ведет и к соответствующим изменениям в самой программе)
В принципе я имею ввиду ИНСТРУМЕНТ для самого программера а не для юзера. ПРОГРАММЕР даст порядок (сценарии) деиствий, чтоб привести структуру БД клиента к нужной структуре
Пример:
Table1[ID;A;B;C] -> Table1[ID1;A]; Table2[ID2;ID1;B;C]
1. CREATE TABLE Table_1 ... <или> INSERT INTO
2. CREATE TABLE Table2 ... <или> INSERT INTO
3. SQL: INSERT... - Table_1
4. SQL: INSERT... - Table2
5. DROP Table1
6. Изменить имя Table_1 в Table1 - Должно быть тоже ALTER TABLE (для Access не выходит)
... пока структура не будет изменена и данные не утеряны
- конечно же ЮЗЕР будет тот который сделает правельную связь Table2.ID1-Table1.ID1. В данном примере можно предположить что Table2 будет содержать все данные из первоначальной Table1 (это уже по случаю)
В любом случае НАДО МЕНЯТЬ СТРУКТУРУ БД не испортив остальное и максимально сохранить первоначальные данные и их логику... Это нужно самому клиенту (он ведь изменил первоначальные требования например типа "хочу сгрупировать данные в Table1"). Но согласитесь не могу просить клиента зайди туда сделаи то потом напиши такой запрос ...
Где же здесь Бред?
← →
Desdechado © (2006-03-01 22:23) [5]Бред, еще раз повторюсь, в походе "есть переименовывает, если нету - добовляет".
Просто у БД должно быть некоторое фиксированное состояние после наката очередной порции изменений. И перевод из состояния в состояние - скриптом, который запускается не клиентом, а твоей программой.
А если будет "хочу сгрупировать данные в Table1", то это говорит о том, что клиент хочет разрабатывать и изменять структуру БД сам. Если он такой грамотный, нафига ему программер нужен?
Когда клиент лезет своими ручками в БД, надо бить по этим шаловливым ручкам.
Посему не может быть такого состояния, когда "то ли есть таблица, то ли ее нет - скрипт универсальный, доведет до ума". Бред. Имхо.
← →
Silver... © (2006-03-01 22:31) [6]ошибочка
> 1. CREATE TABLE Table_1 ... <или> INSERT INTO
> 2. CREATE TABLE Table2 ... <или> INSERT INTO
так лучше:
1. CREATE TABLE Table_1 ... <или> SELECT ... INTO Table_1 FROM Table1
2. CREATE TABLE Table2 ... <или> SELECT ... INTO Table2 FROM Table1
← →
Silver... © (2006-03-01 23:02) [7]упс, видимо мы друг друга не поняли
я именно это и имел ввиду [я делаю Программу которую запустит моя программа (или клиент ручками) для реструктуризации БД ктоб новая версия работала корректно]
- я ему высылаю новую версию Программы (не буду я внутри нее вшивать реструктуризацию БД), делаю доп. программу
проблеммы в том что например в Акчсс скриптов нету
а я спрашивал если есть некий инструмент который облегчит мой труд (по написанюи кучи SQL команд) Который и будет генерировать SQL команды изходя из МОИХ требований.
Я это вижу примерно так:
----------------------------------
| Действие |Объект|Имя
----------------------------------
| Dobavit"i |Field | Table_1.ID1
| Dobavit"i |Field | Table_1.B
| Dobavit"i |Field | Table_1.C
----------------------------------
ЭТОТ ИНСТРУМЕНТ ТОКА У МЕНЯ - клиент получит ФАЙЛИК со сценарием для реструктуризации (скажем этим сценариием воспользуетсуа моя прога в случае если БД старой структуры)
Резул"тат:
-Так как "tABLE_1" нету "ИНСТРУМЕНТ" сгенерит
1. CREATE TABLE Table1 (ID1 Int, B CHAR(50), C CHAR(50))
-еслиб было "Table_1(ID1)"
1. ALTER TABLE Table_1 ADD B CHAR(50), C CHAR(50)
или
1. ALTER TABLE Table_1 ADD B CHAR(50)
2. ALTER TABLE Table_1 ADD C CHAR(50)
← →
Silver... © (2006-03-01 23:21) [8]Вобщем вопрос о существовании готового инструмента появился тока потому что не знаю как делается пункты 1..17 через SQL
(SUBD - MS Access)
+ Create Database
+ Create Table
+ Delete Table
+ Add Field
+ Delete Field
1- Modify Table Name
2- Modify Table Description
3- Create Query
4- Delete Query
5- Modify Query Command
6- Modify Query Name
7- Modify Query Description
8- Modify Field Name
9- Modify Field Type
10- Modify Field Description
11- Modify Field Properties
12- create Group
13- Delete Group
14- Modify Group Permissions
15- Create User
16- Delete User
17- Modify User Permissions
ЗЫ. я не против писать SQL команды и виполнить их у клиента - но не знаю всех "нужных" :(
← →
_Le_ (2006-03-02 08:50) [9]может лучше sql тогда поучить (не сочтите за грубость).
насколько мне известно, то если меняется структура БД, то все можно sql"ем написать. А чтобы данные не портить, нужно думать.
← →
msguns © (2006-03-02 12:24) [10]Для подобных областей применения, где структура БД может постоянно изменяться, предпочтительнее вместо реляционной модели использовать объектную, когда в БД лежат не "таблицы" и "записи", а "объекты", описанные в специальных таблицах. Кроме того, в БД хранятся также и элементы интерфейса, и локальные настройки, и даже алгоритмы обработки.
Переход от одной "версии" к другой выполняется простым скриптом, меняющим "описательные" таблицы прямо на компе клиента без. Запуск скрипта выполняется юзером с помощью предусмотренной для такого случая "кнопки".
← →
msguns © (2006-03-02 12:36) [11]Вдогонку..
Не все меряется мегабайтами и секундами. Иногда "картинки" просто необходимо прятать в БД. Согласитесь, нелепо выглядела бы пропускная система на каком-нибудь режимном предприятии, если бы фото сотрудников лежали в виде файлов в каком-нибудь каталоге. Простейшая ошибка при копировании файлов даже программистом приведет к весьма плачевным последствиям для "пострадавшего" ;)
Кроме того, существует еще множество БД, где хранятся "паззловые" или иерархически выстроенные картинки (картография, инженерные коммуникации, чертежи и т.д.)
← →
Silver... © (2006-03-03 14:36) [12]Так и думал что не поняли. По пунктам:
1........
> может лучше sql тогда поучить (не сочтите за грубость).
SQL я знаю не всё конечно (но кто тут всё знает?). В данном случае мне нужно для Акчсс. Некоторые вещи которые я описал как не умею (в часности переименовывание полей и таблиц) я пробовал на SyBase все прошло на Access-е нет. Вот и спросил а не знает ли кто нибудь как.
2.......
> где структура БД может постоянно изменяться
Да не меняется постоянно (иногда, у кого не бывает?). А когда случается что надо поменять вот тут не есть гуд просить юзверя - залезь в базу и сделай...
Юзер не программер и может что-нить напортить
3........
Так и думал посылать юзеру нужные SQL команды для изменения структуры
потом из моеи проги их выполнить (после проверки, конечно).
Спросил про инструменты потому что уже куча есть готового, авось и это ктонить уже рялизовал (проверка версии, хранение, виполнение команд; и что я больше ожидал: Удобное для меня как программера инструмент генератии SQL команд)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c