Посмотрим на пример - книги. Книга может иметь 1..n авторов. У автора могут быть 1..m книги. Что представляет собой хороший способ представить всех авторов книги?
У меня возникла идея создать таблицу Books и таблицу авторов. В таблице Авторы есть первичный ключ AuthorID, имя автора. В таблице "Книги" есть основной идентификатор книги и метаданные о книге (название, дата публикации и т.д.). Однако должен быть способ связать книги с авторами и авторами с книгами. И здесь проблема.
Скажем, у нас есть три книги Боба. Однако в одной книге он написал это как Боб, доктор философии. Другой он написал как доктор Боб, а третий написал как доктор Роберт. Я хочу уметь идентифицировать тот факт, что эти авторы на самом деле являются одним и тем же человеком, но приписываются под разными именами. Я также хочу отличить Боба от другого Боба, который писал разные книги.
Теперь давайте добавим еще одну часть в приложение, таблицу Person, которая отслеживает интересных людей. И пусть говорят, что Боб - интересный человек. Я хочу не только сказать, что автор всех трех книг - Боб, но этот интересный Боб - тот же Боб, что и автор Боб.
Итак, какие существуют стратегии для такого потенциально сложного сопоставления, при том, что авторы книги идентифицируются по имени на обложке?