My RDBMS experience is nearly exclusively Postgres While working on this project, I've made the assumption that the structure of a database is:
Database -> Schema -> Table It turns out that this isn't accurate. In MySQL for instance, "Schema" is an alias for "DB". >From the below StackOverflow answer, it seems like this is all over the place: https://stackoverflow.com/a/7944489/13485494 I have a "CalciteSchemaManager" object which has a "rootSchema" to which all datasources are attached This "rootSchema" is used to generate the GraphQL API and types It seems like I have two options, and I'm not sure which is a better design: 1. Force all datasources to conform to (Database -> Schema -> Table) This means that adding a new MySQL database, would generate ("mysql_db" -> "root" (fake schema) -> "some_table") Adding a CSV schema too, would be something like ("csv_datasource" -> "root" -> "some_csv_file") 2. Have an irregular data shape. Datasources can be of arbitrary sub-schema depth. Example Postgres: ("pg_db_1" -> "public" -> "user") Example MySQL: ("mysql_db_1" -> "user") Example CSV: ("some_csv_file") or maybe ("csv_source_1" -> "some_csv_file") What do you folks think I ought to do? Thank you =)