I don't know.. I tend to like to keep things a little bit denormalized in the database... to a point, when & where it makes sense.  Creating a separate table for a field like "check number", and another for "transfer source" and then creating foreign keys seems like a lot in this case.  Not being a database guy, I don't see the value there.

On the Java side, you're correct that sub-classing is the correct way to go.  I don't find myself super strict on always doing that when I should.  Again in this case, it's only a few fields.  When I'm scanning the code, I prefer the few extra fields on `PaymentEntity` but not sub-classing as opposed to having to keep a hierarchy in mind.  It's less jumping around in the code to remember which fields are on the super class and stuff.