想象一下下表。就我而言,我完全确定name
需要unique
和not null
[unique+not null = 主键]。因此name
是主键。由于某些原因(可能是习惯),我很自然地创建了一个id
int 类型的主键列。
其他假设:我绝对需要保留name
在我的表中,并且我绝对确定name
(类型varchar
)永远不会超过 20 个字符。
现在我的第一个问题是[可能是肯定或否的接近问题]:如果我创建这样一个表,我是否尊重 BCNF Boyce-Codd 范式?
id
第二个可选问题[可能是开放式问题]:在这种情况下创建列是一种好习惯吗?
CREATE TABLE Y (
id int,
name varchar(20),
PRIMARY KEY(id, name)
);