Mysql 具有3列的唯一键是否可以作为一对多关系的外键
我有一个典型的Mysql 具有3列的唯一键是否可以作为一对多关系的外键,mysql,sql,database-design,Mysql,Sql,Database Design,我有一个典型的一对多关系 目前,我有一个如下所示的SQL,两个表之间没有定义任何关系(my_table和commentstable): 它将返回注释计数以及my_表中的其他列 我想通过使用1-to-many关系来更正此SQL;从my_表(一个)到注释表(多个) 我该怎么做?请注意,上面的内部查询使用了三列 非常感谢示例SQL代码片段提示,谢谢 这三列在my_table中可能是唯一的,因此您可以将它们声明为主键: create table my_table ( . . . , pr
一对多
关系
目前,我有一个如下所示的SQL,两个表之间没有定义任何关系(my_table
和comments
table):
它将返回注释
计数以及my_表
中的其他列
我想通过使用1-to-many
关系来更正此SQL;从my_表
(一个)到注释
表(多个)
我该怎么做?请注意,上面的内部查询使用了三列
非常感谢示例SQL代码片段提示,谢谢 这三列在
my_table
中可能是唯一的,因此您可以将它们声明为主键:
create table my_table (
. . . ,
primary key (division, gl_account, document_number)
);
然后可以声明外键关系:
create table comments (
. . . ,
foreign key (division, gl_account, document_number) references my_table (division, gl_account, document_number)
);
这三列在
my_table
中可能是唯一的,因此您可以将它们声明为主键:
create table my_table (
. . . ,
primary key (division, gl_account, document_number)
);
然后可以声明外键关系:
create table comments (
. . . ,
foreign key (division, gl_account, document_number) references my_table (division, gl_account, document_number)
);
为什么它们“没有任何关系”,仍然在子查询WHERE子句中比较它们的列?我的意思是它们在逻辑上存储相同的数据。但是没有定义这样的约束,例如外键。为什么它们“没有任何关系”,仍然在子查询WHERE子句中比较它们的列?我的意思是它们在逻辑上存储相同的数据。但是没有定义这样的约束,例如外键。是否应该使用唯一键而不是主键?@Akshay如果它是唯一的,那么实现PK的问题是什么?@AkshayLokur。MySQL将只使用
键
——任何索引来识别外键引用。该标准规定了唯一
或主键
。但是你应该使用主键;外键引用是定义它们的主要原因之一。@GordonLinoff,有道理。PK已分配到另一列,我现在需要更改它。可以举例说明如何获得评论数吗?@AkshayLokur。错误的方法。使用第二个表中的主键。是否应该使用唯一的主键而不是主键?@Akshay如果它是唯一的,那么实现PK的问题是什么?@AkshayLokur。MySQL将只使用键
——任何索引来识别外键引用。该标准规定了唯一
或主键
。但是你应该使用主键;外键引用是定义它们的主要原因之一。@GordonLinoff,有道理。PK已分配到另一列,我现在需要更改它。可以举例说明如何获得评论数吗?@AkshayLokur。错误的方法。使用第二个表中的主键。