通常有两个以自动增量 ID 为主的表键。但是,创建第三个关系表来建立这两个表之间的关系通常会导致错误。这是因为要么只允许一个自动增量列,要么从初始表中删除自动增量会阻止由于类型匹配问题而创建外键。
解决一些基本的误解很重要:
关系表必须有行唯一,使用自增ID无法保证这一点主键。要创建关系表,我们需要确定一个真正的主键,该主键由唯一标识每一行的数据属性组成。
第 1 步:定义真正的主键
标识共同唯一区分每个表中的行的数据属性。对这些字段声明唯一约束,以防止重复行。
第 2 步:消除 ID 字段
一旦确保唯一行,多余的 ID 字段(及其支持索引)变得不必要,可以删除。
第 3 步:创建关联表
连接两个主表的第三个表应该具有由两个父表的主键组成的复合主键。这可以确保关联表中的行是唯一的。
假设我们有两个表:user 和 sport。为了建立它们之间的关系,我们创建第三个表 user_sport:
CREATE TABLE user ( user_name CHAR(16) NOT NULL PRIMARY KEY, name_first CHAR(30) NOT NULL, name_last CHAR(30) NOT NULL, birth_date DATE NOT NULL ); CREATE TABLE sport ( sport_code CHAR(4) NOT NULL PRIMARY KEY, name CHAR(30) NOT NULL ); CREATE TABLE user_sport ( user_name CHAR(16) NOT NULL, sport_code CHAR(4) NOT NULL, start_date DATE NOT NULL, PRIMARY KEY (user_name, sport_code), FOREIGN KEY (user_name) REFERENCES user (user_name), FOREIGN KEY (sport_code) REFERENCES sport (sport_code) );
在此示例中:
遵循这些原则,我们可以创建行唯一的关系表,保证数据完整性,避免使用自动生成的问题。递增的 ID 作为主键。
以上是如何正确创建没有自增ID的关系表?的详细内容。更多信息请关注PHP中文网其他相关文章!