powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проблема со связями
25 сообщений из 181, страница 6 из 8
Проблема со связями
    #38520511
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Хотя эту фразу тоже можно понять приблизительно, в виду нечеткости понятия "Понятность".

Вам сам процесс написания слов доставляет удовольствие? Логические модели - пох, вам нужно непременно прочесть об этом в книжке какого-нибудь е^лана. Ну-ну. Более не задерживаю.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520515
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivФормы и запросы можно писать и на акцесе. На нём нельзя БД держать.Вас тоже надо попросить предоставить "критерий"? :)
Предлагаете каждому пользователю на машине разворачивать Oracle/MSSQL/DB2/etc (в экспресс-версиях), чтобы пользователь мог хранить десяток таблиц на пару тысяч записей в каждой?
MasterZivНа самом деле я ослабил немного, запросы на нём тоже НЕЛЬЗЯ писать, потому что усрёшься заставлять его понимать нормальный SQL, а не его безумные фантазии на этот счёт.Эй, да!
А что Вы понимаете под "нормальным SQL"?
Вот текст запроса, "нарисованного" непосредственно access'овским дизайнером:
Код: sql
1.
2.
3.
SELECT TOP 10 a.*, b.*
FROM tbl1 AS a INNER JOIN tbl2 AS b ON a.Id = b.Id
ORDER BY a.Id;

И что в нем "ненормального"? На MSSQL пробем с синтаксисом не будет, и запрос выполнится без всяких танцев с бубном (если таблицы с подходящими именами и структурой найдутся). В большинстве случаев сработает и в обратном направлении...
...
Рейтинг: 0 / 0
Проблема со связями
    #38520533
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Вам сам процесс написания слов доставляет удовольствие?

Логические модели - пох, вам нужно непременно прочесть об этом в книжке какого-нибудь е^лана. Ну-ну.

Ваши "Логические модели " мне, безусловно, - "пох" в плане: "Аксцеес не СУБД". Тут было бы опрометчиво обойтись без источников поавторитетнее типа "книжки какого-нибудь е^лана" вроде Коннолли.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520552
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм,MasterZivФормы и запросы можно писать и на акцесе. На нём нельзя БД держать.
На самом деле я ослабил немного, запросы на нём тоже НЕЛЬЗЯ писать, потому что усрёшься заставлять его понимать нормальный SQL, а не его безумные фантазии на этот счёт.
Так, предложите эту файл-серверную альтернативу Акцессу, - завтра же "организованно", стройной колоной на неё перейдём! :)
Есть у вас такая на примете?

Есть.

FoxPro.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520558
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вас тоже надо попросить предоставить "критерий"? :)

Попроси. Предоставлю.


Предлагаете каждому пользователю на машине разворачивать Oracle/MSSQL/DB2/etc (в экспресс-версиях), чтобы пользователь мог хранить десяток таблиц на пару тысяч записей в каждой?

Я не рекомендовал ставить Oracle/MSSQL/DB2.
Есть много маленьких и хороших СУБД. Но, кстати, MSSQL Express не такой уж и плохой вариант для Win-пользователей.


А что Вы понимаете под "нормальным SQL"?

Почитай на эту тему стандарт ANSI SQL.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520569
гм,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivгм,пропущено...

Так, предложите эту файл-серверную альтернативу Акцессу, - завтра же "организованно", стройной колоной на неё перейдём! :)
Есть у вас такая на примете?

Есть.

FoxPro.
я не специально )
...
Рейтинг: 0 / 0
Проблема со связями
    #38520579
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм,, если дружными рядами перейдете на Лису, то, может быть, появится возможность поучаствовать в каких-то акциях или демострациях, направленных на продолжение Майкрософтом поддержки этого продукта. Тут вроде где-то были активисты. Правда много лет назад. Может уже и добились.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520604
гм,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivгм,пропущено...

Так, предложите эту файл-серверную альтернативу Акцессу, - завтра же "организованно", стройной колоной на неё перейдём! :)
Есть у вас такая на примете?

Есть.

FoxPro.
так-ссс, продолжим

МС - закрыла проект FoxPro, и его поддержку декларирует до 2015 года
http://ru.wikipedia.org/wiki/Visual_FoxPro Разработка продукта MS прекращена с выходом SP2 для версии 9.0, поддержка продукта MS будет осуществляться до 2015 года

теперь, вооружившись этим "знанием", попробуем оценить ваше "предложение"
- вы предлагаете потратить 100500 денег и столько же человеко-часов времени, на разработку приложения,
работа которого НЕ гарантируеться УЖЕ ЧЕРЕЗ 1 год ??!!

даа это ж, вредительство, в "чистом виде" ! :)
предложившего такое "товарища" гнать нужно в шею, "без выходного пособия" !
...
Рейтинг: 0 / 0
Проблема со связями
    #38520638
адп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivгм,пропущено...

Так, предложите эту файл-серверную альтернативу Акцессу, - завтра же "организованно", стройной колоной на неё перейдём! :)
Есть у вас такая на примете?

Есть.

FoxPro.

