Нужна помощь в проектировании БД

Модератор: Модераторы разделов

Аватара пользователя
blackst0ne
Сообщения: 528
Статус:
ОС: Ubuntu 9.04

Нужна помощь в проектировании БД

Сообщение blackst0ne »

Всем привет.

Возникла проблема при проектировании БД. Нужен совет людей, которые понимают в этой теме лучше меня. =)

Для простоты я убрал много информации, оставив лишь малую часть.
Итак, есть некие задачи. Задачи могут иметь время начала и завершения выполнения, а могут и не иметь - это всё зависит от пользователя.

Проблема заключается в следующем: создавать ли отдельную таблицу для задач, у которых известно время начала и завершения выполнения, или всё писать в одну таблицу.

Всё в одной таблице:
Задачи
  • код задачи
    • заголовок задачи
    • описание задачи
    • выполнена ли задача
    • дата выполнения задачи
    • время начала выполнения задачи
    • время завершения выполнения задачи


  • Задачи в разных таблицах:
    Задачи
    • код задачи
      • заголовок задачи
      • описание задачи
      • выполнена ли задача
      • дата выполнения задачи

    • -------------------------
      Задачи с известным временем
      • код задачи (FK)
        • время начала выполнения задачи
        • время завершения выполнения задачи



  • Я читал про нормализацию, но так и не понял, как правильнее будет сделать. Важным моментом является то, что типов задач будет минимум 4. То есть отдельно 4 таблицы создавать под каждый тип задачи или всё писать в одну таблицу, где будут всегда какое-то количество пустых полей?

    Спасибо.
  • Администрация! Пожалуйста, добавьте птичку "решено", а также соответствующую кнопку на ajax'е в теме (подробнее здесь).
    Спасибо сказали:
    NickLion
    Сообщения: 3408
    Статус: аватар-невидимка
    ОС: openSUSE Tumbleweed x86_64

    Re: Нужна помощь в проектировании БД

    Сообщение NickLion »

    Я бы делал одну таблицу, в которой время начала и окончания могут принимать значение NULL. Дополнительные таблицы будут связаны с основной по принципу один-к-одному, в данном случае, ИМХО, излишне.
    Не понял, почему дополнительных таблиц 4, так как Вы разделили, получается таблица заданий и таблица начала и конца, ну для задач без начала с концом и с началом без конца еще 2 дополнительных. Но Вы с этим только намучаетесь. И память особо не сэкономите (если вообще сэкономите).
    Спасибо сказали:
    Аватара пользователя
    blackst0ne
    Сообщения: 528
    Статус:
    ОС: Ubuntu 9.04

    Re: Нужна помощь в проектировании БД

    Сообщение blackst0ne »

    NickLion писал(а):
    05.07.2009 10:15
    Я бы делал одну таблицу, в которой время начала и окончания могут принимать значение NULL. Дополнительные таблицы будут связаны с основной по принципу один-к-одному, в данном случае, ИМХО, излишне.
    Не понял, почему дополнительных таблиц 4, так как Вы разделили, получается таблица заданий и таблица начала и конца, ну для задач без начала с концом и с началом без конца еще 2 дополнительных. Но Вы с этим только намучаетесь. И память особо не сэкономите (если вообще сэкономите).

    Я для упрощения привёл пример только с двумя таблицами. На самом деле параметров больше, соответственно и разделить можно будет не на 2 таблицы как в данном примере, а на 4 как минимум. Ну это не суть. Просто хочу узнать, как лучше: делить или не делить. =)
    Администрация! Пожалуйста, добавьте птичку "решено", а также соответствующую кнопку на ajax'е в теме (подробнее здесь).
    Спасибо сказали:
    NickLion
    Сообщения: 3408
    Статус: аватар-невидимка
    ОС: openSUSE Tumbleweed x86_64

    Re: Нужна помощь в проектировании БД

    Сообщение NickLion »

    В том примере, что привели - лучше не делить. Только мучений будет больше.
    Спасибо сказали:
    mix1m
    Сообщения: 187
    ОС: openSUSE 11.2

    Re: Нужна помощь в проектировании БД

    Сообщение mix1m »

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