Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Как спроектировать базу?   Найти похожие ветки 

 
Бугага ©   (2005-08-25 09:17) [0]

Суть: необходимо спроектировать базу чтобы с ней можно было работать в таком виде:
http://www.liveinternet.ru/images/foto/755667/f_934323.jpg

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

Попробовал так:
select params.name, // имя параметра
      tints.vdate, // дата
      tints.tint // значение
from
      params, tints
where params.paramid=tints.paramid
order by tints.vdate


Блин, вожусь и с ДБГРидом и с ВертикалГРидом... Не получается ничего... Неужели придется делать СтрингГридом?


 
innok ©   (2005-08-25 09:30) [1]

я бы сделал примерно так(навскидку):
табл. макет
12 табл - на каждый месяц(имена полей - даты)
ну а дальше - мастер-детайл.
незаполненные даты в гриде можно просто скрыть


 
Sergey13 ©   (2005-08-25 09:33) [2]

Обычно сначала проектируют базу, а уже потом возятся с ДБГридом. Ибо эти действия слабо связаны между собой.


 
Бугага ©   (2005-08-25 09:45) [3]


> Обычно сначала проектируют базу, а уже потом возятся с ДБГридом.
> Ибо эти действия слабо связаны между собой.

Я согласен, но не могу сразу спроектировать, чтобы организовать ввод данным образом. Поэтому приходится методом тыка... Прошу помощи более опытных...


> я бы сделал примерно так(навскидку):
> табл. макет
> 12 табл - на каждый месяц(имена полей - даты)
> ну а дальше - мастер-детайл.
> незаполненные даты в гриде можно просто скрыть

а зачем отдельно таблица месяцев?


 
Anatoly Podgoretsky ©   (2005-08-25 09:55) [4]

Это называется OLAP кубы, возможно Firebird их поддерживает.


 
Sergey13 ©   (2005-08-25 09:56) [5]

2[3] Бугага ©   (25.08.05 09:45)
Под проектированием понимается обычно опеделение структуры таблиц и их связей для выполнения поставленной задачи.
Я, например, по этой картинке (интерфейс вообще, ИМХО, не очень удачен. что это за "Жалобы", "Органопрепараты" - откуда они), ничего не могу сказать о твоей БД и не представляю твой задачи.


 
sniknik ©   (2005-08-25 10:09) [6]

> Это называется OLAP кубы, возможно Firebird их поддерживает.
ну, OLE DB провайдеры для ib есть, т.что ничего не мешает использовать стандартный мелкосовтский (Analysis Services для создания).


 
Polevi ©   (2005-08-25 10:18) [7]

и OWC или Excel в качестве клиента


 
Бугага ©   (2005-08-25 11:01) [8]


> Под проектированием понимается обычно опеделение структуры
> таблиц и их связей для выполнения поставленной задачи.
> Я, например, по этой картинке (интерфейс вообще, ИМХО, не
> очень удачен. что это за "Жалобы", "Органопрепараты" - откуда
> они), ничего не могу сказать о твоей БД и не представляю
> твой задачи.

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

Суть такова:
Есть параметры(макеты) и их группы. "Жалобы" и "Органопрепараты" и есть параметры. Естественно, их название мало о чем говорит, так здесь необходимо мед.образование и понимать что к чему. Врач с помощью данной программы делает отметки в каком-то параметре за какую-то дату, ведя таким образом учет состояния пациента.


 
Sergey13 ©   (2005-08-25 11:12) [9]

2[8] Бугага ©   (25.08.05 11:01)
ИМХО, ты фигней маешься. Просишь помочь с проектированием БД, но текущую структуру не даешь. Секретность что ли? В медицинской то программе? Ню-ню.

Можно сделать как советуют с кубами. Можно (наверное) сделать и самому. Я нечто подобное делал, ручками формируя таблицу в памяти (RxMemoryData). Но что бы что-то советовать надо знать исходную инфу и желательно в терминах БД а не в медицинских (они пофиг вообще). Ты ее не даешь.


 
Бугага ©   (2005-08-25 11:22) [10]

Это называется OLAP кубы, возможно Firebird их поддерживает.
А где можно почитать про них? Желательно не сильно заумно ;)


> ИМХО, ты фигней маешься. Просишь помочь с проектированием
> БД, но текущую структуру не даешь. Секретность что ли? В
> медицинской то программе? Ню-ню.

Ну, во-первых, что значит фигней маешься? Я спрашиваю совета там, где не понимаю. Спрашиваю вполне корректно. И очень прошу помощи, так как очень надо...