апекс
предлагалисдуру
...
Рейтинг: 0 / 0
Проблема со связями
    #38520702
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВас тоже надо попросить предоставить "критерий"? :)

Попроси. Предоставлю.
:) Ну, прошу предоставить критерий, на основании которого в Access "нельзя держать БД"...
MasterZivЕсть много маленьких и хороших СУБД.
Пальцев одной руки хватит? :)
Гарантированная их техподдержка в течение ближайших хотя бы пяти лет будет?
MasterZivНо, кстати, MSSQL Express не такой уж и плохой вариант для Win-пользователей.
Вот как раз для простого win-пользователя - плохой...
Кроме хранения и обработки данных он больше ничего не умеет. В отличие от.
MasterZivА что Вы понимаете под "нормальным SQL"?

Почитай на эту тему стандарт ANSI SQL.Не аргумент. :)
Сугубо потому, что, в этом месте так и хочется кому-нибудь предложить прочитать про уровни соответствия этому стандарту SQL-серверов от разных производителей и, соотвественно, про возникшие в результате этого разные, местами очень несовместимые, диалекты языка...

По факту имеем, что, как минимум, у одного SQL-сервера язык запросов в большинстве случаев практически не отличается от языка запросов Access (или наоборот - в зависимости от точки зрения). Соотвественно, аргумент о "кривизне запросов" изначально не соотвествовал действительности.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520761
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу, прошу предоставить критерий, на основании которого в Access "нельзя держать БД"...

Низкая надежность хранения данных. Слетают даже ПК-автосчетчики в таблицах. "Бэкап" делается остановкой системы и копированием файла с данными. Низкая скорость работы при файловом подключении по сети. Отсутствие триггеров. Отсутствие скл функций и процедур. Синтаксис СКЛ очень сильно отличается от стандарта. Несовместимые с реляционными БД новинки - многозначные поля, вложения.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520864
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-ЛавторНу, прошу предоставить критерий, на основании которого в Access "нельзя держать БД"...

Низкая надежность хранения данных.Определяется надежностью дисковой подсистемы, операционной системы и прикладного ПО - к делу не относится: как "выпадают" даже Oracle-сервера и даже в крупных банках за примерами далеко и долго ходить не придется
П-ЛСлетают даже ПК-автосчетчики в таблицах.И файл, небось, "под терабайт"? Ну, так, ССЗБ... :)
П-Л"Бэкап" делается остановкой системы и копированием файла с данными.Во-первых, Вы о какой из "систем"?
Во-вторых, чтобы скопировать файл с данными, не покидая приложение (по кнопочке в оном) можно всего лишь следуя при разработке простому принципу разделения данных и кода, когда приложение (один mdb) - отдельно, данные (другой mdb) - отдельно...
П-ЛНизкая скорость работы при файловом подключении по сети.
Ну, что за люди! Клещами из них определения вытягивать нужно... "Низкая скорость" - это сколько в граммах?
П-ЛОтсутствие триггеров. Отсутствие скл функций и процедур.Напоминаю... Триггеры и процедуры в MySQL начались с 5.0+ (вроде бы 2005-2006). И при этом вспоминаем гораздо более ранний термин LAMP, который определяется как "linux, apache, mysql, php"...
П-ЛСинтаксис СКЛ очень сильно отличается от стандарта.Ни один из существующих SQL-серверов не обеспечивает 100% соответствие стандарту. SQL-запрос для MSSQL в большинстве случаев не выполнится на Oracle. SQL-запрос для Oracle не выполнится на MSSQL... Про "совместимость" триггеров, хранимых процедур и функций только для этой, первой попавшейся "сладкой парочки" - вообще отдельная "песня"...
Прикажете теперь по причине подобных "несоответствий" всем отказаться от баз данных что на Oracle, что на MSSQL?
"Вас не поймут..." (с) :)
П-ЛНесовместимые с реляционными БД новинки - многозначные поля, вложения.Ну, Вам бы с Oracle поработать... varray, nested tables, объектные пользовательские типы данных... Аккурат к вопросу "совместимости", да...
...
Рейтинг: 0 / 0
Проблема со связями
    #38520900
mastakill13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно сказать вчера не заходил на форум, думалось, что тема уже закрыта, читал книгу, интернеты, зашел сегодня посмотреть может еще кто чего написал ...

Из трех предложенных мне вариантов решения моей проблемы по прежнему выбираю вариант, плакать, колоться и продолжать есть кактус,
Вариант найти программиста и купить - отпадает, я не знаю сколько стоит база данных моего уровня, моя зарплата - порядка 23 тыс. руб., база будет рассчитана на коллектив из 6 - 8 врачей, знаю наверняка - никто не будет скидываться, про администрацию я уже писал ранее,
Вариант пытаться подделать под себя готовый проект БД, - для меня это очень сложно.

