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。错误的方法。使用第二个表中的主键。