Короче говоря, то, что вы ищете, почти невозможно сделать успешно. У каждого продукта базы данных есть свои особенности, которые не позволят создать такую базу данных и будут слишком ограничены с точки зрения возможностей, которые вы сможете использовать. Т.е. вы должны играть в игру с наименьшим общим знаменателем в отношении функций, которые реализуют все продукты, которые вы хотите поддерживать. Гораздо лучшим решением является абстрагирование уровня данных в его собственную библиотеку, доступ к которой осуществляется через интерфейсы, чтобы вы могли поменять свой уровень данных. ORM, как предложил Рафаэль Э. Беллиард, делает это проще, но это также можно сделать и вручную.