我将尝试通过一个例子来解释这种情况:
我有2个表A和B,它们之间是“一对多”关系,B由单个键(pk_B)标识,A由几个键(pk_A1和pk_A2)标识.因此,我们有两个表:
B(pk_B, attr1, attr2, attr3);
A(pk_A1, pk_A2, attr1, attr2, fk_B);
由于某些原因,A表中的fk_B可以是这对主键的一部分,因此主键为
pk_A1 + pk_A2 + fk_B.
有可能吗
如果我太普通了,我很抱歉.如果您愿意,我可以尝试通过一个具体的例子更清楚地说明情况.
更新:
例
我有两个表,“ Room”和“ Area”,处于“一对多”关系(1个房间,N个区域; 1个区域,1个房间).房间是建筑物的内部环境,由墙壁分隔;面积只是空间的一部分.
房间由一个主键(Room_ID)标识;区域由几个键标识:坐标_X坐标_Y.
为了给出更具体的示例,我添加了一个名为ID的第三个表,称为“对象”.一个对象可以放置在N个区域中,在一个区域中我可以放置一个对象.因此,我们有三个表:
Room (Room_ID, temperature, capacity)
Area(coordinate_X, coordinate_Y, dimension, FK_Room_ID, FK_Object_ID)
Object(Object_ID, name, weight, size)
现在,如果您想一想,我们有N个区域,则每个区域都可以通过坐标X&是,但是如果我们说在每个区域中都可以有一个对象,那么如果我在一个区域中放置一个对象并不意味着所有具有特定区域的房间都放置了一个对象,这不好;因为我需要区分区域X = 1&在房间A中Y = 1,而区域X = 1& A. Y =房间B中的Y = 1.因此,我必须做一个包含三个属性的主键:X坐标Y坐标房间ID(因此,当我将一个对象添加到区域时,我需要指定X坐标,即Y坐标和我要放置对象的房间).