class Person, class PersonWithId(id: PersonId, person: Person)
type PersonWithId = (PersonId, Person)
case class Person[ID](id: ID, name: String)
@tpolecat: Yes, and one with no id could be
Person[Unit].
@tpolecat: If you don't mind having that database cruft in your model. I generally like to externalize it.