Použijte uuid . PostgreSQL má nativní typ z nějakého důvodu.
Interně ukládá uuid jako 128bitové binární pole. Vaše další navrhované možnosti jej ukládají jako hexadecimální, což je ve srovnání velmi neefektivní.
Nejen to, ale:
-
uuidprovádí jednoduché řazení po byte pro objednávání.text,charavarcharzvažte kolace a národní prostředí, což je pro uuid nesmyslné. -
Existuje pouze jedna kanonická reprezentace
uuid. Totéž neplatí pro text atd.; musíte vzít v úvahu velká a malá hexadecimální písmena, přítomnost nebo nepřítomnost{...-...}s atd.
Není tu žádná otázka. Použijte uuid .
Jediný další typ, který dává smysl, je bytea , který lze použít alespoň k přímému uložení 16 bajtů uuid. To je to, co bych udělal, kdybych používal systémy, které si neumí poradit s datovými typy mimo základní sadu, jako opravdu hloupé ORM nějakého druhu.