Еще такой момент - знаю много людей своей профессии довольно близко, знаете ли никто даже из выдающихся не торчит в больнице по 24 в сут, конечно на попе мы ни сидим, но тем не менее кто на лыжах, кто дайвинг, мой зав, получил недавно диплом юриста - наверно ему тоже нечего делать в медицине, а он блин уже 11 лет заведует! В соседнем отделении еще 1 врач с высшим юридическим образованием, недавно пошел на 3 е высшее, ничего, операции, которые не снились еще 20 лет назад делает, слава богу, в 29 лет. Мое ИМХО - кто не старается познать что то новое, тот в итоге и в своей професии (это про себя), оседает, закостеневает и через 10 - 20 лет владеет только старыми методами лечения. Я не скажу, что я страшный фанат компов, но я где то рядом, ПО всегда ставлю сам, иногда есть желание поюзать корел, автокад, проги дизайна, еще чего нибудь, при покупке собираю компы сам, ноуты свои сам чищу, меняю термопасту, недавно вместо дисковода в ноут SSD впихнул, короче немного тяга есть к компьютерному железу и софту, недавно меня поймала мысль, а почему бы и не знать какой нибудь самый простенький язык программирования? Просто для общего развития, и еще что бы из него извлечь пользу для себя, разве это так плохо, в школе например помнится изучали Qbasic, наверно это нужно было. Короче говоря решил пока я с языком отложить, освоить акцесс, а потом VBA. Поверьте мне на слово, от этого я плохим врачом не стану, по крайней мере буду стараться.

По поводу экселя и т. д. - Клавиши F12, ctrl+V и т. д. освоил давно, в документах вордовских у меня везде натыканы поля с выпадающими списками и т. д., но это не все что мне нужно, поэтому и решил создать базу.

MasterZiv спасибо за советы

Вчерашний день не прошел зря, немного разобрался, сейчас по порядку

Мой набор сущностей -
- пациент
- история болезни( ранее госпитализация),
- анамнез болезни( анамнез - это краткая история болезни типа шел такогото числа, упал, очнулся, гипс, доставлен СМП в ЦРБ),
- анамнез жизни
- список жалоб
Сознательно выкинул из базы пока все остальные таблицы, они могут путать, добавлю из позже по аналогии

По поводу ключей, с датой рождения я вчера тоже поправил себя, вычитал в книге, спасибо, Однозначную идентификацию пациента предлагаете сделать составным ключом ФИО + Адрес ? я правильно понял, тогда поле счетчик (ID пациента) удалить?
В таблице история болезни(хранятся основные данные о госпитализации) первичный ключ сделал составным: номер истории, болезни (каждый год нумерация с 1) + дата госпитализации, то есть если больной госпитализирован в эту дату с этим номером истории, то второго такого сочетания не может быть, если конечно писать год.
С жалобами поступлю по вашему совету, разобью их на список, чтобы можно было разные жалобы группировать и установлю отношения один(список жалоб) - ко многим (случай госпитализации), жалобы принадлежат к конкретному случаю госпитализации, как мне видется, потому как в следующую госпитализацию пациент придет с другими жалобами,
Данные о анамнезе жизни разобью на 4 таблицы, привяжу к таблице пациента.
Таблица анамнеза болезни будет содержать 2 вида полей, счетчик - ключ, и текстовое поле - краткая история болезни - она уникальна для каждого случая госпитализации, то есть отношения один к одному с таблицей госпитализации

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

Р.S. Почитал мнения о разных СУБД, единого мнения нет, идут баталии, вопрос может пока я еще в начале пути так сказать может все же выбрать другую СУБД и язык, пока в раздумьях продолжаю осваивать акцесс, по мне потому что он хорошо связан с вордом, за другие СУБД не знаю.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520908
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastakill13,

Ай да ТС, вброс так вброс!

По сабжу.

Совет. Возьми 1С 8.2(3) и сделай свою базу на ней.

Быстро, дальновидно, с умом.

С понтом через три месяца КПК-шное решение на ведре запилишь - будешь с важным видом со смартфоном мимо коек рассекать:"Ну-с, как мы себя сегодня чувствуем?? Ну получше, получше..."


))))))
...
Рейтинг: 0 / 0
Проблема со связями
    #38520913
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastakill13По поводу ключей, с датой рождения я вчера тоже поправил себя, вычитал в книге, спасибо, Однозначную идентификацию пациента предлагаете сделать составным ключом ФИО + Адрес ? я правильно понял, тогда поле счетчик (ID пациента) удалить?

Не забивай себе голову. ФИО + Адрес - ну пипец.

Бери 1С + книжку для нубов - через полдня уже инфу вбивать будеж. )))))
...
Рейтинг: 0 / 0
Проблема со связями
    #38520963
1934
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monochromatiquemastakill13По поводу ключей, с датой рождения я вчера тоже поправил себя, вычитал в книге, спасибо, Однозначную идентификацию пациента предлагаете сделать составным ключом ФИО + Адрес ? я правильно понял, тогда поле счетчик (ID пациента) удалить?

Бери 1С + книжку для нубов - через полдня уже инфу вбивать будеж. )))))
...
Рейтинг: 0 / 0
Проблема со связями
    #38520965
mastakill13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 С - посмотрю, спасибо
Вот моя база, пока правил базу подумалось объединить таблицы анамнез болезни и (история болезни)данные о госпитализации
...
Рейтинг: 0 / 0
Проблема со связями
    #38520992
