Czy SQL Server 2008 ma typ danych, taki jak MySQL enum
?
sql
sql-server
tsql
sql-server-2008
types
Patrick
źródło
źródło
enum
), podczas gdy gdyby używały odwołania FK do tabeli, wówczas te rzekomo statyczne wpisy wyliczenia mogą być modyfikowane w czasie wykonywania, co byłoby niepożądane (a SQL Server nie obsługuje koncepcji niezmienne tabele), wreszcie, jeśli masz wiele wyliczeń z tylko kilkoma wartościami, w końcu dodasz wiele tabel do bazy danych. Nie wspominając o dodatkowych odczytach IO ze względu na sprawdzanie ograniczeń FK podczas wstawiania / usuwania danych, podczas gdy aCHECK CONSTRAINT
jest znacznie szybszy i nie powoduje spamowania obiektów bazy danych.Najlepszym rozwiązaniem, jakie znalazłem w tym przypadku, jest utworzenie tabeli przeglądowej z możliwymi wartościami jako kluczem podstawowym i utworzenie klucza obcego do tabeli przeglądowej.
źródło
Tabele wyszukiwania IMHO to droga do zrobienia, z referencyjną integralnością. Ale tylko jeśli unikniesz „złych magicznych liczb”, postępując zgodnie z przykładem takim jak ten: Generowanie wyliczenia z tabeli wyszukiwania bazy danych przy użyciu T4
Baw się dobrze!
źródło
CREATE FUNCTION ActionState_Preassigned() RETURNS tinyint AS BEGIN RETURN 0 END GO CREATE FUNCTION ActionState_Unassigned() RETURNS tinyint AS BEGIN RETURN 1 END -- etc...
Tam, gdzie liczy się wydajność, nadal używaj twardych wartości.
źródło
Znalazłem to interesujące podejście, gdy chciałem zaimplementować wyliczenia w SQL Server.
Podejście wymienione poniżej w linku jest dość przekonujące, biorąc pod uwagę, że wszystkie potrzeby wyliczeń bazy danych mogą być zaspokojone przy użyciu 2 tabel centralnych.
http://blog.sqlauthority.com/2010/03/22/sql-server-enumerations-in-relational-database-best-practice/
źródło