2017-02-01 12 views
1

Говоря о связях n-m в базе данных, часто упоминается таблица пересечений. . есть автоматы и книги, автор может иметь отношение ко многим книгам и наоборот.SQL: отношение n к m в базе данных с отношениями между одной таблицей

Но: Как я могу моделировать отношения, что авторы могут также иметь отношения между ними и книгами?

E.g. - Автор написал книгу 1 и 2 книги, и автор А друг Автор В. - Книга 1 относятся к тому же жанру, как книги 2.

У меня есть несколько таблиц пересечений тогда? . Стол «Отношения между авторами», «Автор» -Автор «Друг» -Отчетная таблица и книга «Жанр» Отношения?

Я новичок в отношении баз данных и SQL ... Спасибо за вашу помощь, Энн

+0

Таблица 1: Автор, Таблица 2: Книга и таблица3: Author_Book_Mapping –

+0

Как насчет картографии авторепортера и составления книжной книги? –

+0

отношение автора-автора через книгу? или вы хотите напрямую связать автора с другим автором (ами)? –

ответ

0

Чтобы создать простую связь отношения 1:n, достаточно указать один FOREIGN KEY -column, чтобы указать соответствующую запись.

Но если вы хотите смоделировать связь m:n, или вам может потребоваться добавить дополнительную информацию в отношения 1:n, вам понадобится таблица сопоставлений.

  • таблицы отображения с 1:n отношениями. Представьте, что книга может иметь ровно один текущий считыватель. Если вы используете FK CurrentReaderID в таблице Book, вы не сможете найти предыдущих читателей, как только вы измените значение FK.
  • отображение таблицы с m:n отношений: Подумайте о соотношении в качестве объекта по себе со своими собственными данными конкретных деталей (когда, validTo, CreatedBy ...)

И да: В хорошо спроектированной базе данных вы найдем множество таблиц с широкий спектр различных соотношений/отображений среди них.

0

Да, это довольно стандартный. Если книги могут иметь несколько жанров, таблица Book-Genre, содержащая Genre IDs с одной стороны и Book Ids от другого, вполне уместна. Отношение «автор-Друг» немного сложнее, так как таблица пересечений дважды присоединяется к таблице «Автор» (один раз для каждого автора в отношении автора-друга), но по сути то же самое.

Как вы определили, это то же самое, что и таблица Book-Author, которая связывает книги с их авторами на основе n: m.

Ищите примеры студентов-учителей, поскольку они похожи и часто являются частью объяснения n: m.