powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Изменение структуры БД
13 сообщений из 13, страница 1 из 1
Изменение структуры БД
    #34520873
ДимоГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть БД на MS Access. Там есть таблица "Задачи" - около 20 000 записей. Теперь оказалось, что многие из задач могут иметь несколько подзадач(максимум 20). Изменять структуру таблицы
"Задачи" нельзя. Избыточность данных не должна быть. К этой БД будет обращаться приложение на Delphi.
Я создал таблицу "Подзадачи" с полями ID и SubTask, набил эти 20 подзадач. Создал таблицу "Моя таблица" с полями ID, Task_ID(связь с Задачи.ID), SubTask_ID (связь с Подзадачи.ID) и др. поля данных.
Такой подход нормальный? или он корявый?:)
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521275
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тебя устраивает - то почему нет?
~~~
Можно обойтись одной таблицей Подзадачи. Т.е. двумя - исходная табличка "Задачи".
Если создаются задачки (без подзадач) - то в нее пишем, как обычно.
Если создает подзадача, то тоже пишем в нее, а также в табличку Подзадачи:
Id - идентификатор задачи, SubTsk - идентификатор подзадачи.

И все. Тогда, к примеру, чтобы выбрать все "большие" задачи, нужно выбрать все записи из "Задачи", для которых нет записей в "Подзадачи" с идентификаторами "Подзадачи".SubTSK = "Задачи".IdЗадачи.

Уровень вложения подзадач в задачи - какой угодно глубокий.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521303
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если таки добавить в таблицу "Задачи" поле "Parent_Task_ID", соответственно для подзадач здесь будет родительская задача, а для "набольших" - NULL.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521363
NF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NF
Гость
ДимоГ, ты все правильно сделал. А что тебе посоветовали выше - полный бред.
Есть сущность Задачи и есть сущность Подзадачи.
Связь между ними многие ко многим (по твоему описанию). Такая связть однозначно реализуется через вспомогательную таблицу как ты и сделал.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521734
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че это бред? Чем задача отличается от подзадачи в сущностном плане? И какая разница как реализовать связь - в той же таблице или в другой таблице, если первую менять никак нельзя? Те же каталоги файловой системы так работают - у каждого есть ссылка на родительский, а у корня пусто.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521745
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NF
Связь между ними многие ко многим (по твоему описанию). Такая связть однозначно реализуется через вспомогательную таблицу как ты и сделал.

Не понятно, почему многие-ко-многим - из описания это видно. Если многим-ко-многим - то да, отдельная таблица, а если одни-ко многим - зачем плодить таблицы?
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521747
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виноват промахнулся - я хотел сказать "из описания не видно"
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34521945
NF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NF
Гость
УмаксуманА если таки добавить в таблицу "Задачи" поле "Parent_Task_ID", соответственно для подзадач здесь будет родительская задача, а для "набольших" - NULL.

Если в таблицу Подзадачи (наверное вы все же имели ввиду имено эту таблицу, ведь таблицу Задачи менять нельзя - раз, и еще это будет избыточность (для некоторых задач будет по 20 раз повторятся ее номер, наименование и т.п.), чего тоже нельзя делать - два) добавить еще поле, то мы получим так же избыточность, т.к. для каждой задачи придется указывать Наименование подзадачи. И если потребуется изменить Задачу 1 - "Подготовка к решительным действиям" на "Согласование параметров у высшего командования", то нам придется менять сотню или несколько сотен записей (можно запросом, но с точки зрения данного нам условия это недопустимо - избыточность).

УмаксуманНе понятно, почему многие-ко-многим

Ну если честно, то это мое предположение. Из описания задачи этого действительно четко не видно. Я просто усомнился, что может быть такое большое кол-во подзадач. Ведь для обеспечения всех задач (20.000) своими собственными подзадачами, последних должно быть очень много <= 400.000.


P.S. Что хоть за фигня с форумом... Уже который раз мне пишут, что такой авто зарегестрирован, смените имя... Это что, из-за того, что я сразу много вкладок открыл в Опере?
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34522104
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, из описания не видно, что связь N:N.
А во-вторых, из описания видно, что модифицировать структуру нельзя.
Вот поэтому и вспомогательная табличка для организации связи. А то, что он ее назвал Подзадачи - это его дело.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34522933
NF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NF
Гость
Странно, чего ж вы тогда советуете, если даже не знаете какого типа там связь должна быть.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34524152
ДимоГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще, связь между сущностями "Задачи" и "Подзадачи" должна быть 1:N, где 0<=N<=20.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34524687
NF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NF
Гость
Т.е. любая одна подзадача не может быть назначена сразу нескольким задачам?
Тогда просто еще одну таблицу подзадач заводи, как предложили уже NextMan и Умаксуман.

P.S. Во истину не мой сегодня день.
...
Рейтинг: 0 / 0
Изменение структуры БД
    #34531576
ДимоГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NFТ.е. любая одна подзадача не может быть назначена сразу нескольким задачам?

Может. Конечно, в том варианте, к-й я предложил изначально, связь между сущностями "Задача" и "Подзадача" N:N. Когда я писал про 1:N, думал об вариантах NextMan и Умаксуман
(будь моя воля, я бы так и сделал. Но надо без избыточности - такое требование мне предъявили).

В любом случае, спасибо Вам всем за Ваши советы.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Изменение структуры БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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