mastakill13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в схеме данных добавьте таблицу история болезни, связи проставлены, таблица пропала видимо потому что переименовал.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520996
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм,даа это ж, вредительство, в "чистом виде" ! :)
предложившего такое "товарища" гнать нужно в шею, "без выходного пособия" !

Гуест, иди лесом. Не мешай общаться с топикстартером.

Не фокс, так что другое можно взять.
...
Рейтинг: 0 / 0
Проблема со связями
    #38520997
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попроси. Предоставлю.
[/quot]:) Ну, прошу предоставить критерий, на основании которого в Access "нельзя держать БД"...

Потому что это говно, в котором нельзя нормально работать.
Отстань уже.
...
Рейтинг: 0 / 0
Проблема со связями
    #38521007
гм,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivгм,даа это ж, вредительство, в "чистом виде" ! :)
предложившего такое "товарища" гнать нужно в шею, "без выходного пособия" !

Гуест, иди лесом. Не мешай общаться с топикстартером.

Не фокс, так что другое можно взять.
я фигею, дуся, с ваших аргументов ...

Главное, что этот "пассажир", не пропускает ни одного топика, где хоть как-то упоминается Акцесс ...
Всегда, зайдёт, отметиться фразой "Акцесс-г*вно" и на выход.

А как только человеку предложили "конкретизировать" свои притензии к Акс-у, предложить альтернативу, - так начинается - "у меня голова болит", и ваще - "не мешай общаться с топикстартером" :)
... орёл! :)
...
Рейтинг: 0 / 0
Проблема со связями
    #38521017
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastakill13,

Хорошо, что Вы ещё в теме.

Посмотрите на скрипт моей таблицы случая госпитализации. Может чем и поможет. Скрипт с офтальмологической больницы, поэтому в нём встретите описание OD/OS . Можно оставить аналогично для других парных органов - почки, лёгкие, уши, ноги, руки, и т.д.
С точки зрения нормализации БД - их надо выносить в отдельные таблицы, но я сознательно пошёл на денормализацию в этом вопросе.
Поля с индексом Х в начале - внешние ключи. Т.е. в БД существуют таблицы с таким-же названием (без "Х"),
например, наличие поля XPATIENT говорит о том, что есть таблица PATIENT c первичным ключом XPATIENT

CASERECORD - основная таблица, где в основном отражается состояние пациента при госпитализации.
Есть и другие таблицы, где отражается состояние пациента в ходе пребывания в ЛПУ, но думаю, пока Вам этого не нужно.

Обратите внимание на триггеры, там в общих чертах обрисована защита от неправильных данных, многие блоки убрал, логику можно реализовать не только на триггерах, но и в приложении, надеюсь это Вам поможет.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
CREATE GENERATOR GEN_CASERECORD;
CREATE GENERATOR GEN_NOM_CASERECORD;

