Последние полтора месяца был занят в одном ужасном проекте.
Взялся я за него по дружбе - товарищ попросил. Задача выглядела совершенно невинно: доделать сайт. Сайт был построен на базе самописной CMS. Довольно-таки примитивненькая, но со встроенным шаблонизатором и защитой на уровне Zend. Сперва убивало полное отсутствие какой-либо документации и закрытое ядро. Товарища не всегда можно было выловить в аське. Ну, за неделю я ее освоил. А потом пошли сплошные разочарования.
ТЗ небыло. Совершенно. Задачи ставились в произвольном порядке, общей картинки проекта я не видел. Словаря терминов небыло, а задачи писались далеко не программистом (хоть, потом, и правились программистом). Срок выполнения был рассчитан до меня и без меня. И достаточно жесткий.
Но все эти проблемы блекли на фоне структуры БД! Структура у базы была просто кошмарная, а времени на переделку уже небыло. Никогда больше я не возьмсь за проект с такой ужастной структурой базы! Стрктура строилась по мере развития проекта (т.е. в начале никто не задался целью нормально ее спроектировать), и по ходу развития происходила ее оптимизация. То есть, база изначально не была приведена к НФБК, а со временем стала скопищем таблиц с огромной дубликацией информации и кучей самых странных связей. Больше всего меня добивали 2 таблицы. Они были связанны по ключам. 1-я, находящаяся на более высоком уровне иерархии, отвечала за товары. Точнее - за упаковки. В 90% случаем в упаковке содержится только 1 товар. Но есть 10%, когда в упаковке может быть несколько товаров. 1-я таблица подразумевала, что понятия товара и упаковки связанны отношением 1-к-1. Однако, если в одном из полей записи о товаре тояло логическое значение "Истинна" следовало к уже обозначенному товару добавить все записи из 2-й таблицы, связанные по внешнему ключу.
Это приводило к тому, что вместо элегантных SQL-запросов мне приходилось городить циклы на PHP и для каждой "особенной" упаковки делать дополнительную выборку данных. И на этот "камушек" я натыкался постоянно. Буквально каждый день.
И все бы ничего: работа окончена, заказчик доволен, деньги в кармане. Но нет! Заказчик решил развивать этот проект!
Одно радует: сроки теперь устанавливаю я.
Взялся я за него по дружбе - товарищ попросил. Задача выглядела совершенно невинно: доделать сайт. Сайт был построен на базе самописной CMS. Довольно-таки примитивненькая, но со встроенным шаблонизатором и защитой на уровне Zend. Сперва убивало полное отсутствие какой-либо документации и закрытое ядро. Товарища не всегда можно было выловить в аське. Ну, за неделю я ее освоил. А потом пошли сплошные разочарования.
ТЗ небыло. Совершенно. Задачи ставились в произвольном порядке, общей картинки проекта я не видел. Словаря терминов небыло, а задачи писались далеко не программистом (хоть, потом, и правились программистом). Срок выполнения был рассчитан до меня и без меня. И достаточно жесткий.
Но все эти проблемы блекли на фоне структуры БД! Структура у базы была просто кошмарная, а времени на переделку уже небыло. Никогда больше я не возьмсь за проект с такой ужастной структурой базы! Стрктура строилась по мере развития проекта (т.е. в начале никто не задался целью нормально ее спроектировать), и по ходу развития происходила ее оптимизация. То есть, база изначально не была приведена к НФБК, а со временем стала скопищем таблиц с огромной дубликацией информации и кучей самых странных связей. Больше всего меня добивали 2 таблицы. Они были связанны по ключам. 1-я, находящаяся на более высоком уровне иерархии, отвечала за товары. Точнее - за упаковки. В 90% случаем в упаковке содержится только 1 товар. Но есть 10%, когда в упаковке может быть несколько товаров. 1-я таблица подразумевала, что понятия товара и упаковки связанны отношением 1-к-1. Однако, если в одном из полей записи о товаре тояло логическое значение "Истинна" следовало к уже обозначенному товару добавить все записи из 2-й таблицы, связанные по внешнему ключу.
Это приводило к тому, что вместо элегантных SQL-запросов мне приходилось городить циклы на PHP и для каждой "особенной" упаковки делать дополнительную выборку данных. И на этот "камушек" я натыкался постоянно. Буквально каждый день.
И все бы ничего: работа окончена, заказчик доволен, деньги в кармане. Но нет! Заказчик решил развивать этот проект!
Одно радует: сроки теперь устанавливаю я.