Создание отношений между таблицами - PullRequest
3 голосов
/ 08 октября 2010

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

Если я хочу, чтобы таблица A имела отношение 1: 1 с таблицей B в определенном столбце, следует ли мнекаким-то образом изменить оператор CREATE TABLE, чтобы идентифицировать это отношение, или это что-то, что вообще не выполняется (а скорее обрабатывается логикой)?

EDIT
Вторая частьмой вопрос: какой смысл встраивать это в код?почему бы просто не обрабатывать это логически при выборе / обновлении?

Ответы [ 3 ]

5 голосов
/ 08 октября 2010

Все, что вам нужно сделать, это иметь столбец в таблице A, который будет внешним ключом первичного ключа таблицы B:

create table TableB (
    Id int primary key identity(1,1),
    Name varchar(255))

create table TableA (
    Id int primary key identity(1,1),
    Name varchar(255),
    TableBRelation int unique,
    foreign key (TableBRelation) references TableB (Id))

SQL может быть не идеальным, но вы должны быть в состоянии понять идею.

Что касается того, почему вы хотите сделать это в базе данных, а не просто в логике приложения:

  • Другие базы данных или разработчики могут попытаться получить доступ к вашей базе данных. Вы хотите, чтобы они могли создавать недействительные данные, которые могут сломать ваше приложение? Нет. Это одна из точек ссылочной целостности.

  • В какой-то момент кому-то придется поддерживать ваше приложение. Определение ключей на уровне базы данных будет четко определять отношения между вашими данными, а не требовать, чтобы разработчик копал код вашего приложения.

1 голос
/ 08 октября 2010

Вы можете установить внешний ключ и добавить ограничение, чтобы он был уникальным.Это установит соотношение 1: 1 между вашими таблицами.

1 голос
/ 08 октября 2010

Чтобы создать отношение 1: 1, просто сделайте столбец таблицы B внешним ключом или уникальным.Это гарантирует, что в таблице B может быть только один столбец, соответствующий полю PK в таблице A, и таким образом вы эффективно получите соотношение 1: 1 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...