首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在没有PK (MySQL)的情况下连接两个属性

如何在没有PK (MySQL)的情况下连接两个属性
EN

Database Administration用户
提问于 2019-10-19 07:45:28
回答 1查看 173关注 0票数 0

我是一个新的程序员,我正在用phpmyadmin在MySQL上做一个数据库。我对此表示怀疑--我知道,如果您想连接两个不同的表,您需要一个主键的属性,另一个是外键的属性。在这种情况下,我希望将一个普通属性从一个表链接到另一个表,如下所示:

表1:身份证(PK)、年龄、生日、姓名、收费;

表2: id( PK),部门,名称,费用(参考);

因此,例如,我可以将“电荷”值引入第一个表,然后,当我访问表2时,它将具有该值,因为它是一个调用PK的FK,或者在其他情况下,我可以将表1的PK与表2连接起来,这样我就可以像这样向它提供任何属性:

表1: id1 (PK),年龄,生日,姓名,费用;

表2: id2,id2 (FK),部门,名称,费用(参考);

有办法做这个吗?

EN

回答 1

Database Administration用户

发布于 2019-10-19 10:32:22

您是正确的,因为连接两个表的最常见方法是使用引用主键的外键。但这不是一项要求。SQL将对您希望在JOIN子句中使用的任何两列起作用(即语法正确),只要可以将这些列的类型强制设置为类似的类型。问题是,比较是否有意义(即语义正确)?

举个例子,你可以选择为不同的员工储存鞋码和智商。那么查询.. inner join .. on employee.shoesize = manager.IQ是一个语法正确的语句,但(很可能!)毫无意义。

还可以考虑一下连接两个表意味着什么。从概念上讲,这意味着您依次从第一个表中获取每一行,并将其与第二个表中的每一行组合起来。保留联接条件( "ON“子句)为true的合并行,并丢弃其为false的行。

回到你的特殊例子。表1.收费和表2的含义是否允许进行比较,并仍然满足系统的业务规则?表1.收费中的值是否足够独特,以确保只匹配那些要匹配的行?作为反例,如果所有费用都是标准金额,那么Table1中的每一行都将与Table2的每一行相匹配。

如果你能把这两个问题都回答为“是”,那就去回答吧。否则你就得重新设计了。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/251505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档