CREATE TABLE CASERECORD (
    XCASERECORD     LONGINT NOT NULL /* LONGINT = INTEGER */,
    XBRANCH         DX /* DX = INTEGER NOT NULL */,
    XNURSE          DINTLONG /* DINTLONG = INTEGER */,
    XPATIENT        DX /* DX = INTEGER NOT NULL */,
    XCITY           DX /* DX = INTEGER NOT NULL */,
    XSOCIUM         DX /* DX = INTEGER NOT NULL */,
    XLPU            DINTLONG /* DINTLONG = INTEGER */,
    XASSUREROMS     DINTLONG /* DINTLONG = INTEGER */,
    XASSURERDMS     DINTLONG /* DINTLONG = INTEGER */,
    XCURATOR        DINTLONG /* DINTLONG = INTEGER */,
    XSURGEON        DINTLONG /* DINTLONG = INTEGER */,
    XTRANSPORT      DINTSHORT DEFAULT 1 /* DINTSHORT = SMALLINT */,
    XDIET           DINTLONG /* DINTLONG = INTEGER */,
    XCAUSE          SMALLINT DEFAULT 1,
    XTIMEIN         DINTSHORT /* DINTSHORT = SMALLINT */,
    XMANNAME        DINTLONG /* DINTLONG = INTEGER */,
    XMANPATRO       DINTLONG /* DINTLONG = INTEGER */,
    XFINANCE        DX /* DX = INTEGER NOT NULL */,
    XOMS_RESULT     DX DEFAULT 1 /* DX = INTEGER NOT NULL */,
    XDISCHARGE      DINTSHORT DEFAULT 1 /* DINTSHORT = SMALLINT */,
    XLPUOMS         DINTLONG /* DINTLONG = INTEGER */,
    FAMILY          STRING20 NOT NULL /* STRING20 = VARCHAR(20) */,
    SEX             BOOLEAN /* BOOLEAN = SMALLINT DEFAULT 0 CHECK(VALUE BETWEEN 0 AND 1) */,
    POSTINDEX       STRING6 /* STRING6 = VARCHAR(6) */,
    STREET          STRING30 /* STRING30 = VARCHAR(30) */,
    HOUSE           STRING6 /* STRING6 = VARCHAR(6) */,
    FLAT            STRING4 /* STRING4 = VARCHAR(4) */,
    WORKING         STRING150 /* STRING150 = VARCHAR(150) */,
    AGE             STRING6 /* STRING6 = VARCHAR(6) */,
    NOM             DX /* DX = INTEGER NOT NULL */,
    TS              TIMESTAMP,
    STATUS          DSHORTINT /* DSHORTINT = SMALLINT DEFAULT 0 NOT NULL */,
    ANAMNEZCL       STRING4 /* STRING4 = VARCHAR(4) */,
    AD              STRING7 /* STRING7 = VARCHAR(7) */,
    WEIGHT          DMASS /* DMASS = NUMERIC(10,3) DEFAULT 0 */,
    TEMPERATURE     DMASS /* DMASS = NUMERIC(10,3) DEFAULT 0 */,
    CASUAL          BOOLEAN /* BOOLEAN = SMALLINT DEFAULT 0 CHECK(VALUE BETWEEN 0 AND 1) */,
    DATEOMSBEGIN    DDATE /* DDATE = DATE DEFAULT 'NOW' */,
    DATEOMS         DDATE /* DDATE = DATE DEFAULT 'NOW' */,
    DATEDMS         DDATE /* DDATE = DATE DEFAULT 'NOW' */,
    CONTRACTOMS     STRING25 /* STRING25 = VARCHAR(25) */,
    CONTRACTDMS     STRING25 /* STRING25 = VARCHAR(25) */,
    POLISOMSSER     STRING10 /* STRING10 = VARCHAR(10) */,
    POLISOMS        STRING20 /* STRING20 = VARCHAR(20) */,
    POLISDMS        STRING20 /* STRING20 = VARCHAR(20) */,
    WARRANTOMS      STRING10 /* STRING10 = VARCHAR(10) */,
    WARRANTDMS      STRING25 /* STRING25 = VARCHAR(25) */,
    ARRCAUSE        SMALLINT [1:12],
    ARRINVALID      SMALLINT [1:10],
    ARRPOLL         SMALLINT [1:12],
    DIAGNOSIS0      STRING255 /* STRING255 = VARCHAR(255) */,
    DIAGNOSIS1      STRING255 /* STRING255 = VARCHAR(255) */,
    DATEBORN        DATE,
    KLADR           STRING13 /* STRING13 = VARCHAR(13) */,
    TSOUT           TIMESTAMP,
    HEIGHT          DINTSHORT /* DINTSHORT = SMALLINT */,
    BOX             STRING4 /* STRING4 = VARCHAR(4) */,
    KEYGRACE        STRING4 /* STRING4 = VARCHAR(4) */,
    KEYSOCIUM       STRING4 /* STRING4 = VARCHAR(4) */,
    HEPATITYEAR     DINTSHORT /* DINTSHORT = SMALLINT */,
    PRIM            DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    BAD             BOOLEAN /* BOOLEAN = SMALLINT DEFAULT 0 CHECK(VALUE BETWEEN 0 AND 1) */,
    MOAN            DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    ANAMNES         DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    ANAMNESLIFE     DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    STINGOD         STRING12 /* STRING12 = VARCHAR(12) */,
    STINGOS         STRING12 /* STRING12 = VARCHAR(12) */,
    VGDOD           STRING12 /* STRING12 = VARCHAR(12) */,
    VGDOS           STRING12 /* STRING12 = VARCHAR(12) */,
    MADE            DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    DIAGNOSISOUT    DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    STINGODOUT      STRING12 /* STRING12 = VARCHAR(12) */,
    STINGOSOUT      STRING12 /* STRING12 = VARCHAR(12) */,
    PLUG            DBLOB /* DBLOB = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    CLS             BOOLEAN /* BOOLEAN = SMALLINT DEFAULT 0 CHECK(VALUE BETWEEN 0 AND 1) */,
    CODEMKB         STRING9 NOT NULL /* STRING9 = VARCHAR(9) */,
    EYE             STRING3 /* STRING3 = VARCHAR(3) */,
    RESULTOD        DSHORTINT /* DSHORTINT = SMALLINT DEFAULT 0 NOT NULL */,
    RESULTOS        DSHORTINT /* DSHORTINT = SMALLINT DEFAULT 0 NOT NULL */,
    DAYNOW          COMPUTED BY (cast('NOW' as DATE)-cast(TS as DATE)),
    CO1             DINTSHORT /* DINTSHORT = SMALLINT */,
    USR             STRING6 DEFAULT current_user /* STRING6 = VARCHAR(6) */,
    SMT             STRING5 /* STRING5 = VARCHAR(5) */,
    DAYS            DSHORTINT /* DSHORTINT = SMALLINT DEFAULT 0 NOT NULL */,
    OMS_DATE        DATE,
    DATEOUTBRANCH   TIMESTAMP,
    SICKLIST        DINTLONG /* DINTLONG = INTEGER */
);




/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE CASERECORD ADD CONSTRAINT PK_CASERECORD PRIMARY KEY (XCASERECORD);


