Как мне создать таблицы для перекрестного объединения, чтобы они все соединялись с member_num - PullRequest
1 голос
/ 07 апреля 2020

Моя цель - использовать эти три таблицы и соединить их все вместе, так как они совместно используют внешний ключ (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'
);

Language Table (Speak)

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

Я изо всех сил и не знаю, как соединить их все в одну таблицу, так как я буду выполнять определенные c запросы с ними позже.

Если кто-нибудь может помочь мне, я не уверен, если мне нужно использовать соединение или внешний ключ.

Любая помощь помогает, всего наилучшего.

1 Ответ

0 голосов
/ 07 апреля 2020

Мне кажется, что вы не используете правильную структуру данных для своего варианта использования. member_num - это автоинкрементный ключ для всех трех таблиц, поэтому фактически невозможно связать их.

Вместо этого вам нужны внешние ключи в таблицах volunteer_read и volunteer_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'
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...