[oodisc] MySQL vs PosgreSQL

Sergey Ustinov s_ustinov на mail.ru
Чт Мар 10 13:53:30 MSK 2005


> Недавно в этой рассылке краешком была затронута тема "На чём строить базу
> данных". И в одном из советов было сказано примерно следующее: "Если нужна
> внутренняя логика, то лучше PosgreSQL, если нет - MySQL".
> 
> Можно ли кратенько, для "чайников" раскрыть понятие "внутренняя логика" и
> привести пример задачи, легко и изящно решаемой благодаря ей  и нудно и
> геморройно без неё?   :)


Например, у тебя есть таблица "изделия" и таблица "составные части изделия". (Одному изделию соответствует одна или несколько записей в таблице составных частей). В таблице составных частей есть поле - процент цены. (например, есть изделие "велосипед", состоит из "руля" 10% "рамы" 35% и т.д.). То есть если ты продаешь велосипед за 100$, то на руль приходится 100*0,1=10, на раму 100*0,35=35 и т.д. И тебе надо контролировать, чтобы сумма процентов всегда составляла 100%.  Представь, что изменение этих таблиц производится как из интерфейса, так и напрямую SQL запросом. Чтобы контролировать такое условие, недостаточно наложить ограничение на атрибут (поле) - просто не получится. И если СУБД поддерживает триггеры (как, например, PostgreSQL), ты пишешь триггер, который при каждом обновлении таблицы "составные части изделия" проверяет, выполняется ли это условие, и если не выполняется - транзакция не проходит. В MySQL такое сделать нельзя - контроль на уровне программного кода (инте
 рфейса), и SQL запросы могут привести к нарушению логической целостности данных.

С уважением,
Sergey Ustinov


Подробная информация о списке рассылки Oo-discuss