/******************************************************************************/
/***                              Foreign Keys                              ***/
/******************************************************************************/

ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_BRANCH FOREIGN KEY (XBRANCH) REFERENCES SHOP (XSHOP);
ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_CITY FOREIGN KEY (XCITY) REFERENCES CITY (XCITY);
ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_CURATOR FOREIGN KEY (XCURATOR) REFERENCES MAN (XMAN);
ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_FINANCE FOREIGN KEY (XFINANCE) REFERENCES FINANCE (XFINANCE);
ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_OMSRESULT FOREIGN KEY (XOMS_RESULT) REFERENCES OMS_RESULT (XOMS_RESULT);
ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_PATIENT FOREIGN KEY (XPATIENT) REFERENCES PATIENT (XPATIENT);
ALTER TABLE CASERECORD ADD CONSTRAINT FK_CASERECORD_SURGEON FOREIGN KEY (XSURGEON) REFERENCES MAN (XMAN);


/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/


SET TERM ^ ;



/******************************************************************************/
/***                          Triggers for tables                           ***/
/******************************************************************************/



/* Trigger: CASERECORD_BIUD */
CREATE OR ALTER TRIGGER CASERECORD_BIUD FOR CASERECORD
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
as
declare variable i integer;
declare variable supervisor integer;
begin
 if (deleting) then
  begin
    delete from oms_err e where e.xcaserecord=new.xcaserecord;
    delete from oms_summ o where o.xcaserecord=new.xcaserecord;
    delete from intensive i where i.xcaserecord=new.xcaserecord;
    delete from diagnosis d where d.xcaserecord=new.xcaserecord;
    delete from revisionoft d where d.xcaserecord=new.xcaserecord;
    delete from revisioninf d where d.xcaserecord=new.xcaserecord;
  end
  else begin
         if (trim(new.family)='' or (new.family is null)) then exception e_exception_1('Не указана фамилия пациента');
       end

 if (inserting) then
  begin
     new.ts = 'NOW';
     if ((new.dateborn is null) or (new.dateborn>extractdate(new.ts)) or ((extractyear(new.dateborn)<(extractyear(new.ts))-120))) then
       exception e_exception_1('Дата рождения пациента введена с ошибкой!');

     if (new.XCaseRecord is null) then  new.XCaseRecord = gen_id(gen_caserecord,1);
     if (new.nom is null) then new.nom = gen_id(gen_nom_caserecord,1);
                          else if (new.nom<>GEN_ID(gen_nom_caserecord,0)) then
                                             i=GEN_ID(gen_nom_caserecord,new.nom-GEN_ID(gen_nom_caserecord,0));
     if (new.XDiet is null) then  new.XDiet = 8;  -- 15 диета
     if (new.XFinance is null) then  new.XFinance = 2;  -- OMS
      /*new.city = 'Кемерово';  */
     if (new.cls is null) then new.cls = 0;
     if (new.codemkb is null) then new.codemkb='';
  end

 if (updating) then
  begin
    select m.supervisor from man m where m.nameib=current_user into :supervisor;
    if (:supervisor=0) then
      begin
        if (old.cls=1) then exception e_exception_1('Изменение архивных данных запрещено!');
        if (new.cls=1) then exception e_exception_1('Вы не можете отправить карту в архив!');
        --  extractdate(null) даёт '17.11.1858'
        if (extractdate(new.tsout)<>extractdate(old.tsout))
          then begin
                if ((new.tsout is not null) and (extractdate(new.tsout)<>extractdate('NOW'))) then exception e_exception_1('Пациента можно выписать только текущей датой!');
               end
      end
     else begin
            if (new.cls=1 and new.DateOutBranch is null) then new.DateOutBranch='NOW';
          end

     if (new.dateborn<>old.dateborn) then begin
                                             update patient p set p.dateborn=new.dateborn where p.xpatient=new.xpatient;
                                          end
     if (new.tsout is null)
      then new.days=0;   -- Сколько пролежал, когда лечился
      else begin
            new.days=extractdate(new.tsout)-extractdate(new.ts);
             if (new.days<0) then exception e_exception_1('Пациента нельзя выписать раньше поступления!');
           end
      if (new.codemkb<>old.codemkb) then
       begin
         if (new.codemkb='') then delete from diagnosis d where d.xcaserecord=old.xcaserecord and d.codemkb=old.codemkb;
                             else begin
                                    delete from diagnosis d where d.xcaserecord=old.xcaserecord and d.codemkb=old.codemkb;
                                    insert into diagnosis (xcaserecord, codemkb, xtip, text) values(new.xcaserecord, new.codemkb, 1, '');
                                  end
       end
  end
end
^


SET TERM ; ^



/******************************************************************************/
/***                              Descriptions                              ***/
/******************************************************************************/

COMMENT ON TABLE CASERECORD IS 
'История болезни';



/******************************************************************************/
/***                          Fields descriptions                           ***/
/******************************************************************************/

COMMENT ON COLUMN CASERECORD.XCASERECORD IS 
'ключ таблицы';

COMMENT ON COLUMN CASERECORD.XBRANCH IS 
'Первичное отделение';

