LINUX.ORG.RU

[SQL] Автозаполнение полей - как правильно сделать?

 


0

1

Допустим, есть такие таблицы:

CREATE TABLE task_types (
    type_id INTEGER PRIMARY KEY AUTOINCREMENT,
    type_name VARCHAR(120)
);
CREATE TABLE tasks (
    task_id INTEGER PRIMARY KEY AUTOINCREMENT,
    task_brief VARCHAR(120) NOT NULL, 
    task_full TEXT,
    warn DATETIME NOT NULL,
    deadline DATETIME NOT NULL,
    task_type INTEGER FOREIGN KEY REFERENCES task_types(type_id)
        ON UPDATE CASCADE ON DELETE RESTRICT
);

Мне хочется каким-то образом создать «типовые» задачи, например, задачу типа «поход в магазин» нужно назначать на ближайшее воскресенье, а задачу типа «гигиеническая процедура» - на 6:30 утра и на 22:00 каждого вечера.

Как правильно подойти к этому? Какие-то чеки/дефолты в SQL или вынести в код приложения?

★★★★★

Последнее исправление: Hoodoo (всего исправлений: 1)
Ответ на: комментарий от trex6

Хм, вообще нет, хочется понаписать все возможные ограничения в БД, а потом создавать через специальную морду.

Просто параною.

Hoodoo ★★★★★
() автор топика
Ответ на: комментарий от trex6

Кажется, я понял.

Ограничения - в БД, плюшки - в код.

Так, сенсэй?

// ухожу, просветлённый

Hoodoo ★★★★★
() автор топика

Кстати в play framework мне подход нравится - там можно базу на этапе бутстрапа наполнить из yml файла с описанием класса модели и значением полей.

drakmail ★★★★
()
Ответ на: комментарий от drakmail

Так много где можно. Например в Catalyst, который я собираюсь пробовать.

Я могу ошибаться, но по-моему это вообще делается в ORM, а фреймворки пользуются уже их вариантом реализации.

Hoodoo ★★★★★
() автор топика
Ответ на: комментарий от drakmail

Но мне пока удобнее думать, расписывая SQL от руки, я только недавно с пальмы слез прочитал книжку с общим обзором возможностей SQL и пару статей по дизайну БД, до этого методом тыка всё делал.

Hoodoo ★★★★★
() автор топика
Ответ на: комментарий от drakmail

Head First SQL, O'Reilly Media. Несмотря на аляпистый дизайн и обилие ололокартинок, хорошая «вводная» для чайников. После неё хоть понятно, как запросы в гугл формулировать.

Ещё читал первые статьи из гугловыдачи по запросу Database design, несмотря на то, что там в основном про Access, правила касаются всех РСУБД.

Ну и ждёт своего часа SQL And Relational Theory, но это очень какое-то серьёзное чтиво, мне надо сначала азы этой самой Relational Theory подкачать.

Ещё вот тут хорошие вещи есть: http://db.grussell.org/

Hoodoo ★★★★★
() автор топика
Ответ на: комментарий от drakmail

Мне её кстати подарили, по результатам недоразумения с доставкой в Россию бумажных книг.

Hoodoo ★★★★★
() автор топика

Я бы создал таблицу с описанием правил, например «каждый день» или «ближайшее воскресенье», затем процедуру, которая по введённому диапазону дат делала бы запрос, попутно определяя даты событий по назначенным правилам и размножая повторяющиеся задания, и возвращала результат в виде таблицы. Конечному приложению оставалось бы только отобразить эту таблицу в красивом виде.

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Хм. Может быть, но получится хлопотно.

А есть где посмотреть на схему и запросы для такого?

Я думаю, я всё же буду обрабатывать это в приложении, потому что на самом деле правила будут несколько сложнее, и я расчитываю найти какую-нибудь перлобиблиотеку для работы с календарём (выходные-рабочие-праздники, пять рабочих дней, два банковских и прочая подобная дрянь).

Hoodoo ★★★★★
() автор топика

Например, можно для каждого случая сделать view и навесить на него триггер на insert.

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.