Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Фейковый FK / 25 сообщений из 48, страница 1 из 2
09.06.2016, 10:54
    #39253369
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Мужики, вы стаю собак в проектировании съели. Подскажите, как по феншую.

Есть табля с пациентами и табля с персоналом. Они все где-то проживают и эти данные надо хранить. Чтобы не городить, как минимум, две отдельные таблички, на ум пришла мысль хранить эти данные в одной
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE TBL_ADDRESS (
    ID                    INTEGER NOT NULL,
    FK_PATIENTS           INTEGER DEFAULT 0 NOT NULL,
    FK_PERSONAL           INTEGER DEFAULT 0 NOT NULL,
    ...
);


и в упомянутых выше двух мастер-табличках создать "неудаляемые" записи с ID=0, а при вставке в TBL_ADDRESS в FK вставлять реальный ID из той таблички, для которой запись создана.

Так нормальные люди делают или есть какой-то другое правильное решение с учетом последующего удобства выборки и проч.?

=================
Док.

Win7 Ultim x64, Deb 7.6 i386 (Deb 8.3 i386): FB 3.0.0.32483, диалект 3, SS(win)/CS(Deb), Lazarus 1.7; FPC 3.1.1, IBX by -Rik-; IBE 2016.4.29.1
...
Рейтинг: 0 / 0
09.06.2016, 11:04
    #39253379
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Док,
Про феншуй не знаю
но вот зачем :
" DEFAULT 0 NOT NULL"
и
" мастер-табличках создать "неудаляемые" записи с ID=0"

совсем не понял
...
Рейтинг: 0 / 0
09.06.2016, 11:09
    #39253383
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Минимальная контактная информация и должна быть общей: сегодня персонал, а завтра - уже пациент. Ну или наоборот.
А вот уже различающуюся информацию - разделять: для пациента неинтересна специализация, а персоналу не требуется диагноз.
...
Рейтинг: 0 / 0
09.06.2016, 11:11
    #39253387
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Док, по фэншую ты можешь хранить информацию о физических лицах в одной табличке, а в другой табличке по 1:1 с предыдущей, хранить определение "типа" физ.лица - "Персонал"/"Пациент". Тут, конечно, не мешало бы и третью табличку прибабахать - справочник типов физ.лиц, чтобы была фэншуйная нормализация и отсутствие избыточности.
...
Рейтинг: 0 / 0
09.06.2016, 11:13
    #39253388
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
m7m,

еще раз: если указан адрес проживания пациента, то в FK_PATIENTS будет не 0 , а в FK_PERSONAL будет 0 . Для адреса работника ситуация будет с точностью до наоборот.

Если не нравиться DEFAULT, можно в триггер на вставку завернуть
...
Рейтинг: 0 / 0
09.06.2016, 11:15
    #39253390
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Докm7m,

еще раз: если указан адрес проживания пациента, то в FK_PATIENTS будет не 0 , а в FK_PERSONAL будет 0 . Для адреса работника ситуация будет с точностью до наоборот.

Если не нравиться DEFAULT, можно в триггер на вставку завернуть
а чем null не угодил??
...
Рейтинг: 0 / 0
09.06.2016, 11:16
    #39253393
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
rdb_dev,

блин, вроде очевидные вещи, но под этим углом я на архитектуру еще не смотрел. Спасибо, что поднял мне веки открыл глаза
...
Рейтинг: 0 / 0
09.06.2016, 11:16
    #39253394
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Док, ты всё перевернул с ног на голову.
ты перепутал объекты с атрибутами этих объектов.
с точностью до наоборот.

зы: не проктолог? (шутко!)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 11:25
    #39253398
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Докrdb_dev, блин, вроде очевидные вещи, но под этим углом я на архитектуру еще не смотрел. Спасибо, что поднял мне веки открыл глаза
А если уж совсем фэншуйно, то каждое физ.лицо либо где-то работает (id юр.лица из справочника юр.лиц), либо нет (null) и если id юр.лица совпадает с id вашего мед.учреждения, то персонал, иначе - пациент.
...
Рейтинг: 0 / 0
09.06.2016, 11:25
    #39253400
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Мимопроходящий,

мне стыдно, как не было давно!

Пошел стреляться править таблички
...
Рейтинг: 0 / 0
09.06.2016, 11:29
    #39253406
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
rdb_devесли id юр.лица совпадает с id вашего мед.учреждения, то персонал, иначе - пациент.Типа, доктору больничный никогда не требуется?
...
Рейтинг: 0 / 0
09.06.2016, 11:34
    #39253411
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Basil A. Sidorov, дело не в больничном, а в том, что персонал облизывают лучше. Так-то любое физ.лицо, будь то "персонал" или "пациент" (не резидент мед.учреждения), обратившееся в мед.учреждение (попавшее в таблицу физ.лиц) уж безоговорочно является пациентом, которому время от времени нужен больничный.
...
Рейтинг: 0 / 0
09.06.2016, 11:35
    #39253412
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Док,

