I agree about making it an option. Regarding unnamed composite keys, what I saw happening was that the databases assigned names even then. I didn't encounter None names during development of this. So if that was the rule to generate a ColumnOption PrimaryKey that would never happen (in the cases I observed) and not survive a roundtrip. But for other reasons I made non-composite primary keys always column options now. (see the other comment).