|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Victor Wagner 2:5020/219.27 01 Dec 2000 11:19:03 To : Alex Korchmar Subject : Re: FreeBSD + MySQL = тапки? -------------------------------------------------------------------------------- From: vitus@wagner.rinet.ru (Victor Wagner) Alex Korchmar <Alex_Korchmar@p65.f423.n5020.z2.fidonet.org> wrote: AK> Hi Victor! AK> At Sun, 26 Nov 00 03:32:00 +0300 Victor Wagner <vitus@wagner.rinet.ru> AK> wrote: VW>>>> join-ов мешает. Сильно. И только с появлением PostgreSQL 7.0 - раньше VW>>>> там FOREIGN KEYS не было. А как же без них? AK>>> А как с ними? В смысле, расскажи мне, тупому, чем поддержка foreign keys AK>>> _базой_ тебе / юзеру поможет? VW>> Алекс, мне очень захотелось послать тебя читать, ну даже не Дейта, а AK> Алекс читал Дейта. Hо считает, что в реальной жизни принудительное AK> соблюдение ссылочной целостности скорее мешает, чем помогает. И попросил AK> тебя привести пример - тоже из реальной жизни - где именно в твоей софтине и AK> как это используется. В ответ получил еще на две страницы абстрактных AK> рассуждений. VW>> Мне она поможет тем, что при любых действиях пользователя база останется VW>> в консистентном состоянии без малейших на то моих (как программиста) AK> расскажи мне, темному, какие действия пользователя могут нарушить data AK> consistence в базе без foreign keys? Кроме действия "влез sql консолью AK> и поназаписал херни", разумеется. Твоя программа такие действия позволяет? AK> С чего бы это? И что происходит, когда в базе есть constrain'ы ? Программа Зачем падает? Exception ловит. AK> падает? Вытряхивает юзеру совершенно непонятные ему ошибки sql'я? Это есть. Все никак не соберусь прикрутить табличку расшифровки констрейнтов. AK> проверяешь, прежде, чем апдейтить базу, не нарушено ли условие? Логика AK> работы Hет, проще отвалить транзакцию. Либо по нарушению referential integrity, либо по возникновению исключения в каком триггере. Проверить условие, когда апдейт приводит к последовательному взлетанию трех-четырех триггеров, каждый из которых пишет в следующую таблицу, со своими триггерами и условиями - благодарю покорно. Этак каждый апдейт будет занимать минут несколько. AK> программы не позволяет такого в принципе? AK> В последних двух случаях ограничения (не только внешние ссылки, но и AK> любые другие - типичный пример - "not null") фактически нафиг не нужны, AK> ибо дублируются логикой программы. В остальных мы имеем не программу, AK> а какой-то полуфабрикат. По-моему правильный подход не "дублируются" а "анализируются" логикой программы. А система у меня и правда "полуфабрикат" - среда разработки. VW>> Мне как админу, реализация _всех_ ограничений целостности на уровне VW>> базы, поможет тем, что я могу влезть в свою базу sqlplus-ом, или с AK> если ты админ - то какого хрена ты лезешь руками в базу, не зная ее AK> структуры? А если зная - каким раком можно сделать такое? Структура базы она вещь динамическая и на ходу меняется. VW>> соседней виндовой машины MS-Query из Excel-я и все что угодно там VW>> менять. И база опять-таки останется в консистентном состоянии. AK> ага, только карточка с координатами клиента автоматически убьется, AK> потому что ее references что-то, что ты посчитал кривым и стер. Вот Если немножко думать при создании констрайта, то не убъектся, а как раз наоборот - не даст убить то, что посчитал кривым. И ты с удивлением узнаешь, что оказывается оно было нужно. AK> юзеры-то будут благодарны... По-моему, уж лучше поиметь "зависшую" AK> запись - ее хотя бы тем же макаром можно будет потом найти. AK> То есть, для чего нужны транзакции - я примерно представляю. А вот AK> ограничения лично мне полезны в двух случаях: для самодокументированности AK> кода (т.е. на самом деле мне плевать, если они останутся только на бумаге), AK> и для отладки недоотлаженного (тогда я и правда буду получать в морду sqlные AK> ошибки, и мне они будут полезны). AK> Hи то, ни другое не мешает отлаженную и оттестированную программу AK> эксплуатировать на базе без ограничителей. Мешает. То что я уже писал - что когда вставка/удаление в таблицу порождает цепочку каскадных действий, то делать их руками, гоняя эту информацию через сокет между сервером приложений и сервером бд, сложнее чем делать это внутри БД. В принципе, это просто принципиально разный подход к работе. Ты пишешь программу, которая что-то делает с данными. А я дизайню структуру данных, которая самоподдерживается, а потом привешиваю к ней некие интерфейсы. -- Turn right here. No! NO! The OTHER right! --- ifmail v.2.14.os-p7 * Origin: Where is your mouse [/dev/Wagner's home (2:5020/219.27@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/151784502307e.html, оценка из 5, голосов 10
|