COMMENT ON COLUMN CASERECORD.XNURSE IS 
'Сиделка, мамочка ребёнка';

COMMENT ON COLUMN CASERECORD.XCITY IS 
'код города';

COMMENT ON COLUMN CASERECORD.XSOCIUM IS 
'код соцального статуса';

COMMENT ON COLUMN CASERECORD.XLPU IS 
'код ЛПУ, прикреплённого к пациенту';

COMMENT ON COLUMN CASERECORD.XASSUREROMS IS 
'Код страховой компании ОМС';

COMMENT ON COLUMN CASERECORD.XASSURERDMS IS 
'Код страховой компании ДМС';

COMMENT ON COLUMN CASERECORD.XCURATOR IS 
'код куратора';

COMMENT ON COLUMN CASERECORD.XSURGEON IS 
'хирург';

COMMENT ON COLUMN CASERECORD.XTRANSPORT IS 
'Вид транспортировки
1 - может идти
2 - в кресле
3 - на каталке';

COMMENT ON COLUMN CASERECORD.XDIET IS 
'код диеты';

COMMENT ON COLUMN CASERECORD.XCAUSE IS 
'Повод госпитализации:
1-Заболевание первично
2-Заболевание повторно
3-Травма производств.
4-Травма непроизводств.';

COMMENT ON COLUMN CASERECORD.XTIMEIN IS 
'1-доставлен в первые 6 час
2 - от 7-24часов
3 - свыше 24 часов';

COMMENT ON COLUMN CASERECORD.XMANNAME IS 
'код имени';

COMMENT ON COLUMN CASERECORD.XMANPATRO IS 
'код отчества';

COMMENT ON COLUMN CASERECORD.XDISCHARGE IS
'как выписан больной';

COMMENT ON COLUMN CASERECORD.FAMILY IS 
'Фамилия';

COMMENT ON COLUMN CASERECORD.SEX IS 
'0 - женщина 1 - мужчина';

COMMENT ON COLUMN CASERECORD.POSTINDEX IS 
'почтовый индекс';

COMMENT ON COLUMN CASERECORD.STREET IS 
'улица';

COMMENT ON COLUMN CASERECORD.HOUSE IS 
'дом';

COMMENT ON COLUMN CASERECORD.FLAT IS 
'квартира';

COMMENT ON COLUMN CASERECORD.WORKING IS 
'место работы';

COMMENT ON COLUMN CASERECORD.AGE IS 
'возраст';

COMMENT ON COLUMN CASERECORD.NOM IS 
'Номер истории болезни';

COMMENT ON COLUMN CASERECORD.TS IS 
'Время поступления';

COMMENT ON COLUMN CASERECORD.STATUS IS 
'статус';

COMMENT ON COLUMN CASERECORD.AD IS 
'Артериальное давление';

COMMENT ON COLUMN CASERECORD.WEIGHT IS 
'вес при поступлении';

COMMENT ON COLUMN CASERECORD.TEMPERATURE IS 
'температура';

COMMENT ON COLUMN CASERECORD.CASUAL IS 
'Внеплановая, экстренная госпитализация';

COMMENT ON COLUMN CASERECORD.DATEOMSBEGIN IS 
'Дата начала полиса ОМС';

COMMENT ON COLUMN CASERECORD.DATEOMS IS 
'Дата завершения ОМС';

COMMENT ON COLUMN CASERECORD.DATEDMS IS 
'Дата завершения ДМС';

COMMENT ON COLUMN CASERECORD.CONTRACTOMS IS 
'Номер договора ОМС';

COMMENT ON COLUMN CASERECORD.CONTRACTDMS IS 
'Номер договора ДМС';

COMMENT ON COLUMN CASERECORD.POLISOMSSER IS 
'Серия полиса ОМС';

COMMENT ON COLUMN CASERECORD.POLISOMS IS 
'Номер полиса ОМС';

COMMENT ON COLUMN CASERECORD.POLISDMS IS 
'Номер полиса ДМС';

COMMENT ON COLUMN CASERECORD.WARRANTOMS IS 
'Гарантийный талон ОМС';

COMMENT ON COLUMN CASERECORD.WARRANTDMS IS 
'Номер гарантийного талона';

COMMENT ON COLUMN CASERECORD.ARRCAUSE IS 
'Массив повод для госпитализации';

COMMENT ON COLUMN CASERECORD.ARRINVALID IS 
'Массив инвалидности';

COMMENT ON COLUMN CASERECORD.ARRPOLL IS 
'Массив опроса, осмотра';

COMMENT ON COLUMN CASERECORD.DIAGNOSIS0 IS 
'Диагноз направившего учреждения';

COMMENT ON COLUMN CASERECORD.DIAGNOSIS1 IS 
'Диагноз при поступлении (приёмного отделения)';

COMMENT ON COLUMN CASERECORD.DATEBORN IS 
'дата рождения';

COMMENT ON COLUMN CASERECORD.KLADR IS 
'код населённого пункта по КЛАДР';

COMMENT ON COLUMN CASERECORD.TSOUT IS 
'Время выписки';

