在 SQL Server 上设置具有字符值的外键的最有效方法是什么?



所以我正在进行这个将使用SQL Server数据库的项目。

";主";该表有一个名为Hazard的列,该列的标准值保存在Hazard字典中。出于这个原因,我创建了一个包含这些危险值的表,主表将引用它

结构就是这样完成的:

CREATE TABLE main 
(
id INT IDENTITY(1,1) PRIMARY KEY,
hazard char(14) NOT NULL,
// other columns
FOREIGN KEY(hazard) REFERENCES hazards(id)
);
CREATE TABLE hazards
(
id CHAR(14) PRIMARY KEY,
// Hazard specification columns here
);

我不确定的部分是";重复";危险id。它被标准化为一个14个字符的字符串,所以我使用了CHAR类型。

我是否应该在hazard上生成id int IDENTITY(1,1) PRIMARY KEY,以便main上的外键是int类型?它真的提高了数据库的大小吗?

char(14((14字节(和int(4字节(之间的差异非常显著。使用标识列在排序方面也具有性能优势,因为排序顺序将基于记录期限和写入性能,因为如果您让SQL确定关键字,则不必检查每次插入危害的唯一约束。

对于您的用例,我认为这无关紧要,但一般来说,遵循最佳实践是明智的,使用标识列作为键是一个很好的习惯。

相关内容

最新更新