how any database engine would able to differeniate two otherwise identical junction record without such primary key.
The more direct question is whether you NEED to differentiate them. But don't forget that DATE was one of the elements mentioned.
I'd imagine this would be a big performance hit as we are forcing Access to somehow resolve the duplicate entries back to their original records
Banana, look at it this way. Inventory database has transactions saying "today I took out 20 left-handed doomiflangers" and on a different date, "today I took out 20 left-handed doomiflangers." So... if you need to know the difference, look at the date. If not, just sum the records to know that you have so far checked out 40 left-handed doomiflangers. But here is the question that governs whether EACH TRANSACTION needs a PK. Will there be a series of child records at a lower level of the hierarchy? Or are the transaction records the bottom of the food chain?
See, normally you need a PK on a table because you need to tag its children in a one/many relationship. But if there can BE no children, the tag is a waste of space because there will be nothing "below" the detail recordes to which a parental reference is required. Elementary transactions are, by their nature, exactly such a situation. Now, you MIGHT have differentiable parent records to these transactions - such as, say, an invoice number that leads back to two different invoices for two otherwise similar stock transactions. And at some point you will be able to say "because of the invoice numbers I can tell these transactions apart."
It comes back to this question: Will you need to differentiate between two records of a similar nature? In my experience, for the elementary level of DB transactions that was the subject of the original question, the answer is "I doubt it." (Not "Certainly you will not" - because there is always doubt.)
If you fear duplicate entries then you need to take steps to assure that the duplicate cannot be made. BUT setting an autonumber PK
doesn't do that. You'll get a different autonumber and make the otherwise duplicate entry anyway. What I'm saying is that for autonumbered PK, you need to assure externally to the table that you won't duplicate the entry. And once an improper duplicate has been entered, you'll have one HELLUVA time seeing that it was really a duplicate and not the same customer making two similar orders on the same day. So knowing that the entry is or is not a duplicate once it's in the table isn't the issue. You prevent that by checking the invoice number and date, or other surrouding records that lead back to the transactions in question.
In the case you seem to worry about, why do I care which is which?
Oh, sure, you can imagine cases where you really need to distinguish between similar records. But my challenge is to do so for elementary transactions that have no child records. I feel I'm repeating myself so I'll stop here.