|
|
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Есть БД на MS Access. Там есть таблица "Задачи" - около 20 000 записей. Теперь оказалось, что многие из задач могут иметь несколько подзадач(максимум 20). Изменять структуру таблицы "Задачи" нельзя. Избыточность данных не должна быть. К этой БД будет обращаться приложение на Delphi. Я создал таблицу "Подзадачи" с полями ID и SubTask, набил эти 20 подзадач. Создал таблицу "Моя таблица" с полями ID, Task_ID(связь с Задачи.ID), SubTask_ID (связь с Подзадачи.ID) и др. поля данных. Такой подход нормальный? или он корявый?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 13:05 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Если тебя устраивает - то почему нет? ~~~ Можно обойтись одной таблицей Подзадачи. Т.е. двумя - исходная табличка "Задачи". Если создаются задачки (без подзадач) - то в нее пишем, как обычно. Если создает подзадача, то тоже пишем в нее, а также в табличку Подзадачи: Id - идентификатор задачи, SubTsk - идентификатор подзадачи. И все. Тогда, к примеру, чтобы выбрать все "большие" задачи, нужно выбрать все записи из "Задачи", для которых нет записей в "Подзадачи" с идентификаторами "Подзадачи".SubTSK = "Задачи".IdЗадачи. Уровень вложения подзадач в задачи - какой угодно глубокий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:03 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
А если таки добавить в таблицу "Задачи" поле "Parent_Task_ID", соответственно для подзадач здесь будет родительская задача, а для "набольших" - NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:49 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
ДимоГ, ты все правильно сделал. А что тебе посоветовали выше - полный бред. Есть сущность Задачи и есть сущность Подзадачи. Связь между ними многие ко многим (по твоему описанию). Такая связть однозначно реализуется через вспомогательную таблицу как ты и сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 00:12 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Че это бред? Чем задача отличается от подзадачи в сущностном плане? И какая разница как реализовать связь - в той же таблице или в другой таблице, если первую менять никак нельзя? Те же каталоги файловой системы так работают - у каждого есть ссылка на родительский, а у корня пусто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 15:51 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
NF Связь между ними многие ко многим (по твоему описанию). Такая связть однозначно реализуется через вспомогательную таблицу как ты и сделал. Не понятно, почему многие-ко-многим - из описания это видно. Если многим-ко-многим - то да, отдельная таблица, а если одни-ко многим - зачем плодить таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 15:58 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Виноват промахнулся - я хотел сказать "из описания не видно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 15:59 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
УмаксуманА если таки добавить в таблицу "Задачи" поле "Parent_Task_ID", соответственно для подзадач здесь будет родительская задача, а для "набольших" - NULL. Если в таблицу Подзадачи (наверное вы все же имели ввиду имено эту таблицу, ведь таблицу Задачи менять нельзя - раз, и еще это будет избыточность (для некоторых задач будет по 20 раз повторятся ее номер, наименование и т.п.), чего тоже нельзя делать - два) добавить еще поле, то мы получим так же избыточность, т.к. для каждой задачи придется указывать Наименование подзадачи. И если потребуется изменить Задачу 1 - "Подготовка к решительным действиям" на "Согласование параметров у высшего командования", то нам придется менять сотню или несколько сотен записей (можно запросом, но с точки зрения данного нам условия это недопустимо - избыточность). УмаксуманНе понятно, почему многие-ко-многим Ну если честно, то это мое предположение. Из описания задачи этого действительно четко не видно. Я просто усомнился, что может быть такое большое кол-во подзадач. Ведь для обеспечения всех задач (20.000) своими собственными подзадачами, последних должно быть очень много <= 400.000. P.S. Что хоть за фигня с форумом... Уже который раз мне пишут, что такой авто зарегестрирован, смените имя... Это что, из-за того, что я сразу много вкладок открыл в Опере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 21:05 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Во-первых, из описания не видно, что связь N:N. А во-вторых, из описания видно, что модифицировать структуру нельзя. Вот поэтому и вспомогательная табличка для организации связи. А то, что он ее назвал Подзадачи - это его дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 01:14 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Странно, чего ж вы тогда советуете, если даже не знаете какого типа там связь должна быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 12:22 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Вообще, связь между сущностями "Задачи" и "Подзадачи" должна быть 1:N, где 0<=N<=20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 17:27 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
Т.е. любая одна подзадача не может быть назначена сразу нескольким задачам? Тогда просто еще одну таблицу подзадач заводи, как предложили уже NextMan и Умаксуман. P.S. Во истину не мой сегодня день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 21:39 |
|
||
|
Изменение структуры БД
|
|||
|---|---|---|---|
|
#18+
NFТ.е. любая одна подзадача не может быть назначена сразу нескольким задачам? Может. Конечно, в том варианте, к-й я предложил изначально, связь между сущностями "Задача" и "Подзадача" N:N. Когда я писал про 1:N, думал об вариантах NextMan и Умаксуман (будь моя воля, я бы так и сделал. Но надо без избыточности - такое требование мне предъявили). В любом случае, спасибо Вам всем за Ваши советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 11:09 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34521303&tid=1544529]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
144ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 397ms |

| 0 / 0 |
