我很少看到野外使用的ENUM数据类型;显影剂几乎总是只是使用辅助表看起来像这样:SQL:ENUM与一对多关系的优点?
CREATE TABLE officer_ranks (
id int PRIMARY KEY
,title varchar NOT NULL UNIQUE);
INSERT INTO ranks VALUES (1,'2LT'),(2,'1LT'),(3,'CPT'),(4,'MAJ'),(5,'LTC'),(6,'COL'),(7,'BG'),(8,'MG'),(9,'LTG'),(10,'GEN');
CREATE TABLE officers (
solider_name varchar NOT NULL
,rank int NOT NULL REFERENCES officer_ranks(id) ON DELETE RESTRICT
,serial_num varchar PRIMARY KEY);
但是也可以使用用户定义的类型/ ENUM中所示的相同的事情:
CREATE TYPE officer_rank AS ENUM ('2LT', '1LT','CPT','MAJ','LTC','COL','BG','MG','LTG','GEN');
CREATE TABLE officers (
solider_name varchar NOT NULL
,rank officer_rank NOT NULL
,serial_num varchar PRIMARY KEY);
(实施例示出使用PostgreSQL ,但其他RDBMS的语法相似)
我看到使用ENUM的最大缺点是从应用程序中更新更加困难。而且它也可能会让一个习惯于使用SQL DB的无经验的开发人员简单地将其视为一个桶。
假设信息大多是静态的(工作日名称,月份名称,美国军队等级等),使用ENUM是否有优势?
Duplicate:http://stackoverflow.com/questions/2318123/postgresql-enum-what-are-the-advantages-and-disadvantages – 2010-12-21 18:16:06