我正在创建一个新的数据库表,用于存储产品图片。我想确定图片中代表的产品“类型”。假设我们有所有产品的 3 个一般类别:
我最好创建 3 个布尔列is_table
、is_chair
、 和is_lamp
?
或者我最好创建一个枚举,然后为该枚举使用单个列:
CREATE TYPE product_type AS ENUM ('table', 'chair', 'lamp' );
Run Code Online (Sandbox Code Playgroud)
(请注意,对于我们存储的工程产品图片,可以保证产品/图片永远不会符合 2 种类型。它必须始终是 1 种非常具体的类型。)
您应该对此进行规范化并创建一个参考表,这样您就可以为类型指示器使用简单的数据类型,并且如果您需要添加类型,也可以作为未来的证明。它还使查询更容易,而且这种结构将保持每个产品一次只能是一种类型的约束。
所以(假设这是一个 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)