бр... Я бы сделал табличку PEOPLE и в ней бы хранил и персонал и пациентов. Только добавил бы в неё поле PEOPLE_KIND для определения что это за чел сотрудник или пациент. А связи сотрудник-пациент в этой табле по идее быть не должно. Один и тот же человек может быть пациентом у нескольких врачей, и наоборот у одного врача может быть много пациентов.
...
Рейтинг: 0 / 0
09.06.2016, 11:43
    #39253420
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Симонов Денисбр... Я бы сделал табличку PEOPLE и в ней бы хранил и персонал и пациентов. Только добавил бы в неё поле PEOPLE_KIND для определения что это за чел сотрудник или пациентА я бы не добавлял: есть первичный ключ, вот его и задействовать в отдельных таблицах для персонала и для пациентов.

P.S. Через пару-тройку лет окажется, что человек не просто может менять состояние - он может лечиться, не переставая быть сотрудником.
...
Рейтинг: 0 / 0
09.06.2016, 11:47
    #39253424
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Basil A. Sidorov,

пожалуй ты прав
...
Рейтинг: 0 / 0
09.06.2016, 11:55
    #39253436
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Симонов Денис,

тут уже предлагали. Я даже в инет сунулся, рассуждая, как ты

Но это
Basil A. Sidorovчеловек не просто может менять состояние - он может лечиться, не переставая быть сотрудником
пока сбило меня с толку, щас буду думать, стоит ли так заморачиваться в контексте задачи.
...
Рейтинг: 0 / 0
09.06.2016, 12:05
    #39253446
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
ДокЕсть табля с пациентами и табля с персоналом. Они все где-то проживают и эти данные надо
хранить. Чтобы не городить, как минимум, две отдельные таблички, на ум пришла мысль
хранить эти данные в одной

А какой смысл вообще выносить место проживания в отдельную табличку? Добавить в основные
таблицы по полю "дополнительная информация, включая место проживания в свободной форме"
типа CLOB мешает что-то?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 12:12
    #39253454
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
ДокBasil A. Sidorovчеловек не просто может менять состояние - он может лечиться, не переставая быть сотрудником
пока сбило меня с толку, щас буду думать, стоит ли так заморачиваться в контексте задачи.
смотря в чем состоит задача...

19274926
19274858
...
Рейтинг: 0 / 0
09.06.2016, 12:13
    #39253455
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Dimitry Sibiryakov, как бы да, но, ИМХО, KLADR не помешает.
...
Рейтинг: 0 / 0
09.06.2016, 12:16
    #39253462
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
rdb_devИМХО, KLADR не помешает.
Ну, если Доку понадобится статистика типа "количество пациента по районам", тогда да, а
иначе это только усложнение ввода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 12:23
    #39253471
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Dimitry Sibiryakovмешает что-то?
В произвольной форме недостаточно будет, имхо. В более-менее современных МИС сейчас требуется отдельно адрес проживания и адрес прописки (регистрации).

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

rdb_devсмотря в чем состоит задача...
клиент для мелко-средних контор и "врачей-фрилансеров" Отсюда и контекст. Универсального софта нет.
...
Рейтинг: 0 / 0
09.06.2016, 12:27
    #39253473
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
ДокВ произвольной форме недостаточно будет, имхо. В более-менее современных МИС сейчас
требуется отдельно адрес проживания и адрес прописки (регистрации).

Ну так это не исключает произвольную форму:
Адрес проживания: Москва, Кремль
Адрес прописки: Мухосранск, свалка
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2016, 13:21
    #39253563
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Dimitry Sibiryakovэто не исключает произвольную форму
хочу оставить потенциальную возможность статобработки
"Никогда не знаешь, что придет голову этим пчелам..." (с)
...
Рейтинг: 0 / 0
09.06.2016, 14:00
    #39253635
HS
HS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
Просятся три таблицы: Person(люди), Employee(персонал), Patient(пациенты). Sorry - все, что сверху не читал.
...
Рейтинг: 0 / 0
09.06.2016, 15:21
    #39253722
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фейковый FK
HSПросятся три таблицы: Person(люди)
какие сведения хранятся в первой таблице?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Фейковый FK / 25 сообщений из 48, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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