|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Мужики, чет я затупил. Помогите советом. Нужно задокументировать вот такой анализ бак. посева с чувствительностью к антибиотикам сделал так Код: 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.
Но что-то подсказывает, что можно сделать лучше. Есть мысли какие? ================= Док. Win7 Ultim x64, Deb 7.6 i386 (Deb 8.3 i386): FB 2.5.5.26952, диалект 3, SS(win)/CS(Deb), Lazarus 1.7; FPC 3.1.1, IBX by -Rik- ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 14:17 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
ДокПо сабжу есть мысли? Сабж ништяк в первом приближении. Для повышения нормальности можно ссылку на пациента и место стера вынести в отдельную таблицу проб (или анализов), а из результатов ссылаться уже на неё, но это сугубо мелочь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 14:28 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Док Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Это та самая справка? На каждую строку и имя и дата? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 14:42 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Док, не делай префиксы у столбцов. это лишнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 14:59 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
wadmanНа каждую строку и имя и дата? Тут неясно имя и дата чего. Имя явно не пациента и не лекарства. Дата тоже может быть не взятия анализа, а получения результата по каждому лекарству отдельно (хотя в бланке её и нет). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 15:09 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
мы еще традиционно пишем current_timestamp и current_user в каждую таблицу, просто триггером на инсерт, на всякий случай, бывает помогает при разборе полетов. kdvне делай префиксы у столбцов. это лишнее.Особенно, когда на автомате пишешь запросы вида алиас.стобец префиксы будут дублироваться и пестрить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 15:19 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyмы еще традиционно пишем current_timestamp и current_user в каждую таблицу, просто триггером на инсерт, на всякий случай, бывает помогает при разборе полетов. +1 Только у нас полей четыре - create_ и change_ вместо одного current_. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 15:27 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
kdvне делай префиксы у столбцов. это лишнее. да, Дим. Привычка дурная осталась. Надо бы переделать, заодно "лишнее место" в названии освободится - иногда 31 знака не хватает. wadmanНа каждую строку и имя и дата? собственно, я ничего логичнее не придумал. Предложишь что-то более феншуйное - буду только благодарен :) Dimitry SibiryakovТут неясно имя и дата чего. Имя явно не пациента и не лекарства. пока подразумевается дата изготовления (забора) анализа. Дим, а ты что конкретно имел ввиду под этим? авторДля повышения нормальности можно ссылку на пациента и место стера вынести в отдельную таблицу проб (или анализов), а из результатов ссылаться уже на неё ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 17:48 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Докпока подразумевается дата изготовления (забора) анализа. Тогда тебе действительно нужна отдельная таблица анализов типа такой: (ссылка на пациента, ссылка на бактерию, дата и прочая ботва). И отдельная таблица результатов отдельных тестов для этих анализов: (ссылка на анализ, ссылка на препарат, флаг устойчивости). Это опять же если одним анализом не производится тестирование сразу нескольких бактерий. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 17:55 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 18:25 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Hello, Miwaonline! You wrote on 30 марта 2016 г. 11:59:42: Miwaonline> +1 > Только у нас полей четыре - create_ и change_ вместо одного current_.аналогично. но у нас есть ещё и "самоархивирующиеся" таблицы, на которые сверху навешена вьюха показывающая "актуальное состояние" Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 12:01 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Это ты делаешь чисто для лаборатории или для электронной истории? Удивило, зачем тут название среды. Надо учесть, какой питательный раствор был в пробирке с материалом? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 13:07 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Док, на всякий случай сделал, может в будущем мне самому пригодится. Триггеры делать не стал, пока лениво. Справочники - схематично. Если что не понятно - обсудим. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 13:49 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
kdvzeon11CREATE DOMAIN STRING25 AS VARCHAR(25) CHARACTER SET WIN1251 COLLATE WIN1251; CREATE DOMAIN STRING30 AS VARCHAR(30) CHARACTER SET WIN1251 COLLATE WIN1251; потрясающе - string25, string30... а кстати, у вас что, дефолтный чарсет базы не win1251? Ваш вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 14:16 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11Ваш вариант? Сделать один домен с запасом типа VARCHAR(100). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 15:15 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11Ваш вариант? накой они нужны? т.е., с какой целью сделаны? Вы и в Дельфи так же пишете? Вместо var s: string надо сначала накатать Код: pascal 1. 2. 3.
и так далее? Вот тут только что говорили про домены http://www.sql.ru/forum/1207166/fb3-neponyatka ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 16:21 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11, кстати, я замечу, что Код: sql 1.
комментарий с расшифровкой домена в IBExpert появился по моей просьбе (как минимум). Невозможно было смотреть DDL чужих баз с массой доменов непонятного назначения. string30 это еще туда-сюда, понятно что это. Но с другой стороны, такой домен совершенно бессмысленен - ведь ясно, что разработчик дальше не будет навешивать на него check или еще что-либо. Единственный смысл домена string30 - возможность выполнить в дальнейшем alter domain string30 to string40 type varchar(40). Что может также вызвать проблемы, если части столбцов типа string30 не требуется увеличение размера. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 16:36 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
kdvzeon11, кстати, я замечу, что Код: sql 1.
комментарий с расшифровкой домена в IBExpert появился по моей просьбе (как минимум). Невозможно было смотреть DDL чужих баз с массой доменов непонятного назначения. string30 это еще туда-сюда, понятно что это. Но с другой стороны, такой домен совершенно бессмысленен - ведь ясно, что разработчик дальше не будет навешивать на него check или еще что-либо. Единственный смысл домена string30 - возможность выполнить в дальнейшем alter domain string30 to string40 type varchar(40). Что может также вызвать проблемы, если части столбцов типа string30 не требуется увеличение размера. Да, комментарии в IBExpert очень удобны. Если Вы приложили к этому руку - то и от меня тоже спасибо. По поводу string30 и т.п. - всё дело в процедурах. бывает так, (ну, по крайней мере у меня), что не угадаешь с размером поля, приходится его увеличивать, при этом это поле "вошло" уже в кучу процедур. Что-бы не получить исключения в неподходящий момент, пробегаюсь по метаданным, где переменные так-же описаны с помощью соответствующих доменов, и меняю размер переменных в процедурах. Можно конечно, как посоветовал DarkMaster делать всё с запасом, тем более это ни чем не грозит, но пока что для меня это некоторый дискомфорт. Мы же носим старые джинсы не потому, что не можем купить новые. Просто в старых нам удобнее. :-) Кстати, думал меня начнут клевать за использование префикса "X" вместо суффикса "_ID" в ключевых полях, но как-то обошлось. Или ещё не вечер? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 17:20 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11, да по фиг на твою систему префиксов. Мне вот доллар в именах таблиц и столбцов не нравится, но тоже ничего страшного. А вот неосмысленные имена FK уже хуже Код: sql 1. 2. 3. 4.
потом начнёшь разбирать план запроса, а он тебе имена индексов FK_TESTGERMICIDE$GERMICIDE_2 даст и гадай к какому филду это относится ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 17:26 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Симонов Денисzeon11, да по фиг на твою систему префиксов. Мне вот доллар в именах таблиц и столбцов не нравится, но тоже ничего страшного. А вот неосмысленные имена FK уже хуже Код: sql 1. 2. 3. 4.
потом начнёшь разбирать план запроса, а он тебе имена индексов FK_TESTGERMICIDE$GERMICIDE_2 даст и гадай к какому филду это относится В своё оправдание назову одно число - "31". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 18:15 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11, вот поэтому и не надо делать очень длинных имён таблиц, и имён столбцов в которых имя этой таблицы повторяется ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 18:17 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Мимопроходящий"самоархивирующиеся" таблицы, на которые сверху навешена вьюха показывающая "актуальное состояние"А апдейт тоже через вьюху делаете или напрямую? Или SP ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 18:47 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Симонов Денисzeon11, вот поэтому и не надо делать очень длинных имён таблиц, и имён столбцов в которых имя этой таблицы повторяется А вот тут не соглашусь. Был у меня период коротких имён. А потом как-то пришло понимание, что нормальные имена - лучше. Почему "X" а не "_ID" - экономия 2 символа и скорость при написании JOINов. Почему $ - Документ$ТаблицаДокумента. Легко вспомнить, легко искать, легко связывать. Скорость написания запросов с клавиатуры гораздо выше. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 19:03 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Симонов Денис, Код: sql 1.
по-моему, тут можно убиться об стену. Если кто не понял, я про имена таблиц TESTGERMICIDE$GERMICIDE->TESTGERMICIDE ну и GERMICIDE.XGERMICIDE это тоже капец какой-то. Еще хуже только это Код: sql 1. 2.
может быть, для русскоязычных английские буквы как-то скрывают бессмысленность. Но если по русски сделать создать таблицу тестидентификатор$идентификатор( хтестидентификатор$идентификатор то думаю, моя мысль будет более понятна :-) Остается пожелать развить эту тему дальше, типа, хидентификатор$тестидентификатор#хтестидентификатор ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 19:13 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Я понимаю Ваше негодование на нечитаемые имена, но обратите внимание, для правильного описания ОДНОГО медицинского документа (очень не сложного, смею заметить, Док привёл 1 фотографию) и работы с этим документом (надеюсь, по нормализации, ссылочной целостности претензий нет?), потребовалось 10 таблиц. Серьёзная МИС (медицинская информационная система) должна описывать несколько десятков, а то и сотен таких документов. В этом случае регрессионное именование объектов приведёт к путанице, грубым ошибкам, когда в запросах будут ошибочно связываться не те таблицы. Поэтому таблицы с названиями "BOLNOY", "ANALIZKROVI", "LEKARSTVO" и т.п. давно умерли. Приведу ещё пример, из другой области, а именно химии. Именование соединений вначале было достаточно простым. Бензол, толуол, индиго и т.д. По мере развития, число соединений стремительно росло (сейчас описано несколько миллионов соединений), и пришлось, не от хорошей жизни, выработать специальную систему именования веществ, однозначно трактующую структуру вещества. Т.е. по названию вещества, приводящего простого смертного в ступор, химик без каких-либо затруднений может однозначно нарисовать структуру этого вещества и рассказать о многих его химических свойствах. Например, N,N-диметил-N,N-диаллиламмоний хлорид - вполне себе изящная симметричная молекула способная к радикальной полимеризации и сополимеризации с образованием водорастворимого полимера. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 21:01 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11, ЯННП... слишком много букв. Это крик души или? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 21:52 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Hello, Гаджимурадов Рустам! You wrote on 31 марта 2016 г. 11:08:01: Гаджимурадов РустамМимопроходящий> "самоархивирующиеся" таблицы, на которые сверху навешена вьюха показывающая "актуальное состояние" > А апдейт тоже через вьюху делаете или напрямую? Или SP ?апдейт в таких таблицах исключен как класс. только инсёрт нового состояния этой записи. зы: delete тоже исключен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 11:11 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Мимопроходящий> только инсёрт нового состояния этой записи. Это понятно, вот я и спрашиваю - инсерт напрямую или через вьюху? И апдейт с удалением на инсерт как заменяются - на клиенте или в триггере вьюхи? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 16:14 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
триггеры на вьюхе Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 16:18 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
OK, спасибо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 18:39 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
kdvДок, не делай префиксы у столбцов. это лишнее. удваиваю ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 14:55 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
kdv, А можно за эстетику слово молвить? Оч хочется длину объектов больше 31. Хотя бы 63. И добавить в допустимые символы # например. Чтобы писать Drug#='kokos'. Красота! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 15:03 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Симонов ДенисHS, жди FB4 там это запланировано это я про длину идентификаторов. Хотелка про # в топку, если сильно надо в отквоченных именах можешь хоть сейчас писать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 15:09 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Денис, В кавычках неэстетично. Тем более, что в оракле есть. И есчо хочется value в качестве имени поля (без ""). Ну что вам стоит? А общественности приятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 16:42 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
сразу могу послать в сад ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2016, 17:02 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
zeon11Док, на всякий случай сделал, может в будущем мне самому пригодится. Триггеры делать не стал, пока лениво. Справочники - схематично. Если что не понятно - обсудим. занятная схема, пришлось ручкой на бумаге рисовать, чтобы разобраться :) Хотел уточнить 2 вопроса: 1. что за табля TESTINGGERMICIDE$GERMICIDE и каково назначение поля TESTINGGERMICIDE$GERMICIDE.RESULT? 2. каково назначение поля TESTINGGERMICIDE.RESULT? 3. можно пример запроса (хотя бы схематично) с результатом как на картинке из стартового сабжа? зы. Спасибо за участие, раньше не мог обстоятельно все посмотреть - работы дофигище ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 11:17 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
DelphiCoder_1980Удивило, зачем тут название среды. Надо учесть, какой питательный раствор был в пробирке с материалом? там не название среды, там локализация органа, из которого отбирается анализ. Сама питательная среда практикующего доктора редко интересует ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 11:21 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
по просьбе Док-а топик проредил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 11:50 |
|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#18+
Докzeon11Док, на всякий случай сделал, может в будущем мне самому пригодится. Триггеры делать не стал, пока лениво. Справочники - схематично. Если что не понятно - обсудим. занятная схема, пришлось ручкой на бумаге рисовать, чтобы разобраться :) Хотел уточнить 2 вопроса: 1. что за табля TESTINGGERMICIDE$GERMICIDE и каково назначение поля TESTINGGERMICIDE$GERMICIDE.RESULT? 2. каково назначение поля TESTINGGERMICIDE.RESULT? 3. можно пример запроса (хотя бы схематично) с результатом как на картинке из стартового сабжа? зы. Спасибо за участие, раньше не мог обстоятельно все посмотреть - работы дофигище Ну, наконец-то откликнулся тот, для кого схему делал. 1. Мы-же делаем всё про запас. Сегодня один бланк, через три дня придут и скажут - появился новый антибиотик, давайте пускать его по схеме, т.е. будет НОВАЯ схема. Поэтому есть две специальных таблицы, описывающие схемы. Т.е. TestGermicide (в ней описываются схемы, в предельном, твоём случае, там будет одна схема, что на фото, и от этих таблиц можно отказаться. Но! если появится ещё одна схема, а она появится, будь уверен - тебе снова нужно будет ломать голову над проектированием БД, а мне ломать голову не придётся, поскольку эту ситуацию я уже запланировал. Я просто создам новую схему с новым набором антибиотиков. Как видно из скрипта, набор антибиотиков для схемы хранится в таблице TestGermicide$Germicide. Эта таблица является подчинённой, что видно по триггеру (последний в моём скрипте). Таблица схем анализа - это не сам анализ пациента, это только ПЛАН, по которому мы будем пускать биоматериал пациента, таких планов может быть несколько, некоторые могут быть не актуальны, чтобы они не мельтешили - есть поле USE 2. А вот сами анализы пациентов хранятся в таблице TestINGGermicide и подчинённой таблице TestINGGermicide$Germicide, обрати внимание, названия таблиц похожи, отличаются только наличием "ING" (герундий), вроде как сигнал, что тут уже процессы хранятся. Соответственно в анализах пациентов хранится ссылка на схему, по которой мы пустили пациентов. 3. Ну и по твоему вопросу, что хранится в поле TestINGGermicide$Germicide.Result - там хранится результат реакции бактерии на антибиотик. Формализовать его я не стал, это может быть ссылка на справочник реакций бактерии, или просто текст, как в твоём случае (устойчив, умеренно устойчив, чувствителен). По именованию таблиц - претензий к названиям справочников (BACTERIUM,GERMICIDE,PERSONNEL и.т.д.) нет? Если длинные наименования напрягают - поменяй на те, которые считаешь более удобными - короткие, только в МИСах есть один недостаток - короткие названия уж очень быстро кончаются. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 20:03 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562241]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 446ms |
0 / 0 |