Я бы определенно не предложил № 1 по той причине, о которой вы говорили, и просто не имеет логического смысла.
Я бы предложил # 2 или эволюцию # 2.
Во-первых, мне интересно, почему вы хотите / должны делать это с AJAX - вопреки вашему окончательному утверждению, это, безусловно, возможно - но ваш упрощенный пример будет работать так же, как и простая отправка HTML-формы.
В любом случае, это зависит от того, как авторы созданы.Вы хотите разрешить пользователю создавать авторские записи одновременно или в дополнение к этому?(Я предполагаю последнее).
Если бы я занимался этим проектом, я бы, вероятно, хотел бы позволить пользователю создавать записи в книгах и выбирать из поля автозаполнения автора.Я также хотел бы позволить им создавать любые новые записи автора из этого поля.Например, если они введут имя автора, которого еще нет в таблице авторов, система создаст новую запись.
В случае, если запись автора еще не существует, вам потребуетсячтобы создать новый, который даст вам новый идентификатор автора.
После того, как вы получите свой идентификатор автора (либо из поиска по существующему, либо создав новый), вы можете создать свою запись в книге.,После того, как вы это сделаете, у вас будет идентификатор книги, после чего вы сможете добавить ссылку в BookAuthor.
Возможно, вы захотите обернуть все это в транзакцию, а затем зафиксировать после того, как запись BookAuthor будет выполнена.создал.
Возможно, вы захотите использовать столбцы автоинкремента для своих идентификаторов, и, возможно, вы захотите использовать ограничения внешнего ключа для столбцов идентификаторов при связывании с таблицей BookAuthor.
Все это в стороневы можете использовать AJAX для любого взаимодействия клиента с сервером - это всего лишь способ связи с сервером из браузера.