Представления уменьшают дублирование кода, потому что большая часть ориентированной на данные логики может быть инкапсулирована в представление во время определения. Полученные манипулированные данные могут быть доступны приложению без приложения, включая логику или даже не подозревая об этом.
Например, представьте представление OrderDetailsEx:
CREATE VIEW OrderDetailsEx
(OrderID, OrderDate, ProductID, Description,
UnitPrice, Quantity, ExtendedPrice, Tax, TotalPrice) AS
SELECT O.OrderID, O.OrderDate, D.ProductID, P.Description,
D.UnitPrice, D.Quantity, (D.Quantity * D.UnitPrice),
C.TaxRate, (C.TaxRate * D.Quantity * D.UnitPrice)
FROM Orders O
INNER JOIN OrderDetails D ON O.OrderID = D.OrderID
INNER JOIN Products P ON P.ProductID = D.ProductID
INNER JOIN Customers C ON C.CustID = O.CustID
Теперь приложение может выбирать записи из этой таблицы всякий раз, когда требуется информация о заказе. Нет необходимости кодировать расширение линии, расчет налога и логику соединения в приложении.
Если эта информация используется только в одном месте, это означает, что вы просто переместили логику из приложения в базу данных. Однако гораздо более вероятно, что использование этой информации будет разбросано и повторено по всему приложению - в модуле покупок, когда распечатываются счета, когда печатаются выписки, когда проверяются счета и так далее. Если это правда, то вы удалили всю эту дублированную логику и вставили ее в один декларативный оператор в базе данных.