Я использую их как замену ORM. Я думаю, что до тех пор, пока вы не разбрасываете их повсюду через базу данных, их будет достаточно легко понять. Я определяю схему для приложения, и тогда все представления в этой схеме являются методами и операциями этого приложения. После этого клиентский код может быть в основном автоматизирован, поскольку представления дают абстракцию, необходимую для написания общего клиентского кода.
Люди отмечают, что переписывание правил не является реальной таблицей (но она изображается как одна), что позволяет писать вещи, которые могут сломаться. Это возможно, но я еще не сталкивался с этим. Идея состоит в том, чтобы скрыть сложность в перезаписи, а затем делать только простые удаления и обновлять с без объединений . Если выясняется, что требуется объединение - пришло время переписать правило, а не запрос верхнего уровня.
В конце я нахожу очень компактный способ написания базы данных. Все способы взаимодействия с ним написаны как правила. Ни одно соединение не должно иметь доступа к реальной таблице. Ваша бизнес-логика очень четкая. Если представление не имеет правила UPDATE, оно не может быть обновлено. Поскольку вы написали все это на уровне базы данных, а не на уровне клиента, это не связано с веб-фреймворком или конкретным языком. Это приводит к большой гибкости в том, как вы хотите подключиться к базе данных. Представьте, что вы использовали веб-фреймворк, но со временем вам нужен прямой доступ к базе данных для другого источника. Прямой доступ также обойдет все бизнес-правила ORM, над которыми вы так усердно работали. С интерфейсом записи правил, который вы можете выставить, интерфейс, не опасаясь, что новое соединение повредит данные.
Если люди говорят, что вы действительно можете ОБНОВИТЬ базу данных с ними - тогда, конечно, - конечно, вы можете. Но вы можете и со всем остальным тоже. Если бы люди сказали, что вы не можете использовать их вообще без всяких проблем, я бы не согласился.