SQL. Отношения-проблемы между двумя таблицами. Ключ идет в обе стороны
Я пытаюсь добавить отношения между двумя простыми таблицами в SSMS на диаграмме. Проблема в том, что я хочу, чтобы таблица "Artwork" была основной таблицей, а таблица "Artist" - внешней таблицей. Но когда я перетаскиваю отношения между ними, ключи блокируют обе таблицы. И я не могу понять, почему?? Я просто хочу, чтобы он был заблокирован в одном направлении... И, как вы можете видеть на картинке, я также установил столбцы "ArtistID" в обеих таблицах в качестве первичных ключей.
2 ответа
Вы действительно хотите отношения один-к-одному между Artist и Artwork? Казалось бы, "один ко многим" имеет больше смысла (в этом случае один художник может быть связан со многими произведениями искусства, но произведение искусства может иметь только одного художника).
В этом случае вы должны добавить еще один столбец первичного ключа в таблицу Artwork (ArtworkID
например) и сделать ArtistID
в таблице Artwork внешний ключ для Artist.
Это может выглядеть так:
Вам нужно использовать составной ключ с художником и художественным произведением. Тогда ссылки будут работать. В настоящее время SSMS видит две таблицы в отношении "один к одному", так как они имеют одинаковый ключ. Это может быть идея ввести идентификатор обложки вместо использования имени и заголовка, если есть какая-либо возможность их изменения.