Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / с чего подойти к задачи / 20 сообщений из 20, страница 1 из 1
15.11.2003, 09:07
    #32325315
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
Доброй всем сети...
Проблема:
Есть куча доков методичек и всякого другого хлама.
Написан проект в CASE ERwin пока неполностью.
нужно сделать сервер свалить это все в кучу прикрутить к этому интерфейс
и тд. Срок к Марту - Апрелю
в качестве СУБД был выбран FireBird
в качестве ОС FreeBSD
в качестве web server Apache
в качестве языка для написания CGI пока ничего

Вопрос собственно в следующем
1. какой язык выбрать и где взять поо нему доку при работе с FireBird
2. как с ERwin перелить проект в gdb или пока непозно лудше использовать IBExpert
3. где можно взять примеры подобных систем если они были.
4. приветствуюдтся любые соображения на эту тему и около нее

Заранее всем спасибо.
...
Рейтинг: 0 / 0
16.11.2003, 11:07
    #32325566
Maks_f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
Рассуждение следующее. Видел как исспользуют сервер на основе Lin/Free
а рабочие места и разработка из под Win. Это обеспечивает достаточное удобство разработки, если вы конечно привыкли к Win системам, да и пользователи если быть откровенными лучше знают WIn. Если же система планируется для использования под специфические задачи под U* то тогда ваш выбор вполне правильный и продуманный.
...
Рейтинг: 0 / 0
16.11.2003, 13:55
    #32325631
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
1 - что знаете. наш веб программер на перле делал скрипты. с firebirdом идут примеры на си. достаточно просто пишется клиент на яве, причем переносимость серверной части на винды (а вдруг?) пройдет без проблем. с пхп тоже люди работают.

2/3 - к сожалению, помочь не смогу.

4 - ibase.ru
...
Рейтинг: 0 / 0
16.11.2003, 17:36
    #32325688
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
то Maks_f - да сервер точно под фри, клиент точно под вин доступ по локалке
или через нет. это просто работа на шару для вуза просто куча
людей всегда сталкивется с тем что неможет достать конкретный
документ в конкретное время отсюда возникло мнение создать
систему доступа к данным как в нутри института так и за его
пределами так как инет проктически халявный отсюда и желание
поучится и поиметь с этого опыт и строчку в резюме.
...
Рейтинг: 0 / 0
16.11.2003, 17:42
    #32325690
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
то alex_k
сп за ссылку ;)

а можно у него стрельнуть реальный примерчик под перл и/или жаву, совсем простенький чтобы только принцип понять... заранее спасибо.
...
Рейтинг: 0 / 0
16.11.2003, 18:06
    #32325695
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
для тех у кого такиеже проблемы.
пример на PHP

http://www.php.net/manual/en/ref.ibase.php

сначала описание функций а потом в самом низу 2 примера. все просто и внятно изложено.
...
Рейтинг: 0 / 0
16.11.2003, 18:46
    #32325705
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
если нужно я в понедельник спрошу.
...
Рейтинг: 0 / 0
16.11.2003, 19:05
    #32325709
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
оч нужно заране сп...
...
Рейтинг: 0 / 0
17.11.2003, 05:56
    #32325776
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
2. - где взять примеры - не знаю, но базу проектирую под ErWin-ом.
Поставь BDE для Interbase6, там есть примочки: DataPump и ODBC.
Настраиваешь ODBC, ну и все...
...
Рейтинг: 0 / 0
17.11.2003, 09:24
    #32325832
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
1. Пробовал, давно, Perl + Interbase 5.6, все было нормально. С сайта скачай IBPerl там есть пара примеров, но очень простые (левые)
2. ErWin хорошая штука, вот только проблемы могут возникнуть! Лучше не цепляться через ODBC, а сделать Preview и скопировать текст в файл, потом проверить все что там написано (например ссылочную целлостность ErWin делает триггерами, не всегда удобно да и лишний запрос select count(*) from - не красиво) и в IBExpert'е запустить на выполнение.
3. 4. Соображений много, если есть вопросы. А вот с примерами ... за готовое решение обычно денег просят, а так ... мож и помогут (к сожалению мои опытные исходники затерялись во времени).

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
17.11.2003, 12:20
    #32326045
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
то Denis Uskov
я правильно понял что просмотреть SQL код и сохранить с расширением .sql
а где там обработать... честно не работал я IBExpert

вопросы всегда есть например.
5. как правильно сделать идентификацию пользователя при работе с бд через веб при каждом запросе спрашивать пароль или положить при первом запросе в кукис.
6. как правильно сделать логирование у бд те кто что куда записал ....
(помоему там чтото есть встроенное, но точно незнаю, усиленно читаю литературку но этого мало, если подскажеш куда копать буду оч рад)
...
Рейтинг: 0 / 0
17.11.2003, 14:07
    #32326219
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
Шлю по мылу пример проекта ErWin, который без проблем генерит SQL-скрипт для FireBird. Делаешь "Generate Report", а потом файл используешь, как нравитсяю. ErWin 3.5.2 (с 4-й версии были какие-то проблемы с макросами)
...
Рейтинг: 0 / 0
17.11.2003, 14:23
    #32326248
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
>Малиновский Владимир

