Vytvořte zobrazení
Zobrazení zjednodušují přístup k datům a jejich prezentaci na SQL Serveru. Jako vývojář SQL vytvoříte zobrazení pro zapouzdření složitých dotazů, zajištění hranic zabezpečení a prezentování dat ve formátu, který odpovídá potřebám vaší aplikace.
Pochopení pohledů v SQL Serveru
Zobrazení je virtuální tabulka založená na SELECT příkazu. Na rozdíl od fyzických tabulek zobrazení neukládají samotná data. Místo toho načítají data z podkladových tabulek pokaždé, když se na ně dotazujete.
V zobrazeních můžete skrýt složitost JOIN klauzulí, výpočtů a filtrů z kódu aplikace. Pokud například vaše aplikace často potřebuje objednávky zákazníků s podrobnostmi o produktu, můžete vytvořit zobrazení, které se používá JOIN v tabulkách Zákazníci, Objednávky a Produkty. Vaše aplikace pak dotazuje jediné zobrazení, což eliminuje potřebu opakovaného zápisu složitého JOIN.
Zobrazení také poskytují vrstvu zabezpečení. Uživatelům můžete udělit přístup ke konkrétním sloupcům prostřednictvím zobrazení a zároveň omezit přístup k podkladovým tabulkám. Tento přístup umožňuje zpřístupnit pouze potřebná data uživatelům, aniž byste jim udělili úplný přístup k tabulce.
Vytvoření základního zobrazení
Zobrazení vytvoříte pomocí CREATE VIEW příkazu následovaného dotazem SELECT . Definice zobrazení určuje, jaká data se zobrazí při dotazu na zobrazení.
Tady je jednoduché zobrazení, které kombinuje informace o zákazníci a objednávce:
CREATE VIEW Sales.CustomerOrders
AS
SELECT
c.CustomerID,
c.CustomerName,
c.Email,
o.OrderID,
o.OrderDate,
o.TotalAmount
FROM Sales.Customers c
INNER JOIN Sales.Orders o ON c.CustomerID = o.CustomerID;
Po vytvoření tohoto zobrazení se na něj můžete dotazovat jako na libovolnou tabulku:
SELECT * FROM Sales.CustomerOrders
WHERE CustomerName = 'Contoso Ltd';
Zobrazení spustí podkladový příkaz SELECT a vrátí výsledky, jako by pocházely z jedné tabulky. Díky tomuto zjednodušení bude kód aplikace přehlednější a snadněji se udržuje.
Můžete také vytvářet zobrazení s počítanými sloupci. Následující zobrazení přidá sloupec, který kategorizuje objednávky podle velikosti:
CREATE VIEW Sales.OrderSummary
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount,
CASE
WHEN TotalAmount < 100 THEN 'Small'
WHEN TotalAmount < 1000 THEN 'Medium'
ELSE 'Large'
END AS OrderSize
FROM Sales.Orders;
Toto zobrazení zpracovává logiku kategorizace na jednom místě. Každý dotaz na OrderSummary získá stejný výpočet bez duplikování výrazu CASE .
Použití aspektů návrhu
Při navrhování zobrazení zvažte, jak se budou používat a udržovat. Dobře navržená zobrazení mají rovnováhu mezi jednoduchostí, výkonem a zabezpečením.
Zadejte názvy sloupců explicitně místo použití SELECT *. Explicitní sloupce usnadňují údržbu zobrazení a brání neočekávaným výsledkům při změně podkladových tabulek. Pokud někdo přidá sloupec do základní tabulky, definice zobrazení zůstane konzistentní:
CREATE VIEW Sales.ActiveCustomers
AS
SELECT
CustomerID,
CustomerName,
Email,
Phone
FROM Sales.Customers
WHERE IsActive = 1;
Klauzuli WITH CHECK OPTION použijte, když zobrazení budou zpracovávat úpravy dat. Tato možnost zajistí, že příkazy INSERT a UPDATE skrz zobrazení ovlivní pouze viditelné řádky v zobrazení:
CREATE VIEW Sales.HighValueOrders
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount
FROM Sales.Orders
WHERE TotalAmount > 1000
WITH CHECK OPTION;
Pomocí této možnosti nemůžete vložit objednávku s celkovým součtem 500 prostřednictvím zobrazení HighValueOrders. Databáze operaci odmítne, protože nový řádek nesplňuje podmínku WHERE zobrazení.
Zachovat definice zobrazení zaměřené na konkrétní účel Zobrazení, které se snaží sloužit více účelům, je často obtížné optimalizovat a pochopit. Vytvořte samostatná zobrazení pro různé případy použití místo vytváření jednoho složitého zobrazení.
Určení, kdy použít zobrazení
Pohledy vynikají v rámci specifických scénářů díky charakteristikám, které poskytují jasné výhody. Porozumění těmto scénářům vám pomůže zvolit pro každou situaci správný nástroj.
Zobrazení slouží ke zjednodušení složitých dotazů, které musí spouštět více aplikací nebo uživatelů. Místo toho, aby všichni pochopili složitost spojení pěti tabulek s konkrétními podmínkami, vytvořte zobrazení jednou. Tato centralizace také znamená, že logiku můžete optimalizovat nebo upravit na jednom místě.
Zvažte zobrazení, pokud potřebujete omezit přístup k datům na úrovni sloupce nebo řádku. Zobrazení může při skrytí citlivých informací zpřístupnit pouze sloupce vhodné pro roli. V kombinaci s příslušnými oprávněními umožňují zobrazení udělit přístup ke konkrétním datům bez vystavení celých tabulek.
Zobrazení dobře fungují pro prezentaci dat v různých formátech pro různé účely. Možná máte tabulku Products s technickými podrobnostmi, ale váš reportovací tým potřebuje zjednodušenou verzi s počítanými poli. Vytvořte zobrazení, které odpovídajícím způsobem transformuje a agreguje data.
Současně rozpoznáte, kdy jiné objekty slouží lépe. U dotazů kritických pro výkon, které vždy vrací stejné výsledky, uloží indexovaná zobrazení (materializovaná zobrazení) sadu výsledků fyzicky. U složitých výpočtů, které přijímají parametry, poskytují uživatelem definované funkce větší flexibilitu. Pro logiku úprav dat nabízejí uložené procedury lepší kontrolu.
Když potřebujete zapouzdřovat opakovaně použitelnou logiku dotazu bez parametrů a chcete jednoduše prezentovat data, jsou zobrazení vaším řešením. Překlenou mezeru mezi strukturou fyzické databáze a logickým zobrazením dat, která vaše aplikace potřebují.