powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / списки
14 сообщений из 14, страница 1 из 1
списки
    #37239027
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здравствуйте.

была у меня табличка справочника подразделений sp_dept. у подразделений есть некоторое количество атрибутов. тутпривел только attr1_id

PKnameattr1_id1'первое'12'второе'23'третье'3

так же есть в отдельном документе сопоставление людей и подразделения.

...people_idsp_dept_id...11...21.......

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


все было хорошо.
теперь воникла необходимость объединения некоторых подразделений первой приведенной таблицы в группы.
т.е. например первое и второе позразделение остается как таковое, но появляется еще группа "первое+второе" со своим имененем и ПК.
Что-то не сообразить как реализовать. можно к первой таблице прикрутить вторую, где хранить вхождение подразделение в группы. и ввести в первой табличке тип записи (основная, группировка). однако тогда ПК, который заносится в первую рабочую таблицу уже будет не из первого справочника...
Сумбур полный
...
Рейтинг: 0 / 0
списки
    #37239084
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

у вас группы - отдельная сущность или по сути то же, что и подразделения, только крупнее? В первом случае я бы сделал отдельную таблицу групп, а в таблицу подразделений добавил ВК на нее. Во втором - оставил бы одну таблицу, добавив поле "Родительское подразделение" как ВК на саму себя.
...
Рейтинг: 0 / 0
списки
    #37241412
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljy,

Группы это совокупность нескольких подразделений.
сделал дополнительную таблицу такого вида

Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE SP_depts_SUB (
    C                          INTEGER NOT NULL,
    SP_depts_ID          INTEGER,
    CONTAIN_SP_depts_ID  INTEGER
);
соответственно второе поле это ссылка на справочник подразделений. на сроку которую мы добавляем как группу подразделений. там еще есть поле флаг - основное подразделение - группа.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE LISTS (
    PK                        INTEGER NOT NULL,
    DATEE                    DATE,
    SP_DEPT_ID        INTEGER);


CREATE TABLE LISTS_BODY (
    C                     INTEGER NOT NULL,
    LISTS_ID  INTEGER,
    PEOPLE_ID            INTEGER,
    прочие данные
);




получается если делать все с помощю таблички SP_depts_SUB, то в таблице LISTS ссылка должна быть не на SP_DEPT а на SP_depts_SUB.
и в случае если таблицы SP_DEPT содержит строку с флагом ОСНОВНОЕ ПОДРАЗДЕЛЕНИЕ, то в табличке SP_depts_SUB делать фэйковую запись что подразделение содержит только себя. т.к. если делаются отчеты, то при определении в каком подразделении находится человек используется поле LISTS.SP_DEPT_ID.
...
Рейтинг: 0 / 0
списки
    #37241444
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

зачем все это??? У вас обычная связь один-ко-многим, есть простые, надежные решения. Сделайте таблицу групп, а в таблицу подразделений добавьте на нее ссылку. Соответственно если подразделение не входит ни в какую группу - эта ссылка будет NULL.
...
Рейтинг: 0 / 0
списки
    #37241456
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljyAndrewVL,

зачем все это??? У вас обычная связь один-ко-многим, есть простые, надежные решения. Сделайте таблицу групп, а в таблицу подразделений добавьте на нее ссылку. Соответственно если подразделение не входит ни в какую группу - эта ссылка будет NULL.


на что тогда будет ссылаться LISTS.SP_DEPT_ID ?
на таблицу подразделений или групп?
...
Рейтинг: 0 / 0
списки
    #37241556
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLна что тогда будет ссылаться LISTS.SP_DEPT_ID ?
на таблицу подразделений или групп?
А зачем вообще вам нужна эта таблица? Какой смысл создавать копии данных?
...
Рейтинг: 0 / 0
списки
    #37241587
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljy,

в таблицу LISTS и LISTS_BODY пишутся своего рода ведомости.
а принадлежность человека к определенной группе опеределяется по другой таблице (таблице движений)
пока придумал только так.
чую что можно элегантней. но...
...
Рейтинг: 0 / 0
списки
    #37241613
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

установите, что подразделение всегда принадлежит группе, и группа может состоять только из одного подразделения. Тогда вы всегда будете ссылаться на группу.
...
Рейтинг: 0 / 0
списки
    #37241856
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljy,

группа может состоять из нескольких подразделений
...
Рейтинг: 0 / 0
списки
    #37241859
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLiljy,

группа может состоять из нескольких подразделений
Естественно. А может из одного. Тогда у вас изчезают все эти мутные определения, а не является ли наше подразделение группой само по себе. Оно всегда входит в группу, а то, что оно в этой группе единственное - особого значения не имеет.
...
Рейтинг: 0 / 0
списки
    #37242341
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljy,

Тогда возникает другой вопрос.

есть списки. таблицы lists и lists_body.

если раньше я просто делал join к таблице подразделений по lists.sp_depts_id = sp_depts.PK и получал в каком подразделении чел находится (sp_depts.name), то в данном случае (если хранить группы подразделений, то я получу что чел находится например в проразделении "Сборное 1+2". Что не устраеивает. хочелось получить что один чел находится в подразделении 1 а второй в подразделелнии 2.
Как в данном сулчае это получить? если в таблице lists sp_dept_id ссылается на группу подразделений а не на само как таковое.
...
Рейтинг: 0 / 0
списки
    #37242386
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

поскольку я до сих пор не понимаю цели всех этих манипуляций, мне сложно уследить за вашей мыслью. Если вы выбираете какое-то подмножество людей - так используйте вместо копирования ссылку на основную таблицу, а там есть вся инфа, в том числе и о подразделениях.
...
Рейтинг: 0 / 0
списки
    #37242561
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iljyAndrewVL,

поскольку я до сих пор не понимаю цели всех этих манипуляций, мне сложно уследить за вашей мыслью. Если вы выбираете какое-то подмножество людей - так используйте вместо копирования ссылку на основную таблицу, а там есть вся инфа, в том числе и о подразделениях.
Про ссылку - вы имеете ввиду ссылку на список людей в подразделении?
Дело в том что этот список плавающий. сегодня человер есть в подразделении, завтра он в другом. на что тогда ссылку далать?
...
Рейтинг: 0 / 0
списки
    #37243046
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLiljyAndrewVL,

поскольку я до сих пор не понимаю цели всех этих манипуляций, мне сложно уследить за вашей мыслью. Если вы выбираете какое-то подмножество людей - так используйте вместо копирования ссылку на основную таблицу, а там есть вся инфа, в том числе и о подразделениях.
Про ссылку - вы имеете ввиду ссылку на список людей в подразделении?
Дело в том что этот список плавающий. сегодня человер есть в подразделении, завтра он в другом. на что тогда ссылку далать?
Я имею ввиду people_id. Это же ключ таблицы людей, так? Значит по ней можно вытащить всю инфу о человеке, в том числе и подрузделение к которому он относится.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / списки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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