Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
3-1141279957
Рафик
2006-03-02 09:12
2006.04.23
Сортировка


1-1142567293
tigra
2006-03-17 06:48
2006.04.23
Работа с реестром


2-1144665608
dima_kds
2006-04-10 14:40
2006.04.23
Использование SQLConnection


3-1140707383
Serg1981
2006-02-23 18:09
2006.04.23
Заполнение Мемо-поля


15-1143632990
Nsk3D
2006-03-29 15:49
2006.04.23
Wap в массы