I've intentionally avoided creating a class hierarchy here for a few reasons:

1. There isn't much code reuse yet.
2. I don't think there is anything to gain from inheritance here.

At best there may be an interface in the future with the methods that Schema\Table and Schema\Collection expect the Schema dialects to implement.