Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql FK还是FPK?关系数据库_Mysql_Database_Relational - Fatal编程技术网

Mysql FK还是FPK?关系数据库

Mysql FK还是FPK?关系数据库,mysql,database,relational,Mysql,Database,Relational,我有一个问题,我在网上找不到答案。 这是关于数据库设计的 FPK和FK的区别是什么? 我知道PK 但我不完全理解FK/FPK键的概念,无论何时我们有FK或FPK。我猜你指的是外键和主键。 下面是一篇有趣的文章,解释了关键点: 当您有一个1:1相关的表,但主表中的每条记录都没有相关记录时,可以使用外键主键 例如: 假设您有一个包含信息的表T1,并且您有一些记录的唯一信息记录,但不是所有记录都在T1中 因此,您决定将数据存储在另一个表T2中,以避免出现包含数百个空单元格的列 由于这些是唯一的记录(

我有一个问题,我在网上找不到答案。 这是关于数据库设计的

FPK和FK的区别是什么? 我知道PK


但我不完全理解FK/FPK键的概念,无论何时我们有FK或FPK。

我猜你指的是外键和主键。 下面是一篇有趣的文章,解释了关键点:

当您有一个1:1相关的表,但主表中的每条记录都没有相关记录时,可以使用外键主键

例如: 假设您有一个包含信息的表T1,并且您有一些记录的唯一信息记录,但不是所有记录都在T1中

因此,您决定将数据存储在另一个表T2中,以避免出现包含数百个空单元格的列

由于这些是唯一的记录(T1和T2之间为1:1),T2可以拥有自己的主键和外键,或者使用外键作为主id(T2.T1_id)将它们组合成一个字段:

没有“FPK”(外键?)。你这是什么意思?你认为为什么会有一个?那么“FK”(外键)是什么意思?你在用什么学术(组织/个人)教材

在关系模型中(但不是SQL):超级键是一组具有唯一值的列。(SQL
UNIQUE NOT NULL
column set。)CK(候选键)是不包含较小超键的超键。PK是你决定称之为PK的某个CK。FK引用任何CK,而不仅仅是PK(主键)。它表示列列表的子代码值必须在其他地方显示为CK列列表的子代码值


在SQL中:
FK
声明声明一个外部超键,即它引用一个超键,即一个SQL
UNIQUE NOT NULL
列列表。只有当它引用的超级键实际上是CK(可能是PK)时,它才实际声明FK,即实际上是一个不包含较小超级键的超级键,ie是一个
UNIQUE NOT NULL
PK
不包含更小的
UNIQUE NOT NULL
PK

我仍然没有完全理解外键的概念:/n没有“FPK”。你这是什么意思?你认为“FK”是什么?你使用的参考教材是什么?请看我的答案。
CREATE TABLE `T1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `T2` (
  `T1_id` int(11) NOT NULL,
  `specinfo` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`T1_id`),
  CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`T1_id`) REFERENCES `T1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);