Klíč je jen normální index. Cestou přes zjednodušení je představit si to jako lístkový katalog v knihovně. Ukazuje MySQL správným směrem.
Jedinečný klíč se také používá pro zvýšení rychlosti vyhledávání, ale má omezení, že nemohou existovat žádné duplicitní položky (neexistují dvě x a y, kde x není y a x ==y).
Návod to vysvětluje následovně:
UNIQUE index vytváří omezení, takže všechny hodnoty v indexu musí být odlišné. Pokud se pokusíte přidat nový řádek s hodnotou akey, která odpovídá existujícímu řádku, dojde k chybě. Toto omezení se nevztahuje na hodnoty NULL kromě úložiště BDB. U jiných strojů povoluje aUNIQUE index více hodnot NULL pro sloupce, které mohou obsahovat NULL. Pokud zadáte hodnotu předpony pro sloupec v indexu UNIQUE, hodnoty sloupce musí být v rámci předpony jedinečné.
Primární klíč je „speciální“ jedinečný klíč. V podstatě je to jedinečný klíč, kromě toho, že se používá k identifikaci něčeho.
Příručka vysvětluje, jak se indexy obecně používají:zde.
V MSSQL jsou koncepty podobné. Existují indexy, jedinečná omezení a primární klíče.
Netestováno, ale věřím, že ekvivalent MSSQL je:
CREATE TABLE tmp (
id int NOT NULL PRIMARY KEY IDENTITY,
uid varchar(255) NOT NULL CONSTRAINT uid_unique UNIQUE,
name varchar(255) NOT NULL,
tag int NOT NULL DEFAULT 0,
description varchar(255),
);
CREATE INDEX idx_name ON tmp (name);
CREATE INDEX idx_tag ON tmp (tag);
Edit:výše uvedený kód je testován na správnost; mám však podezření, že na to existuje mnohem lepší syntaxe. Už je to nějaký čas, co jsem používal SQL server, a očividně jsem toho docela zapomněl :).