数据库中的键、主码、主键是什么意思?

嘿嘿,我们来说说数据库里的事情吧。
主键、候选键和外键的概念其实很有趣。

我记得曾经参与过一个优化电子商务平台数据库设计的项目。
当时我以为这个主码就像每个人的身份证号码一样。
它是唯一的,不能重复,不能为空。
为此,有必要首先了解候选键的概念。
简单来说,候选键是一个可以唯一标识一条记录的字段或字段组合。
例如,在学生表(Student)中,学号可以唯一标识一个学生,那么它就是一个候选键。
然而,如果删除学号,则可能无法单独清楚地确定名称或部门,因此它不是候选键。

有趣的是,可以有多个候选键,但只能选择一个主键。
这就像选举代表一样,你必须确定优先顺序。
比如学生表中,学号旁边可能有一个ID号,也可以作为候选键,但最终只能选一个作为主键。

然后我们需要谈谈外键。
这就像不同形式之间的桥梁。
例如,学生表中的部门(d)不是学生表的主键,而是部门表(dep)的主键。
这意味着可以使用外键将 Student 表中的部门链接到 Department 表。

例如,学生表(student)和系表(dep)的关系中,student表中的系号(d)是连接两个表数据的外键。
这样我们就可以通过student表找到对应学生的院系信息。

因此,理解这些概念对于数据库设计和维护非常重要。
它们就像数据库中的规则一样,确保数据的完整性和一致性。
这让我想起了当时的项目。
优化数据库设计后,系统性能确实得到了提升,用户体验也好很多。
这就是数据库设计的吸引力。

数据库中主键、主码、主属性、关键字、候选关键字、码的区别

说白了,代码和数据库中的字段类型是两个不同的东西,但是正确选择可以省去很多麻烦。

主要代码是“身份证号”,可以唯一勾勒出一条记录,比如用户表的手机号码。
候选代码是备用 ID 号,但您最终必须选择一个作为主要代码。
代码是可以唯一标识一个实体的东西。
不要将其与字段类型混淆:例如,手机号码主代码在保存时可能是 VARCHAR2 类型。
去年我们运行了该项目,并在选择主代码时使用了 ID 号。
我们发现,使用生日+姓名组合作为候选代码也有效,但查询效率差了3 0%。
很多人没有注意到这一点。

对于字段类型,CHAR和VARCHAR2 是老搭档了。
前者长度固定,节省空间,但浪费空间。
后者灵活,节省空间,但查询速度较慢。
去年运行3 000个项目时,我使用VARCHAR2 作为用户名,节省了大约2 0%的存储空间。
不过,NCHAR 和 NVARCHAR2 是国际版本,适用于多语言环境。
例如,如果系统需要支持俄语,只需使用这两个即可。
还有一个细节非常重要。
LONG 和 LONGRAW 基本上不再使用。
4 G容量够用吗?说实话,这很令人困惑。

一开始我觉得DATE类型不错,但是发现欧洲的日期格式是DD/MM/YY,使用标准格式很容易出问题。
后来我发现不对劲。
我必须使用带有时区的 TIMESTAMP 类型。
后来我发现他们实际上使用的是ISO 8 6 01 标准。
等等,还有一件事。
BLOB和BFILE适合存储图像,但不要用它们存储配置文件。
查询执行速度太慢。

建议主代码选择最稳定的属性,字段类型根据实际需要而定,不要随意累加。