我是一个新的程序员,我正在用phpmyadmin在MySQL上做一个数据库。我对此表示怀疑--我知道,如果您想连接两个不同的表,您需要一个主键的属性,另一个是外键的属性。在这种情况下,我希望将一个普通属性从一个表链接到另一个表,如下所示:
表1:身份证(PK)、年龄、生日、姓名、收费;
表2: id( PK),部门,名称,费用(参考);
因此,例如,我可以将“电荷”值引入第一个表,然后,当我访问表2时,它将具有该值,因为它是一个调用PK的FK,或者在其他情况下,我可以将表1的PK与表2连接起来,这样我就可以像这样向它提供任何属性:
表1: id1 (PK),年龄,生日,姓名,费用;
表2: id2,id2 (FK),部门,名称,费用(参考);
有办法做这个吗?
发布于 2019-10-19 02:32:22
您是正确的,因为连接两个表的最常见方法是使用引用主键的外键。但这不是一项要求。SQL将对您希望在JOIN子句中使用的任何两列起作用(即语法正确),只要可以将这些列的类型强制设置为类似的类型。问题是,比较是否有意义(即语义正确)?
举个例子,你可以选择为不同的员工储存鞋码和智商。那么查询.. inner join .. on employee.shoesize = manager.IQ
是一个语法正确的语句,但(很可能!)毫无意义。
还可以考虑一下连接两个表意味着什么。从概念上讲,这意味着您依次从第一个表中获取每一行,并将其与第二个表中的每一行组合起来。保留联接条件( "ON“子句)为true的合并行,并丢弃其为false的行。
回到你的特殊例子。表1.收费和表2的含义是否允许进行比较,并仍然满足系统的业务规则?表1.收费中的值是否足够独特,以确保只匹配那些要匹配的行?作为反例,如果所有费用都是标准金额,那么Table1中的每一行都将与Table2的每一行相匹配。
如果你能把这两个问题都回答为“是”,那就去回答吧。否则你就得重新设计了。
https://dba.stackexchange.com/questions/251505
复制