|
Нужна помощь с проектированием базы
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=40&msg=39203498&tid=1562241]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 197ms |
0 / 0 |