COMMENT ON COLUMN CASERECORD.HEIGHT IS 
'Рост';

COMMENT ON COLUMN CASERECORD.BOX IS 
'Палата';

COMMENT ON COLUMN CASERECORD.KEYGRACE IS 
'Код льготы';

COMMENT ON COLUMN CASERECORD.KEYSOCIUM IS 
'Код социума';

COMMENT ON COLUMN CASERECORD.HEPATITYEAR IS 
'Год установления гепатита';

COMMENT ON COLUMN CASERECORD.PRIM IS 
'Примечание, свободная информация';

COMMENT ON COLUMN CASERECORD.BAD IS 
'Признак испорченной истории';

COMMENT ON COLUMN CASERECORD.MOAN IS 
'Жалобы';

COMMENT ON COLUMN CASERECORD.ANAMNES IS 
'Анамнез';

COMMENT ON COLUMN CASERECORD.ANAMNESLIFE IS 
'Анамнез жизни';

COMMENT ON COLUMN CASERECORD.STINGOD IS 
'Острота зрения OD';

COMMENT ON COLUMN CASERECORD.STINGOS IS 
'Острота зрения OS';

COMMENT ON COLUMN CASERECORD.VGDOD IS 
'Глазное давление OD';

COMMENT ON COLUMN CASERECORD.VGDOS IS 
'Глазное давление OS';

COMMENT ON COLUMN CASERECORD.MADE IS 
'Проведено';

COMMENT ON COLUMN CASERECORD.DIAGNOSISOUT IS 
'Диагноз при выписке';

COMMENT ON COLUMN CASERECORD.STINGODOUT IS 
'Острота зрения OD при выписке';

COMMENT ON COLUMN CASERECORD.STINGOSOUT IS 
'Острота зрения OS при выписке';

COMMENT ON COLUMN CASERECORD.PLUG IS 
'Рекомендации';

COMMENT ON COLUMN CASERECORD.CLS IS 
'Признак отправки истории в архив';

COMMENT ON COLUMN CASERECORD.CODEMKB IS 
'Код МКБ';

COMMENT ON COLUMN CASERECORD.EYE IS 
'больной глаз (левый, правый, оба)';

COMMENT ON COLUMN CASERECORD.RESULTOD IS 
'Результат лечения OD';

COMMENT ON COLUMN CASERECORD.RESULTOS IS 
'Результат лечения OS';

COMMENT ON COLUMN CASERECORD.SMT IS 
'Стандарт мед. технологий';

COMMENT ON COLUMN CASERECORD.DAYS IS 
'Сколько пролежал на лечении';

COMMENT ON COLUMN CASERECORD.DATEOUTBRANCH IS 
'Дата передачи истории болезни из отделения на обработку статистикам';

COMMENT ON COLUMN CASERECORD.SICKLIST IS 
'0 - не нужен, 1 - нужен, 2 - имеет больничный';



...
Рейтинг: 0 / 0
Проблема со связями
    #38521026
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMasterZivПопроси. Предоставлю.
автор:) Ну, прошу предоставить критерий, на основании которого в Access "нельзя держать БД"...
Потому что это говно, в котором нельзя нормально работать.К сожалению, Ваша аргументация доказывает то, что это не Access говно, а у Вас руки кривые: пример "родного" access'овского sql-запроса, сделаного его "родным" построителем запросов, и один-в-один переносимого на MSSQL (и, в-принципе, в обратном направлении), я показал, но Вы (почему-то) "усрались заставлять его [Access] понимать нормальный SQL" (с)...
MasterZivОтстань уже.А не высовывайтесь со своими "нестандартными" стандартами, в которых Вы разобраться не можете - и, возможно, Вас никто не тронет...
...
Рейтинг: 0 / 0
Проблема со связями
    #38521037
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastakill13,

если access может такие скрипты генерировать, может выложите их, а не .rar c БД ?
...
Рейтинг: 0 / 0
Проблема со связями
    #38521067
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastakill13Р.S. Почитал мнения о разных СУБД, единого мнения нет, идут баталии, вопрос может пока я еще в начале пути так сказать может все же выбрать другую СУБД и язык, пока в раздумьях продолжаю осваивать акцесс, по мне потому что он хорошо связан с вордом, за другие СУБД не знаю.
Тут у большинства нет реального опыта создания серьезных приложений на аксес, одни эмоции и осчусчения. Я выше приводил конкретные минусы этой среды, для равновесия приведу плюсы.
Низкий порог вхождения. Развернуть среду, взять готовый шаблон для примера и начать пилить свое поделие на нем можно начиная с нулевого уровня. Автоформы, автоотчеты, мастера и визарды. Сделанное автоматом легко допиливается. Расковырять и оттрассировать готовую. форму, какой-то прием очень просто. Огромное количество готовых примеров. Довольно симпатичная парадигма программирования, если не ломать ее идеологию через колено и работать через предусмотренные ее создателями метОды. Стандартный ВБА, простая объектная модель.
...
Рейтинг: 0 / 0
25 сообщений из 181, страница 6 из 8
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проблема со связями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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