У меня есть быстрый вопрос. Может ли таблица иметь только первичный ключ в качестве внешнего ключа?Может ли внешний ключ быть единственным первичным ключом
Чтобы уточнить. Когда я создавал таблицы, у меня иногда есть таблица с несколькими ключами, где некоторые из них являются внешними ключами. Например:
create table Pet(
Name varchar(20),
Owner char(1),
Color varchar(10),
primary key(Name, Owner),
foreign key(Owner) referecnes Person(Ssn)
);
Так вот мне интересно, если это возможно, чтобы сделать что-то вроде этого:
create table WorksAs(
Worker char(1),
Work varcahr(30),
primary key(Worker),
foreign key(Worker) references Person(Ssn)
);
Это приведет две таблицы, имеющие один и тот же первичный ключ. Этого следует избегать или это хороший способ разработки базы данных? Если выше не является хорошим стандартом, я бы просто превратил переменную Work как первичный ключ, и это было бы хорошо, но проще просто пропустить, если это не понадобится.
Я думаю, ваша таблица WorkAs должна быть реляционной таблицей. Это означает, что вы можете иметь таблицу с WorkPlaces, например, таблицу с Workers и таблицу WorksA, чтобы установить связь с Worker-> WorkPlace. В противном случае, почему бы вам не использовать одну и ту же таблицу (Рабочий) и добавить столбец с char Workplace? Но отвечая на ваш вопрос, да, вы можете его получить. –
Я бы сказал, это прекрасно. Однако ... Почему бы не переместить эти поля (в WorksAs) непосредственно в таблицу Person (там, где она может быть нулевой)? Еще одна таблица. Еще меньше. –
Прежде всего, это просто плохой пример, который я придумал, задав этот вопрос, потому что мне было легче объяснить, что я хотел знать. Во-вторых, причина, по которой я хотел знать это, был явным, я работал с заданием, в котором мы должны были высвечивать значения NULL из наших баз данных. Поэтому, если я поместил WorksAs в таблицу Person, у меня возникла бы проблема возможных значений NULL, которые я не хочу :) –