我应该创建枚举还是单独的标志?

Sté*_*ane 2 database-design

我正在创建一个新的数据库表,用于存储产品图片。我想确定图片中代表的产品“类型”。假设我们有所有产品的 3 个一般类别:

  • 桌子,
  • 椅子,
  • 和灯。

我最好创建 3 个布尔列is_tableis_chair、 和is_lamp

或者我最好创建一个枚举,然后为该枚举使用单个列:

CREATE TYPE product_type AS ENUM ('table', 'chair', 'lamp' );
Run Code Online (Sandbox Code Playgroud)

(请注意,对于我们存储的工程产品图片,可以保证产品/图片永远不会符合 2 种类型。它必须始终是 1 种非常具体的类型。)

dru*_*zin 7

您应该对此进行规范化并创建一个参考表,这样您就可以为类型指示器使用简单的数据类型,并且如果您需要添加类型,也可以作为未来的证明。它还使查询更容易,而且这种结构将保持每个产品一次只能是一种类型的约束。

所以(假设这是一个 Oracle 数据库):

   Create table Product_types 
   (id int,
    name varchar2(100),
    constraint pk_product_types primary key  (id)
    );

create table products 
    (id int, 
     product_type int, 
     somecolumn varchar2(100),
     anothercolumn varchar2(100),
     somedatecolumn date,
     constraint fk_products_product_type foreign key (product_type) references product_types(id)
     );
Run Code Online (Sandbox Code Playgroud)