Давай по порядку.
Брось пока JoinSource. Это для связанного отображения связанных таблиц на одной форме.
Есть такая вещь - Extended Data Type. С ее помощью лучше связи и устанавливать (вообще, мой совет - используй Relations только в том случае, если по каким-то причинам не можешь организовать связь через EDT). У каждого поля в таблице есть такое свойство - Extended Data Type. В случае, если ты будешь использовать это свойство, поле сможет принимать значения только указанного типа. Далее, на тип можно наложить ограничение (или связь). В AOT у EDT есть ветка Relations. Там ты можешь связать тип с каким-то полем какой-то таблицы. После установки связи будет считаться, что множество значений типа - множество значений этого поля в записях указанной таблицы.
В твоем случае:
Readers
- ReaderId (тип ReaderId)
- ReaderName
- ...
Libraries
- LibraryId (тип LibraryId)
- LibraryName
- ...
ReaderCards
- ReaderId (тип ReaderId)
- LibraryId (тип LibraryId)
- ...
На типы надо указать следующие relation:
- ReaderId = Readers.ReaderId
- LibraryId = Libraries.LibraryId
Удачи.