所以我正在进行这个将使用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确定关键字,则不必检查每次插入危害的唯一约束。
对于您的用例,我认为这无关紧要,但一般来说,遵循最佳实践是明智的,使用标识列作为键是一个很好的习惯。