Why do I need this attribute? This is my relational schema;

Book(title, shelfmark, ISBN, author, year)
Genre(name)
GenreBook(name, ISBN)
User(firstName, lastName, cardID)
UserBooks(cardID, ISBN, position)


Why do I need the position attribute in the last relation? It is a N-M relation but (ISBN, cardID) should be enough to identify a tuple. Maybe my user can have two books with the same ISBN?
I would guess that position is not really part of a relation, but rather an ordering key used to denote what book is the user's first, second, third and so on.

Or, like you say, it could be that a user can have multiple copies of a book, but that still wouldn't make position part of the relation, only of the primary key of UserBooks.

Or, a combination of the above two (ordering key and user can have multiple books).