有人可以解释外键约束和基数吗?我正在阅读SQLite手册,我在advanced foreign key constraint features的部分。在其解释中说:
父键和子键必须具有相同的基数。在SQLite中,如果有任何子键列(在本例中为songartist和 songalbum)是NULL,然后没有相应的要求 父表中的行。
我知道基数应该是一组中的值的数量,或者至少它是数学的,所以我假设如果我有十个人的记录,每个都有一个列性,那么男性和女性有两种可能性假设有一些男性和一些女性,基数是2 ...对吗?
我在谷歌搜索并没有找到太多。我发现最接近的是Visio 2003的Microsoft页面,其中有一节解释“About attributes, referential integrity, and cardinality”。它说:
关系的基数描述了一个记录中有多少记录 父表可以直接与子表中的记录相关。 基数用一对一,一对多, 多对一,或多对多。
这可能是一个非常好的描述,但我仍然不明白SQLite在说父母和子键必须具有相同基数时的含义。如果你能在答案中给出一些也有帮助的例子。感谢
答案 0 :(得分:4)
这是示例的表结构:
CREATE TABLE album(
albumartist TEXT,
albumname TEXT,
albumcover BINARY,
PRIMARY KEY(albumartist, albumname)
);
CREATE TABLE song(
songid INTEGER,
songartist TEXT,
songalbum TEXT,
songname TEXT,
FOREIGN KEY(songartist, songalbum) REFERENCES album(albumartist, albumname)
);
父表(album
)有一个复合主键,即主键由两列组成。
因此,如果子表想要引用相册,它也必须使用两列。
在这种情况下,父键和子键的基数都为2。