И мне на мыло пож-та(только < 1 Mb), хочется посмотреть как раелизованы некоторые вещи, да и поучиться не мешало бы.
Насколько я помню в ErWin НЕТ типа поля Дата+Время только Date. Для IB < 6, Date был как раз самое то, но в 6 и в FireBird Date это только Дата, а вот TimeStamp все вместе. И опять же про ссылочную целлостность?
В общем интересно.

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
17.11.2003, 14:38
    #32326279
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
2 Денис Усков
Да пожалуйста. 385 килобайт

Если каких-то типов не подддерживается автоматически, то в Domain Dictionary Editor - в закладке InterBase прямо ручками набираем TimeStamp или чтотам Вам нравится.

Со ссылочной целосностью - то же, выбор варинтов огромнейший. Я выбрал с помощью триггеров. Может, несколько громоздко, зато легко реализуется нестандартное поведение (типа связь много <-> много). Или при контроле ссылочной целостности - чтобы эксцепшны по-русски ругались.
Да, в высланном проекте особый интерес представляет на Logical уровне. (реализация деревьев, например).
...
Рейтинг: 0 / 0
17.11.2003, 17:20
    #32326607
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
красиво только на логическом уровне проблема немогу нормально отобразить все через закорючки а вот на физ уровне все ок английским по белому :)
сп за файлик... :)
только у меня 4 :(
...
Рейтинг: 0 / 0
17.11.2003, 18:40
    #32326721
Sclif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
Если кракозяблики пишутся, попробуй nls в реестре подправить.
...
Рейтинг: 0 / 0
18.11.2003, 07:41
    #32326958
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
>Малиновский Владимир
Да уж, давно не видел таких проектов(это не критика) :)
Но все же:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TRIGGER tU_Bill FOR Bill AFTER UPDATE AS
DECLARE VARIABLE numrows INTEGER;
BEGIN
  ...
  IF (OLD.bill_id <> NEW.bill_id) THEN
  BEGIN
    select count(*)
      from Billing
      where
        Billing.bill_id = OLD.bill_id into numrows;
    IF (numrows >  0 ) THEN
    BEGIN
      EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
    END
  END
  ...


Если таблица "Billing" большая и часто меняющаяся, то select count(*) работает достаточно долго. Если уж триггером, то лучше

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TRIGGER tU_Bill FOR Bill AFTER UPDATE AS
DECLARE VARIABLE numrows INTEGER;
BEGIN
  ...
  IF (OLD.bill_id <> NEW.bill_id) THEN
  BEGIN
    IF (EXIST(select * from Billing where Billing.bill_id = OLD.bill_id)) THEN
    BEGIN
      EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
    END
  END
  ...


Вот пример по ограничениям:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE BILL (
    BILL_ID INTEGER NOT NULL, ...);

CREATE TABLE BILLING (
    BILLING_ID INTEGER NOT NULL,
    BILL_ID INTEGER, ...);

ALTER TABLE BILLING ADD CONSTRAINT FK_BILL FOREIGN KEY (BILL_ID) REFERENCES BILL (BILL_ID) ON UPDATE CASCADE;


ON UPDATE CASCADE - взято для наглядности, т.к. RESTRICT - это по умолчанию и не пишется.
Но в целом проект очень даже.
Спасибо.

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
18.11.2003, 17:51
    #32327827
toshik-star
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
ура разобрался куда запихать .sql скрипт и как его исполнить оч удобно...

но все еще остались нерешенные вопросы 5.6.

7. немогу понят как можно отобразить View (посути этож запрос)
:)
...
Рейтинг: 0 / 0
19.11.2003, 08:24
    #32328134
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
5. Смотря как надо по задаче.
Если с 1 компа только 1 чел. то можно и в кукис, но в большинстве случаев это не так! Можно положить аутентификацию в БД(имя, IP, UID, дата+время последнего соединения) и проверять на корректность(в урле UID, а время + х < текущего). Но вариантов много!

6. Можно создавать каждого юзера и он(юзер) коннектится со своими правами, а в таблице истории(кто, когда и т.д.) >=2 поля (Update_Date TimeStamp default CurrentTime, UserName Varchar() default CurrentUser) переменная по default может меняться в зависимости от версии сервера.
Можно держать табличку с юзерами, а коннектиться с SYSDBA. Проверка на наличие юзера и корректность сессии(из ответа №5), и UserName вместо default брать из этой таблички.
В общем, фантазия безгранична.

7. Поконкретнее, вопрос не понят :(

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
19.11.2003, 11:24
    #32328334
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
с чего подойти к задачи
Хлопцы, нативные ограничения работают так же, но через системные триггеры. На высланном проекте (с некоторыми изменениями) работают несколько фирм, несколько десятков одновременных коннектов на самых разных клиентских машинах. Базы относительно большие - под несколько сотен мегабайт. Интерактивно - никаких задержек не отмечено. Если возникнут, тут же заменю ненавистные Вам
select count(*)
from Billing
where
Billing.bill_id = OLD.bill_id into numrows;


на что-то более приятное.

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


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