Да и во-вторых, здесь то ничего такого секретного то нет. Из кода по-моему все видно..

groups // группы параметров
groupid int;
name string;

params // сами параметры
paramid int;
groupid int;
name string;

tints // значения
tintid int;
vdate date;
tint string;

Эта структура отвечает именно требованиям, да и можно придумывать способы ввода. Но вот нужно только так, как в скриншоте... Можно конечно вручную в СтрингГрид загонять, а потом записывать... Но по-моему это не есть гут..


 
sniknik ©   (2005-08-25 11:29) [11]

> Можно сделать как советуют с кубами.
не получится, так понял (только сейчас) с таблицей этой надо работать добавлять/редактировать. а кубы это прежде всего отчеты.

непонятно почему ВертикалГРидом не получилось, все как раз под него, весь левый ряд это названия полей (вернее дескрипторы, называть по русски, с пробелами... не советую), а направо пошли записи... значение поля "параметр (макет)" определяющее (хотя я бы еще и искуственный ключ ввел бы) и по нему сортировка. все замечательно "укладывается" по такой схеме.


 
Бугага ©   (2005-08-25 11:34) [12]

не получится, так понял (только сейчас) с таблицей этой надо работать добавлять/редактировать. а кубы это прежде всего отчеты.
угу, эти данные для редактирования

непонятно почему ВертикалГРидом не получилось, все как раз под него, весь левый ряд это названия полей (вернее дескрипторы, называть по русски, с пробелами... не советую), а направо пошли записи... значение поля "параметр (макет)" определяющее (хотя я бы еще и искуственный ключ ввел бы) и по нему сортировка. все замечательно "укладывается" по такой схеме.
Слева - это поля (как я понимаю, это params.name?), но получается в случае добавления/удаления самих параметров придется менять структуру таблиц? голова уже кругом идет...


 
Виталий Панасенко   (2005-08-25 11:39) [13]


> Слева - это поля (как я понимаю, это params.name?),

А ты сам не знаешь, что это такое ?!. Или это не твое ?..


 
Sergey13 ©   (2005-08-25 11:40) [14]

2[10] Бугага ©   (25.08.05 11:22)
Я и не обвинял тебя в некорректности. Просто спрашивая про структуру ты даешь исходную только в 10 посте.
Если обидел - извини.

А где в tints ссылка на params? Я вижу только дату и значение. И не понятно кому эти значения принадлежат. Это данные по больному? Где ссылка на него? Смысл задачи все равно не особо ясен.

При таком подходе и большом количестве параметров+приличный период такая таблица будет занимать не один экран. Как по горизонтали, так и по вертикали. ИМХО, этоне очень удобно, не говоря уж про производительность. Я бы посоветовал сменить подход к интерфейсу.


 
Виталий Панасенко   (2005-08-25 11:44) [15]

а почему все-таки не сделать мастер-деталь ? две сетки рядом.. в одной Параметры(мастер), во-второй - даты (деталь?, знаечения ?
что-то вида
Параметр1   дата1 значение
Параметр2   дата2 значение
и т.д.
или "казнить нельзя помиловать" ?..


 
sniknik ©   (2005-08-25 11:51) [16]

> Я бы посоветовал сменить подход к интерфейсу.
тоже не получится ;о)), у бугалтеров (видимо и не только у них) это любимая форма представления данных (шахматка вроде называется).

Бугага ©   (25.08.05 11:34) [12]
не понятно. твоя структура у меня с картинкой "не складывается"...
по моему все там, на картинке, это одна таблица, с одной записью. возми ее распечатай и поверни на 90 градусов, названиями вверх, вот и получили стандартную таблицу что нужна.


 
Бугага ©   (2005-08-25 11:57) [17]

А где в tints ссылка на params? Я вижу только дату и значение. И не понятно кому эти значения принадлежат. Это данные по больному? Где ссылка на него? Смысл задачи все равно не особо ясен.
Забыл поле в tints...

tints // значения
tintid int;
paramid int;
vdate date;
tint string;

вообще-то еще есть поле patientid (это и есть код пациента), просто незачем его упоминать.

При таком подходе и большом количестве параметров+приличный период такая таблица будет занимать не один экран. Как по горизонтали, так и по вертикали. ИМХО, этоне очень удобно, не говоря уж про производительность. Я бы посоветовал сменить подход к интерфейсу.
С удовольствием, но "мы хотим только так"... А вы бы какой интерфейс посоветовали?

