Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.5 MB
Время: 0.013 c
2-1143984013
bogdan
2006-04-02 17:20
2006.04.23
задача на перебор


1-1142933027
Darvin
2006-03-21 12:23
2006.04.23
Ошибка "Canvas does not allow drawing"


2-1144416392
Inna_Z
2006-04-07 17:26
2006.04.23
Проблема с AutoSize


15-1143896469
_duk
2006-04-01 17:01
2006.04.23
Защита


15-1142369251
Kerk
2006-03-14 23:47
2006.04.23
Поиск по статьям о программировании





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский