我如何创建要交叉连接的表,以便它们都与member_num连接

问题描述 投票:0回答:1

我的目的是使用这三个表并将它们共享在一起,因为它们共享一个外键(member_num)。我使用了自动增量,因此某些时候它不在我的代码中。

志愿者表:

create Table Volunteer(
member_num int not null auto_increment primary key,
firstname varchar(20) not null,
lastname varchar(20) not null,
dateofbirth date not null,
methodology varchar(40) not null,
langspoken varchar(10) not null default 'English',
langread varchar(10) not null default 'English'
);

语言表(读取)

create Table VolunteerRead(
    member_num int auto_increment primary key,
    lang varchar(50) default 'English'
);

语言表(说)

create Table VolunteerSpeak(
    member_num int auto_increment primary key,
    lang varchar(50) default 'English'
);

我正在努力并不确定如何将它们全部连接到一个表中,因为稍后我将对它们进行特定的查询。

如果有人可以帮助我,我不确定是否需要使用联接或外键。

任何帮助,一切顺利。

mysql sql foreign-keys ddl create-table
1个回答
0
投票

在我看来,您没有为用例使用适当的数据结构。 member_num是所有三个表上的自动递增键,因此实际上无法将它们关联起来。

相反,您希望表volunteer_readvolunteer_speak中的外键引用volunteer的主键(并且您可以在这些表中具有代理主键):

create table volunteer_read(
    id int auto_increment primary key
    member_num int references volunteer(member_num),
    lang varchar(50) default 'english'
);

create table volunteer_speak(
    id int auto_increment primary key
    member_num int references volunteer(member_num),
    lang varchar(50) default 'english'
);
© www.soinside.com 2019 - 2024. All rights reserved.