а почему все-таки не сделать мастер-деталь ? две сетки рядом.. в одной Параметры(мастер), во-второй - даты (деталь?, знаечения ?
что-то вида
Параметр1   дата1 значение
Параметр2   дата2 значение
и т.д.
или "казнить нельзя помиловать" ?..

Две сетки рядом? Хм... попробую..


 
Sergey13 ©   (2005-08-25 12:07) [18]

2[17] Бугага ©   (25.08.05 11:57)
>С удовольствием, но "мы хотим только так"...
Это знакомо. 8-) Правда с аргументацией у хотящих обычно напряг. Я в таких случаях (когда кончались мои аргументы) говорил, что сделать "как мы хотим" просто нельзя из-за ограничения в базе данных. 8-)

>А вы бы какой интерфейс посоветовали?
Тут думать надо. Анализировать. Тут творчество сплошное.
Наверное я бы сделал нечто в сторону мастер-деталь (как уже советовали). Возможно сделал такого рода вывод инфы только в виде отчетов (там это проще - (крос-таб отчеты кажется подойдут)), а ввод сделал бы более "стандартными" методами.


 
Бугага ©   (2005-08-25 12:21) [19]

не понятно. твоя структура у меня с картинкой "не складывается"...
по моему все там, на картинке, это одна таблица, с одной записью. возми ее распечатай и поверни на 90 градусов, названиями вверх, вот и получили стандартную таблицу что нужна.

И количество параметров и сами даты изменяются и изменяются их количества. Может я просто не понимаю, но получается таблица с динамическим количеством полей


> Это знакомо. 8-) Правда с аргументацией у хотящих обычно
> напряг. Я в таких случаях (когда кончались мои аргументы)
> говорил, что сделать "как мы хотим" просто нельзя из-за
> ограничения в базе данных. 8-)

Аргумент один - "мы так привыкли". А если уже есть программа, то значит это реально сделать ;)


> Наверное я бы сделал нечто в сторону мастер-деталь (как
> уже советовали). Возможно сделал такого рода вывод инфы
> только в виде отчетов (там это проще - (крос-таб отчеты
> кажется подойдут)), а ввод сделал бы более "стандартными"
> методами.

Да проблема-то в вводе инфы... ЧТоб было наглядно...
ПОпробую master-detail


 
Бугага ©   (2005-08-25 12:53) [20]

Мастер-Деталь:
Groups -> Params -> Tints

Но пока я не выберу конкретный параметр, я не увижу его данные, ведь так? А смысл в том, что я вижу данные по всем параметрам...


 
Sergey13 ©   (2005-08-25 12:55) [21]

2[19] Бугага ©   (25.08.05 12:21)
> Да проблема-то в вводе инфы... ЧТоб было наглядно...
Дык не всегда это получается. Иногда приходится разделять эти две независимые друг от друга задачи - ввод данных и их представление для анализа. У тебя как раз такой случай, ИМХО.


 
Бугага ©   (2005-08-25 13:04) [22]


> Sergey13 ©   (25.08.05 12:55) [21]

ну если уже сделано, значит можно сделать то же самое...


 
Sergey13 ©   (2005-08-25 13:07) [23]

2[22] Бугага ©   (25.08.05 13:04)
> ну если уже сделано, значит можно сделать то же самое...

то же самое - это

> программа, на которой уже сидят давно. Она очень глючная, но руку на ней набили.

? 8-)


 
Бугага ©   (2005-08-25 15:05) [24]


> Sergey13 ©   (25.08.05 13:07) [23]

Глюки у нее не вводе инфы, а в самой работе... И то, что для каких-либо изменений надо вызывать программиста..


 
Sergey13 ©   (2005-08-25 15:28) [25]

2[24] Бугага ©   (25.08.05 15:05)
> И то, что для каких-либо изменений надо вызывать программиста..
Так это хорошо!!! Для программиста. 8-)


 
Бугага ©   (2005-08-25 15:36) [26]

Ну а у меня задача сделать так, чтобы в моих услугах нуждались поменьше :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.218 c
14-1127245822
Gero
2005-09-20 23:50
2005.10.09
Opera Voice


14-1127136832
vecna
2005-09-19 17:33
2005.10.09
Про черные ящки =)


1-1127205297
Nait
2005-09-20 12:34
2005.10.09
как перехватить событие для Application (например х,y мышки)?


8-1111810698
wlf
2005-03-26 07:18
2005.10.09
Экспорт в Excel


4-1123039417
fmf
2005-08-03 07:23
2005.10.09
Как передать дату в чужое приложение?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский