diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,15 @@
 <!-- -*- Markdown -*- -->
 
+## 0.1.7.0
+
+- adjust sub-directory modules of each DBMS to top module name.
+- enable addModifyTableAliasAS flag of SQLite3 configuration.
+- add custom API modules for each DBMS with appropriate configuration.
+
+## 0.1.6.2
+
+- update tested-with.
+
 ## 0.1.6.1
 
 - update version constraint. ( along with re-versioned relational-query. )
diff --git a/relational-schemas.cabal b/relational-schemas.cabal
--- a/relational-schemas.cabal
+++ b/relational-schemas.cabal
@@ -1,8 +1,10 @@
 name:                relational-schemas
-version:             0.1.6.2
+version:             0.1.7.0
 synopsis:            RDBMSs' schema templates for relational-query
 description:         This package contains some RDBMSs' schema structure definitions.
+                     .
                      Supported RDBMS schemas are below:
+                     .
                      - IBM DB2
                      - PostgreSQL
                      - Microsoft SQLServer
@@ -14,11 +16,12 @@
 license-file:        LICENSE
 author:              Kei Hibino, Shohei Murayama, Shohei Yasutake, Sho KURODA
 maintainer:          ex8k.hibino@gmail.com, shohei.murayama@gmail.com, amutake.s@gmail.com, krdlab@gmail.com
-copyright:           Copyright (c) 2013-2017 Kei Hibino, Shohei Murayama, Shohei Yasutake, Sho KURODA
+copyright:           Copyright (c) 2013-2019 Kei Hibino, 2013 Shohei Murayama, 2013 Shohei Yasutake, 2013 Sho KURODA
 category:            Database
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:           GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3
+tested-with:           GHC == 8.6.1, GHC == 8.6.2, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5
+                     , GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3, GHC == 8.4.4
                      , GHC == 8.2.1, GHC == 8.2.2
                      , GHC == 8.0.1, GHC == 8.0.2
                      , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
@@ -30,25 +33,35 @@
 library
   exposed-modules:
                        Database.Relational.Schema.DB2Syscat.Columns
+                       Database.Relational.Schema.IBMDB2.Columns
                        Database.Relational.Schema.IBMDB2
 
                        Database.Relational.Schema.PgCatalog.PgAttribute
                        Database.Relational.Schema.PgCatalog.PgType
+                       Database.Relational.Schema.PostgreSQL.PgAttribute
+                       Database.Relational.Schema.PostgreSQL.PgType
                        Database.Relational.Schema.PostgreSQL
 
                        Database.Relational.Schema.SQLServerSyscat.Columns
                        Database.Relational.Schema.SQLServerSyscat.Types
+                       Database.Relational.Schema.SQLServer.Columns
+                       Database.Relational.Schema.SQLServer.Types
                        Database.Relational.Schema.SQLServer
 
                        Database.Relational.Schema.SQLite3Syscat.IndexInfo
                        Database.Relational.Schema.SQLite3Syscat.IndexList
                        Database.Relational.Schema.SQLite3Syscat.TableInfo
+                       Database.Relational.Schema.SQLite3.IndexInfo
+                       Database.Relational.Schema.SQLite3.IndexList
+                       Database.Relational.Schema.SQLite3.TableInfo
                        Database.Relational.Schema.SQLite3
 
                        Database.Relational.Schema.OracleDataDictionary.TabColumns
+                       Database.Relational.Schema.Oracle.TabColumns
                        Database.Relational.Schema.Oracle
 
                        Database.Relational.Schema.MySQLInfo.Columns
+                       Database.Relational.Schema.MySQL.Columns
                        Database.Relational.Schema.MySQL
 
                        Database.Relational.Schema.DB2Syscat.Config
@@ -58,38 +71,54 @@
                        Database.Relational.Schema.OracleDataDictionary.Config
                        Database.Relational.Schema.MySQLInfo.Config
 
+                       Database.Custom.IBMDB2
+                       Database.Custom.PostgreSQL
+                       Database.Custom.SQLServer
+                       Database.Custom.SQLite3
+                       Database.Custom.Oracle
+                       Database.Custom.MySQL
+
   other-modules:
-                       Database.Relational.Schema.DB2Syscat.Tabconst
-                       Database.Relational.Schema.DB2Syscat.Keycoluse
+                       Database.Relational.Schema.IBMDB2.Config
+                       Database.Relational.Schema.IBMDB2.Tabconst
+                       Database.Relational.Schema.IBMDB2.Keycoluse
 
-                       Database.Relational.Schema.PgCatalog.PgConstraint
-                       Database.Relational.Schema.PgCatalog.PgNamespace
-                       Database.Relational.Schema.PgCatalog.PgClass
+                       Database.Relational.Schema.PostgreSQL.Config
+                       Database.Relational.Schema.PostgreSQL.PgConstraint
+                       Database.Relational.Schema.PostgreSQL.PgNamespace
+                       Database.Relational.Schema.PostgreSQL.PgClass
 
-                       Database.Relational.Schema.SQLServerSyscat.IndexColumns
-                       Database.Relational.Schema.SQLServerSyscat.Indexes
+                       Database.Relational.Schema.SQLServer.Config
+                       Database.Relational.Schema.SQLServer.IndexColumns
+                       Database.Relational.Schema.SQLServer.Indexes
 
-                       Database.Relational.Schema.OracleDataDictionary.ConsColumns
-                       Database.Relational.Schema.OracleDataDictionary.Constraints
+                       Database.Relational.Schema.SQLite3.Config
 
-                       Database.Relational.Schema.MySQLInfo.KeyColumnUsage
-                       Database.Relational.Schema.MySQLInfo.TableConstraints
+                       Database.Relational.Schema.Oracle.Config
+                       Database.Relational.Schema.Oracle.ConsColumns
+                       Database.Relational.Schema.Oracle.Constraints
 
+                       Database.Relational.Schema.MySQL.Config
+                       Database.Relational.Schema.MySQL.KeyColumnUsage
+                       Database.Relational.Schema.MySQL.TableConstraints
+
   build-depends:         base <5
                        , template-haskell
                        , containers
                        , time
                        , bytestring
 
-                       , relational-query >= 0.11
+                       , relational-query >= 0.12.2
 
   if impl(ghc == 7.4.*)
-    build-depends:        ghc-prim == 0.2.*
+    build-depends:       ghc-prim == 0.2.*
 
   hs-source-dirs:      src
   ghc-options:         -Wall
+  if impl(ghc >= 8)
+    ghc-options:         -Wcompat -Wnoncanonical-monadfail-instances
 
-  default-language:     Haskell2010
+  default-language:    Haskell2010
 
 
 source-repository head
diff --git a/src/Database/Custom/IBMDB2.hs b/src/Database/Custom/IBMDB2.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Custom/IBMDB2.hs
@@ -0,0 +1,71 @@
+-- |
+-- Module      : Database.Custom.IBMDB2
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- This module provides custom APIs with appropriate configuration
+-- for IBMDB2.
+module Database.Custom.IBMDB2 (
+  module Database.Relational,
+
+  relationalQuery,
+
+  insertValue, insertValueNoPH, insertQuery,
+  update, updateNoPH,
+  delete, deleteNoPH,
+  ) where
+
+import Database.Relational.Schema.IBMDB2.Config (config)
+import Database.Relational hiding
+  (relationalQuery,
+   insertValue, insertValueNoPH, insertQuery,
+   update, updateNoPH,
+   delete, deleteNoPH, )
+
+-- | From 'Relation' into typed 'Query' with suffix SQL words.
+relationalQuery :: Relation p r -> QuerySuffix -> Query p r
+relationalQuery = relationalQuery_ config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object.
+insertValue :: TableDerivable r
+            => Register r (PlaceHolders p)
+            -> Insert p
+insertValue = insertValue' config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object with no(unit) placeholder.
+insertValueNoPH :: TableDerivable r
+                => Register r ()
+                -> Insert ()
+insertValueNoPH body = insertValue $ body >> return unitPH
+
+-- | Make 'InsertQuery' from derived table, 'Pi' and 'Relation'.
+insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
+insertQuery = insertQuery' config
+
+-- | Make 'Update' from derived table and 'Assign' computation.
+update :: TableDerivable r
+       => (Record Flat r -> Assign r (PlaceHolders p))
+       -> Update p
+update = update' config
+
+-- | Make 'Update' from derived table and 'Assign' computation with no(unit) placeholder.
+updateNoPH :: TableDerivable r
+           => (Record Flat r -> Assign r ())
+           -> Update ()
+updateNoPH body = update $ (>> return unitPH) . body
+
+-- | Make 'Delete' from derived table and 'Restrict' computation.
+delete :: TableDerivable r
+       => (Record Flat r -> Restrict (PlaceHolders p))
+       -> Delete p
+delete = delete' config
+
+-- | Make 'Delete' from 'defaultConfig', derived table and 'Restrict' computation with no(unit) placeholder.
+deleteNoPH :: TableDerivable r
+           => (Record Flat r -> Restrict ())
+           -> Delete ()
+deleteNoPH body = delete $ (>> return unitPH) . body
diff --git a/src/Database/Custom/MySQL.hs b/src/Database/Custom/MySQL.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Custom/MySQL.hs
@@ -0,0 +1,71 @@
+-- |
+-- Module      : Database.Custom.MySQL
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- This module provides custom APIs with appropriate configuration
+-- for MySQL.
+module Database.Custom.MySQL (
+  module Database.Relational,
+
+  relationalQuery,
+
+  insertValue, insertValueNoPH, insertQuery,
+  update, updateNoPH,
+  delete, deleteNoPH,
+  ) where
+
+import Database.Relational.Schema.MySQL.Config (config)
+import Database.Relational hiding
+  (relationalQuery,
+   insertValue, insertValueNoPH, insertQuery,
+   update, updateNoPH,
+   delete, deleteNoPH, )
+
+-- | From 'Relation' into typed 'Query' with suffix SQL words.
+relationalQuery :: Relation p r -> QuerySuffix -> Query p r
+relationalQuery = relationalQuery_ config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object.
+insertValue :: TableDerivable r
+            => Register r (PlaceHolders p)
+            -> Insert p
+insertValue = insertValue' config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object with no(unit) placeholder.
+insertValueNoPH :: TableDerivable r
+                => Register r ()
+                -> Insert ()
+insertValueNoPH body = insertValue $ body >> return unitPH
+
+-- | Make 'InsertQuery' from derived table, 'Pi' and 'Relation'.
+insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
+insertQuery = insertQuery' config
+
+-- | Make 'Update' from derived table and 'Assign' computation.
+update :: TableDerivable r
+       => (Record Flat r -> Assign r (PlaceHolders p))
+       -> Update p
+update = update' config
+
+-- | Make 'Update' from derived table and 'Assign' computation with no(unit) placeholder.
+updateNoPH :: TableDerivable r
+           => (Record Flat r -> Assign r ())
+           -> Update ()
+updateNoPH body = update $ (>> return unitPH) . body
+
+-- | Make 'Delete' from derived table and 'Restrict' computation.
+delete :: TableDerivable r
+       => (Record Flat r -> Restrict (PlaceHolders p))
+       -> Delete p
+delete = delete' config
+
+-- | Make 'Delete' from 'defaultConfig', derived table and 'Restrict' computation with no(unit) placeholder.
+deleteNoPH :: TableDerivable r
+           => (Record Flat r -> Restrict ())
+           -> Delete ()
+deleteNoPH body = delete $ (>> return unitPH) . body
diff --git a/src/Database/Custom/Oracle.hs b/src/Database/Custom/Oracle.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Custom/Oracle.hs
@@ -0,0 +1,71 @@
+-- |
+-- Module      : Database.Custom.Oracle
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- This module provides custom APIs with appropriate configuration
+-- for Oracle.
+module Database.Custom.Oracle (
+  module Database.Relational,
+
+  relationalQuery,
+
+  insertValue, insertValueNoPH, insertQuery,
+  update, updateNoPH,
+  delete, deleteNoPH,
+  ) where
+
+import Database.Relational.Schema.Oracle.Config (config)
+import Database.Relational hiding
+  (relationalQuery,
+   insertValue, insertValueNoPH, insertQuery,
+   update, updateNoPH,
+   delete, deleteNoPH, )
+
+-- | From 'Relation' into typed 'Query' with suffix SQL words.
+relationalQuery :: Relation p r -> QuerySuffix -> Query p r
+relationalQuery = relationalQuery_ config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object.
+insertValue :: TableDerivable r
+            => Register r (PlaceHolders p)
+            -> Insert p
+insertValue = insertValue' config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object with no(unit) placeholder.
+insertValueNoPH :: TableDerivable r
+                => Register r ()
+                -> Insert ()
+insertValueNoPH body = insertValue $ body >> return unitPH
+
+-- | Make 'InsertQuery' from derived table, 'Pi' and 'Relation'.
+insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
+insertQuery = insertQuery' config
+
+-- | Make 'Update' from derived table and 'Assign' computation.
+update :: TableDerivable r
+       => (Record Flat r -> Assign r (PlaceHolders p))
+       -> Update p
+update = update' config
+
+-- | Make 'Update' from derived table and 'Assign' computation with no(unit) placeholder.
+updateNoPH :: TableDerivable r
+           => (Record Flat r -> Assign r ())
+           -> Update ()
+updateNoPH body = update $ (>> return unitPH) . body
+
+-- | Make 'Delete' from derived table and 'Restrict' computation.
+delete :: TableDerivable r
+       => (Record Flat r -> Restrict (PlaceHolders p))
+       -> Delete p
+delete = delete' config
+
+-- | Make 'Delete' from 'defaultConfig', derived table and 'Restrict' computation with no(unit) placeholder.
+deleteNoPH :: TableDerivable r
+           => (Record Flat r -> Restrict ())
+           -> Delete ()
+deleteNoPH body = delete $ (>> return unitPH) . body
diff --git a/src/Database/Custom/PostgreSQL.hs b/src/Database/Custom/PostgreSQL.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Custom/PostgreSQL.hs
@@ -0,0 +1,71 @@
+-- |
+-- Module      : Database.Custom.PostgreSQL
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- This module provides custom APIs with appropriate configuration
+-- for PostgreSQL.
+module Database.Custom.PostgreSQL (
+  module Database.Relational,
+
+  relationalQuery,
+
+  insertValue, insertValueNoPH, insertQuery,
+  update, updateNoPH,
+  delete, deleteNoPH,
+  ) where
+
+import Database.Relational.Schema.PostgreSQL.Config (config)
+import Database.Relational hiding
+  (relationalQuery,
+   insertValue, insertValueNoPH, insertQuery,
+   update, updateNoPH,
+   delete, deleteNoPH, )
+
+-- | From 'Relation' into typed 'Query' with suffix SQL words.
+relationalQuery :: Relation p r -> QuerySuffix -> Query p r
+relationalQuery = relationalQuery_ config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object.
+insertValue :: TableDerivable r
+            => Register r (PlaceHolders p)
+            -> Insert p
+insertValue = insertValue' config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object with no(unit) placeholder.
+insertValueNoPH :: TableDerivable r
+                => Register r ()
+                -> Insert ()
+insertValueNoPH body = insertValue $ body >> return unitPH
+
+-- | Make 'InsertQuery' from derived table, 'Pi' and 'Relation'.
+insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
+insertQuery = insertQuery' config
+
+-- | Make 'Update' from derived table and 'Assign' computation.
+update :: TableDerivable r
+       => (Record Flat r -> Assign r (PlaceHolders p))
+       -> Update p
+update = update' config
+
+-- | Make 'Update' from derived table and 'Assign' computation with no(unit) placeholder.
+updateNoPH :: TableDerivable r
+           => (Record Flat r -> Assign r ())
+           -> Update ()
+updateNoPH body = update $ (>> return unitPH) . body
+
+-- | Make 'Delete' from derived table and 'Restrict' computation.
+delete :: TableDerivable r
+       => (Record Flat r -> Restrict (PlaceHolders p))
+       -> Delete p
+delete = delete' config
+
+-- | Make 'Delete' from 'defaultConfig', derived table and 'Restrict' computation with no(unit) placeholder.
+deleteNoPH :: TableDerivable r
+           => (Record Flat r -> Restrict ())
+           -> Delete ()
+deleteNoPH body = delete $ (>> return unitPH) . body
diff --git a/src/Database/Custom/SQLServer.hs b/src/Database/Custom/SQLServer.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Custom/SQLServer.hs
@@ -0,0 +1,71 @@
+-- |
+-- Module      : Database.Custom.SQLServer
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- This module provides custom APIs with appropriate configuration
+-- for SQLServer.
+module Database.Custom.SQLServer (
+  module Database.Relational,
+
+  relationalQuery,
+
+  insertValue, insertValueNoPH, insertQuery,
+  update, updateNoPH,
+  delete, deleteNoPH,
+  ) where
+
+import Database.Relational.Schema.SQLServer.Config (config)
+import Database.Relational hiding
+  (relationalQuery,
+   insertValue, insertValueNoPH, insertQuery,
+   update, updateNoPH,
+   delete, deleteNoPH, )
+
+-- | From 'Relation' into typed 'Query' with suffix SQL words.
+relationalQuery :: Relation p r -> QuerySuffix -> Query p r
+relationalQuery = relationalQuery_ config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object.
+insertValue :: TableDerivable r
+            => Register r (PlaceHolders p)
+            -> Insert p
+insertValue = insertValue' config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object with no(unit) placeholder.
+insertValueNoPH :: TableDerivable r
+                => Register r ()
+                -> Insert ()
+insertValueNoPH body = insertValue $ body >> return unitPH
+
+-- | Make 'InsertQuery' from derived table, 'Pi' and 'Relation'.
+insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
+insertQuery = insertQuery' config
+
+-- | Make 'Update' from derived table and 'Assign' computation.
+update :: TableDerivable r
+       => (Record Flat r -> Assign r (PlaceHolders p))
+       -> Update p
+update = update' config
+
+-- | Make 'Update' from derived table and 'Assign' computation with no(unit) placeholder.
+updateNoPH :: TableDerivable r
+           => (Record Flat r -> Assign r ())
+           -> Update ()
+updateNoPH body = update $ (>> return unitPH) . body
+
+-- | Make 'Delete' from derived table and 'Restrict' computation.
+delete :: TableDerivable r
+       => (Record Flat r -> Restrict (PlaceHolders p))
+       -> Delete p
+delete = delete' config
+
+-- | Make 'Delete' from 'defaultConfig', derived table and 'Restrict' computation with no(unit) placeholder.
+deleteNoPH :: TableDerivable r
+           => (Record Flat r -> Restrict ())
+           -> Delete ()
+deleteNoPH body = delete $ (>> return unitPH) . body
diff --git a/src/Database/Custom/SQLite3.hs b/src/Database/Custom/SQLite3.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Custom/SQLite3.hs
@@ -0,0 +1,71 @@
+-- |
+-- Module      : Database.Custom.SQLite3
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- This module provides custom APIs with appropriate configuration
+-- for SQLite3.
+module Database.Custom.SQLite3 (
+  module Database.Relational,
+
+  relationalQuery,
+
+  insertValue, insertValueNoPH, insertQuery,
+  update, updateNoPH,
+  delete, deleteNoPH,
+  ) where
+
+import Database.Relational.Schema.SQLite3.Config (config)
+import Database.Relational hiding
+  (relationalQuery,
+   insertValue, insertValueNoPH, insertQuery,
+   update, updateNoPH,
+   delete, deleteNoPH, )
+
+-- | From 'Relation' into typed 'Query' with suffix SQL words.
+relationalQuery :: Relation p r -> QuerySuffix -> Query p r
+relationalQuery = relationalQuery_ config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object.
+insertValue :: TableDerivable r
+            => Register r (PlaceHolders p)
+            -> Insert p
+insertValue = insertValue' config
+
+-- | Make 'Insert' from derived table and monadic builded 'Register' object with no(unit) placeholder.
+insertValueNoPH :: TableDerivable r
+                => Register r ()
+                -> Insert ()
+insertValueNoPH body = insertValue $ body >> return unitPH
+
+-- | Make 'InsertQuery' from derived table, 'Pi' and 'Relation'.
+insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
+insertQuery = insertQuery' config
+
+-- | Make 'Update' from derived table and 'Assign' computation.
+update :: TableDerivable r
+       => (Record Flat r -> Assign r (PlaceHolders p))
+       -> Update p
+update = update' config
+
+-- | Make 'Update' from derived table and 'Assign' computation with no(unit) placeholder.
+updateNoPH :: TableDerivable r
+           => (Record Flat r -> Assign r ())
+           -> Update ()
+updateNoPH body = update $ (>> return unitPH) . body
+
+-- | Make 'Delete' from derived table and 'Restrict' computation.
+delete :: TableDerivable r
+       => (Record Flat r -> Restrict (PlaceHolders p))
+       -> Delete p
+delete = delete' config
+
+-- | Make 'Delete' from 'defaultConfig', derived table and 'Restrict' computation with no(unit) placeholder.
+deleteNoPH :: TableDerivable r
+           => (Record Flat r -> Restrict ())
+           -> Delete ()
+deleteNoPH body = delete $ (>> return unitPH) . body
diff --git a/src/Database/Relational/Schema/DB2Syscat/Columns.hs b/src/Database/Relational/Schema/DB2Syscat/Columns.hs
--- a/src/Database/Relational/Schema/DB2Syscat/Columns.hs
+++ b/src/Database/Relational/Schema/DB2Syscat/Columns.hs
@@ -1,105 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.DB2Syscat.Columns
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
---
--- Generate template of SYSCAT.columns system catalog table.
-module Database.Relational.Schema.DB2Syscat.Columns where
-
-import GHC.Generics (Generic)
-import Data.Int (Int16, Int32, Int64)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.DB2Syscat.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "SYSCAT" "columns"
-  [
-    -- column                         schema    type               length         NULL
-    -- ------------------------------ --------- ------------------ -------- ----- ------
-    -- TABSCHEMA                      SYSIBM    VARCHAR                 128     0 No
-    ("tabschema", [t|String|]),
-    -- TABNAME                        SYSIBM    VARCHAR                 128     0 No
-    ("tabname", [t|String|]),
-    -- COLNAME                        SYSIBM    VARCHAR                 128     0 No
-    ("colname", [t|String|]),
-    -- COLNO                          SYSIBM    SMALLINT                  2     0 No
-    ("colno", [t|Int16|]),
-    -- TYPESCHEMA                     SYSIBM    VARCHAR                 128     0 No
-    ("typeschema", [t|String|]),
-    -- TYPENAME                       SYSIBM    VARCHAR                  18     0 No
-    ("typename", [t|String|]),
-    -- LENGTH                         SYSIBM    INTEGER                   4     0 No
-    ("length", [t|Int32|]),
-    -- SCALE                          SYSIBM    SMALLINT                  2     0 No
-    ("scale", [t|Int16|]),
-    -- DEFAULT                        SYSIBM    VARCHAR                 254     0 Yes
-    ("default", [t|Maybe String|]),
-    -- NULLS                          SYSIBM    CHARACTER                 1     0 No
-    ("nulls", [t|String|]),
-    -- CODEPAGE                       SYSIBM    SMALLINT                  2     0 No
-    ("codepage", [t|Int16|]),
-    -- LOGGED                         SYSIBM    CHARACTER                 1     0 No
-    ("logged", [t|String|]),
-    -- COMPACT                        SYSIBM    CHARACTER                 1     0 No
-    ("compact", [t|String|]),
-    -- COLCARD                        SYSIBM    BIGINT                    8     0 No
-    ("colcard", [t|Int64|]),
-    -- HIGH2KEY                       SYSIBM    VARCHAR                 254     0 Yes
-    ("high2key", [t|Maybe String|]),
-    -- LOW2KEY                        SYSIBM    VARCHAR                 254     0 Yes
-    ("low2key", [t|Maybe String|]),
-    -- AVGCOLLEN                      SYSIBM    INTEGER                   4     0 No
-    ("avgcollen", [t|Int32|]),
-    -- KEYSEQ                         SYSIBM    SMALLINT                  2     0 Yes
-    ("keyseq", [t|Maybe Int16|]),
-    -- PARTKEYSEQ                     SYSIBM    SMALLINT                  2     0 Yes
-    ("partkeyseq", [t|Maybe Int16|]),
-    -- NQUANTILES                     SYSIBM    SMALLINT                  2     0 No
-    ("nquantiles", [t|Int16|]),
-    -- NMOSTFREQ                      SYSIBM    SMALLINT                  2     0 No
-    ("nmostfreq", [t|Int16|]),
-    -- NUMNULLS                       SYSIBM    BIGINT                    8     0 No
-    ("numnulls", [t|Int64|]),
-    -- TARGET_TYPESCHEMA              SYSIBM    VARCHAR                 128     0 Yes
-    ("target_typeschema", [t|Maybe String|]),
-    -- TARGET_TYPENAME                SYSIBM    VARCHAR                  18     0 Yes
-    ("target_typename", [t|Maybe String|]),
-    -- SCOPE_TABSCHEMA                SYSIBM    VARCHAR                 128     0 Yes
-    ("scope_tabschema", [t|Maybe String|]),
-    -- SCOPE_TABNAME                  SYSIBM    VARCHAR                 128     0 Yes
-    ("scope_tabname", [t|Maybe String|]),
-    -- SOURCE_TABSCHEMA               SYSIBM    VARCHAR                 128     0 Yes
-    ("source_tabschema", [t|Maybe String|]),
-    -- SOURCE_TABNAME                 SYSIBM    VARCHAR                 128     0 Yes
-    ("source_tabname", [t|Maybe String|]),
-    -- DL_FEATURES                    SYSIBM    CHARACTER                10     0 Yes
-    ("dl_features", [t|Maybe String|]),
-    -- SPECIAL_PROPS                  SYSIBM    CHARACTER                 8     0 Yes
-    ("special_props", [t|Maybe String|]),
-    -- HIDDEN                         SYSIBM    CHARACTER                 1     0 No
-    ("hidden", [t|String|]),
-    -- INLINE_LENGTH                  SYSIBM    INTEGER                   4     0 No
-    ("inline_length", [t|Int32|]),
-    -- IDENTITY                       SYSIBM    CHARACTER                 1     0 No
-    ("identity", [t|String|]),
-    -- GENERATED                      SYSIBM    CHARACTER                 1     0 No
-    ("generated", [t|String|]),
-    -- TEXT                           SYSIBM    CLOB                  65538     0 Yes
-    ("text", [t|Maybe String|]),
-    -- REMARKS                        SYSIBM    VARCHAR                 254     0 Yes
-    ("remarks", [t|Maybe String|])
+module Database.Relational.Schema.DB2Syscat.Columns
+  {-# DEPRECATED "import Database.Relational.Schema.IBMDB2.Columns instead of this module." #-} (
+  module Database.Relational.Schema.IBMDB2.Columns,
+  ) where
 
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.IBMDB2.Columns
diff --git a/src/Database/Relational/Schema/DB2Syscat/Config.hs b/src/Database/Relational/Schema/DB2Syscat/Config.hs
--- a/src/Database/Relational/Schema/DB2Syscat/Config.hs
+++ b/src/Database/Relational/Schema/DB2Syscat/Config.hs
@@ -1,16 +1,6 @@
--- |
--- Module      : Database.Relational.Schema.DB2Syscat.Config
--- Copyright   : 2014 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.DB2Syscat.Config (config) where
-
-import Database.Relational (Config (..), ProductUnitSupport (..), defaultConfig)
-
+module Database.Relational.Schema.DB2Syscat.Config
+  {-# DEPRECATED "import config from Database.Relational.Schema.IBMDB2 instead of this module." #-} (
+  config,
+  ) where
 
--- | Configuration parameter against IBM DB2.
-config :: Config
-config =  defaultConfig { productUnitSupport = PUNotSupported }
+import Database.Relational.Schema.IBMDB2.Config (config)
diff --git a/src/Database/Relational/Schema/DB2Syscat/Keycoluse.hs b/src/Database/Relational/Schema/DB2Syscat/Keycoluse.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/DB2Syscat/Keycoluse.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.DB2Syscat.Keycoluse
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
---
--- Generate template of SYSCAT.keycoluse system catalog table.
--- Not all columns are mapped to Haskell record.
--- Minimum implementation required to generate table constraints.
-module Database.Relational.Schema.DB2Syscat.Keycoluse where
-
-import GHC.Generics (Generic)
-import Data.Int (Int16)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.DB2Syscat.Config (config)
-
-
--- Not all column is mapped. Minimum implementation.
-$(defineTableTypesAndRecord config
-  "SYSCAT" "keycoluse"
-  [("constname", [t| String |]),
-   ("colname"  , [t| String |]),
-   ("colseq"   , [t| Int16 |])]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/DB2Syscat/Tabconst.hs b/src/Database/Relational/Schema/DB2Syscat/Tabconst.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/DB2Syscat/Tabconst.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.DB2Syscat.Tabconst
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
---
--- Generate template of SYSCAT.tabconst system catalog table.
--- Not all columns are mapped to Haskell record.
--- Minimum implementation required to generate table constraints.
-module Database.Relational.Schema.DB2Syscat.Tabconst where
-
-import GHC.Generics (Generic)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.DB2Syscat.Config (config)
-
-
--- Not all column is mapped. Minimum implementation.
-$(defineTableTypesAndRecord config
-  "SYSCAT" "tabconst"
-  [("constname", [t| String |]),
-   ("tabschema", [t| String |]),
-   ("tabname"  , [t| String |]),
-   --
-   ("type"     , [t| String |]),
-   ("enforced" , [t| String |])]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/IBMDB2.hs b/src/Database/Relational/Schema/IBMDB2.hs
--- a/src/Database/Relational/Schema/IBMDB2.hs
+++ b/src/Database/Relational/Schema/IBMDB2.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Database.Relational.Schema.IBMDB2
--- Copyright   : 2013 Kei Hibino
+-- Copyright   : 2013-2019 Kei Hibino
 -- License     : BSD3
 --
 -- Maintainer  : ex8k.hibino@gmail.com
@@ -13,6 +13,8 @@
 -- table schema and table constraint informations
 -- from system catalog of IBM DB2.
 module Database.Relational.Schema.IBMDB2 (
+  module Database.Relational.Schema.IBMDB2.Config,
+
   normalizeColumn, notNull, getType,
 
   columnsQuerySQL, primaryKeyQuerySQL
@@ -32,12 +34,13 @@
 
 import Control.Applicative ((<|>))
 
-import Database.Relational.Schema.DB2Syscat.Columns (Columns, columns)
-import qualified Database.Relational.Schema.DB2Syscat.Columns as Columns
-import Database.Relational.Schema.DB2Syscat.Tabconst (tabconst)
-import qualified Database.Relational.Schema.DB2Syscat.Tabconst as Tabconst
-import Database.Relational.Schema.DB2Syscat.Keycoluse (keycoluse)
-import qualified Database.Relational.Schema.DB2Syscat.Keycoluse as Keycoluse
+import Database.Relational.Schema.IBMDB2.Config
+import Database.Relational.Schema.IBMDB2.Columns (Columns, columns)
+import qualified Database.Relational.Schema.IBMDB2.Columns as Columns
+import Database.Relational.Schema.IBMDB2.Tabconst (tabconst)
+import qualified Database.Relational.Schema.IBMDB2.Tabconst as Tabconst
+import Database.Relational.Schema.IBMDB2.Keycoluse (keycoluse)
+import qualified Database.Relational.Schema.IBMDB2.Keycoluse as Keycoluse
 
 
 -- | Mapping between type in DB2 and Haskell type.
diff --git a/src/Database/Relational/Schema/IBMDB2/Columns.hs b/src/Database/Relational/Schema/IBMDB2/Columns.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/IBMDB2/Columns.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.IBMDB2.Columns
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- Generate template of SYSCAT.columns system catalog table.
+module Database.Relational.Schema.IBMDB2.Columns where
+
+import GHC.Generics (Generic)
+import Data.Int (Int16, Int32, Int64)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.IBMDB2.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "SYSCAT" "columns"
+  [
+    -- column                         schema    type               length         NULL
+    -- ------------------------------ --------- ------------------ -------- ----- ------
+    -- TABSCHEMA                      SYSIBM    VARCHAR                 128     0 No
+    ("tabschema", [t|String|]),
+    -- TABNAME                        SYSIBM    VARCHAR                 128     0 No
+    ("tabname", [t|String|]),
+    -- COLNAME                        SYSIBM    VARCHAR                 128     0 No
+    ("colname", [t|String|]),
+    -- COLNO                          SYSIBM    SMALLINT                  2     0 No
+    ("colno", [t|Int16|]),
+    -- TYPESCHEMA                     SYSIBM    VARCHAR                 128     0 No
+    ("typeschema", [t|String|]),
+    -- TYPENAME                       SYSIBM    VARCHAR                  18     0 No
+    ("typename", [t|String|]),
+    -- LENGTH                         SYSIBM    INTEGER                   4     0 No
+    ("length", [t|Int32|]),
+    -- SCALE                          SYSIBM    SMALLINT                  2     0 No
+    ("scale", [t|Int16|]),
+    -- DEFAULT                        SYSIBM    VARCHAR                 254     0 Yes
+    ("default", [t|Maybe String|]),
+    -- NULLS                          SYSIBM    CHARACTER                 1     0 No
+    ("nulls", [t|String|]),
+    -- CODEPAGE                       SYSIBM    SMALLINT                  2     0 No
+    ("codepage", [t|Int16|]),
+    -- LOGGED                         SYSIBM    CHARACTER                 1     0 No
+    ("logged", [t|String|]),
+    -- COMPACT                        SYSIBM    CHARACTER                 1     0 No
+    ("compact", [t|String|]),
+    -- COLCARD                        SYSIBM    BIGINT                    8     0 No
+    ("colcard", [t|Int64|]),
+    -- HIGH2KEY                       SYSIBM    VARCHAR                 254     0 Yes
+    ("high2key", [t|Maybe String|]),
+    -- LOW2KEY                        SYSIBM    VARCHAR                 254     0 Yes
+    ("low2key", [t|Maybe String|]),
+    -- AVGCOLLEN                      SYSIBM    INTEGER                   4     0 No
+    ("avgcollen", [t|Int32|]),
+    -- KEYSEQ                         SYSIBM    SMALLINT                  2     0 Yes
+    ("keyseq", [t|Maybe Int16|]),
+    -- PARTKEYSEQ                     SYSIBM    SMALLINT                  2     0 Yes
+    ("partkeyseq", [t|Maybe Int16|]),
+    -- NQUANTILES                     SYSIBM    SMALLINT                  2     0 No
+    ("nquantiles", [t|Int16|]),
+    -- NMOSTFREQ                      SYSIBM    SMALLINT                  2     0 No
+    ("nmostfreq", [t|Int16|]),
+    -- NUMNULLS                       SYSIBM    BIGINT                    8     0 No
+    ("numnulls", [t|Int64|]),
+    -- TARGET_TYPESCHEMA              SYSIBM    VARCHAR                 128     0 Yes
+    ("target_typeschema", [t|Maybe String|]),
+    -- TARGET_TYPENAME                SYSIBM    VARCHAR                  18     0 Yes
+    ("target_typename", [t|Maybe String|]),
+    -- SCOPE_TABSCHEMA                SYSIBM    VARCHAR                 128     0 Yes
+    ("scope_tabschema", [t|Maybe String|]),
+    -- SCOPE_TABNAME                  SYSIBM    VARCHAR                 128     0 Yes
+    ("scope_tabname", [t|Maybe String|]),
+    -- SOURCE_TABSCHEMA               SYSIBM    VARCHAR                 128     0 Yes
+    ("source_tabschema", [t|Maybe String|]),
+    -- SOURCE_TABNAME                 SYSIBM    VARCHAR                 128     0 Yes
+    ("source_tabname", [t|Maybe String|]),
+    -- DL_FEATURES                    SYSIBM    CHARACTER                10     0 Yes
+    ("dl_features", [t|Maybe String|]),
+    -- SPECIAL_PROPS                  SYSIBM    CHARACTER                 8     0 Yes
+    ("special_props", [t|Maybe String|]),
+    -- HIDDEN                         SYSIBM    CHARACTER                 1     0 No
+    ("hidden", [t|String|]),
+    -- INLINE_LENGTH                  SYSIBM    INTEGER                   4     0 No
+    ("inline_length", [t|Int32|]),
+    -- IDENTITY                       SYSIBM    CHARACTER                 1     0 No
+    ("identity", [t|String|]),
+    -- GENERATED                      SYSIBM    CHARACTER                 1     0 No
+    ("generated", [t|String|]),
+    -- TEXT                           SYSIBM    CLOB                  65538     0 Yes
+    ("text", [t|Maybe String|]),
+    -- REMARKS                        SYSIBM    VARCHAR                 254     0 Yes
+    ("remarks", [t|Maybe String|])
+
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/IBMDB2/Config.hs b/src/Database/Relational/Schema/IBMDB2/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/IBMDB2/Config.hs
@@ -0,0 +1,16 @@
+-- |
+-- Module      : Database.Relational.Schema.IBMDB2.Config
+-- Copyright   : 2014-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.IBMDB2.Config (config) where
+
+import Database.Relational (Config (..), ProductUnitSupport (..), defaultConfig)
+
+
+-- | Configuration parameter against IBM DB2.
+config :: Config
+config = defaultConfig { productUnitSupport = PUNotSupported }
diff --git a/src/Database/Relational/Schema/IBMDB2/Keycoluse.hs b/src/Database/Relational/Schema/IBMDB2/Keycoluse.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/IBMDB2/Keycoluse.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.DB2Syscat.Keycoluse
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- Generate template of SYSCAT.keycoluse system catalog table.
+-- Not all columns are mapped to Haskell record.
+-- Minimum implementation required to generate table constraints.
+module Database.Relational.Schema.IBMDB2.Keycoluse where
+
+import GHC.Generics (Generic)
+import Data.Int (Int16)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.IBMDB2.Config (config)
+
+
+-- Not all column is mapped. Minimum implementation.
+$(defineTableTypesAndRecord config
+  "SYSCAT" "keycoluse"
+  [("constname", [t| String |]),
+   ("colname"  , [t| String |]),
+   ("colseq"   , [t| Int16 |])]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/IBMDB2/Tabconst.hs b/src/Database/Relational/Schema/IBMDB2/Tabconst.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/IBMDB2/Tabconst.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.DB2Syscat.Tabconst
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- Generate template of SYSCAT.tabconst system catalog table.
+-- Not all columns are mapped to Haskell record.
+-- Minimum implementation required to generate table constraints.
+module Database.Relational.Schema.IBMDB2.Tabconst where
+
+import GHC.Generics (Generic)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.IBMDB2.Config (config)
+
+
+-- Not all column is mapped. Minimum implementation.
+$(defineTableTypesAndRecord config
+  "SYSCAT" "tabconst"
+  [("constname", [t| String |]),
+   ("tabschema", [t| String |]),
+   ("tabname"  , [t| String |]),
+   --
+   ("type"     , [t| String |]),
+   ("enforced" , [t| String |])]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/MySQL.hs b/src/Database/Relational/Schema/MySQL.hs
--- a/src/Database/Relational/Schema/MySQL.hs
+++ b/src/Database/Relational/Schema/MySQL.hs
@@ -1,6 +1,8 @@
 {-# LANGUAGE TemplateHaskell #-}
 module Database.Relational.Schema.MySQL
-    ( normalizeColumn
+    ( module Database.Relational.Schema.MySQL.Config
+
+    , normalizeColumn
     , notNull
     , getType
     , columnsQuerySQL
@@ -31,12 +33,13 @@
                                         , value
                                         )
 
-import           Database.Relational.Schema.MySQLInfo.Columns           (Columns, columns)
-import qualified Database.Relational.Schema.MySQLInfo.Columns           as Columns
-import           Database.Relational.Schema.MySQLInfo.TableConstraints  (tableConstraints)
-import qualified Database.Relational.Schema.MySQLInfo.TableConstraints  as Tabconst
-import           Database.Relational.Schema.MySQLInfo.KeyColumnUsage    (keyColumnUsage)
-import qualified Database.Relational.Schema.MySQLInfo.KeyColumnUsage    as Keycoluse
+import           Database.Relational.Schema.MySQL.Config
+import           Database.Relational.Schema.MySQL.Columns           (Columns, columns)
+import qualified Database.Relational.Schema.MySQL.Columns           as Columns
+import           Database.Relational.Schema.MySQL.TableConstraints  (tableConstraints)
+import qualified Database.Relational.Schema.MySQL.TableConstraints  as Tabconst
+import           Database.Relational.Schema.MySQL.KeyColumnUsage    (keyColumnUsage)
+import qualified Database.Relational.Schema.MySQL.KeyColumnUsage    as Keycoluse
 
 -- TODO: Need to check unsigned int types to avoid wrong mapping
 
diff --git a/src/Database/Relational/Schema/MySQL/Columns.hs b/src/Database/Relational/Schema/MySQL/Columns.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/MySQL/Columns.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.MySQL.Columns where
+
+import GHC.Generics (Generic)
+import Data.Int                     (Int16)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.MySQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+    "INFORMATION_SCHEMA" "columns"
+    [ ("table_schema",      [t|String|])
+    , ("table_name",        [t|String|])
+    , ("column_name",       [t|String|])
+    , ("ordinal_position",  [t|Int16|])
+    , ("column_default",    [t|Maybe String|])
+    , ("is_nullable",       [t|String|])
+    , ("data_type",         [t|String|])
+    ]
+    [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/MySQL/Config.hs b/src/Database/Relational/Schema/MySQL/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/MySQL/Config.hs
@@ -0,0 +1,16 @@
+-- |
+-- Module      : Database.Relational.Schema.MySQL.Config
+-- Copyright   : 2014-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.MySQL.Config (config) where
+
+import Database.Relational (Config (..), defaultConfig)
+
+
+-- | Configuration parameter against MySQL.
+config :: Config
+config = defaultConfig { normalizedTableName = False }
diff --git a/src/Database/Relational/Schema/MySQL/KeyColumnUsage.hs b/src/Database/Relational/Schema/MySQL/KeyColumnUsage.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/MySQL/KeyColumnUsage.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.MySQL.KeyColumnUsage where
+
+import GHC.Generics (Generic)
+import Data.Int                     (Int16)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.MySQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+    "INFORMATION_SCHEMA" "key_column_usage"
+    [ ("constraint_name"    , [t| String |])
+    , ("table_schema"       , [t| String |])
+    , ("table_name"         , [t| String |])
+    , ("column_name"        , [t| String |])
+    , ("ordinal_position"   , [t| Int16 |])
+    ]
+    [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/MySQL/TableConstraints.hs b/src/Database/Relational/Schema/MySQL/TableConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/MySQL/TableConstraints.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.MySQL.TableConstraints where
+
+import GHC.Generics (Generic)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.MySQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+    "INFORMATION_SCHEMA" "table_constraints"
+    [ ("table_schema"       , [t| String |])
+    , ("table_name"         , [t| String |])
+    , ("constraint_name"    , [t| String |])
+    , ("constraint_type"    , [t| String |])
+    ]
+    [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/MySQLInfo/Columns.hs b/src/Database/Relational/Schema/MySQLInfo/Columns.hs
--- a/src/Database/Relational/Schema/MySQLInfo/Columns.hs
+++ b/src/Database/Relational/Schema/MySQLInfo/Columns.hs
@@ -1,26 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.MySQLInfo.Columns where
-
-import GHC.Generics (Generic)
-import Data.Int                     (Int16)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.MySQLInfo.Config (config)
-
+module Database.Relational.Schema.MySQLInfo.Columns
+  {-# DEPRECATED "import Database.Relational.Schema.MySQL.Columns instead of this module." #-} (
+  module Database.Relational.Schema.MySQL.Columns,
+  ) where
 
-$(defineTableTypesAndRecord config
-    "INFORMATION_SCHEMA" "columns"
-    [ ("table_schema",      [t|String|])
-    , ("table_name",        [t|String|])
-    , ("column_name",       [t|String|])
-    , ("ordinal_position",  [t|Int16|])
-    , ("column_default",    [t|Maybe String|])
-    , ("is_nullable",       [t|String|])
-    , ("data_type",         [t|String|])
-    ]
-    [''Show, ''Generic])
+import Database.Relational.Schema.MySQL.Columns
diff --git a/src/Database/Relational/Schema/MySQLInfo/Config.hs b/src/Database/Relational/Schema/MySQLInfo/Config.hs
--- a/src/Database/Relational/Schema/MySQLInfo/Config.hs
+++ b/src/Database/Relational/Schema/MySQLInfo/Config.hs
@@ -1,16 +1,6 @@
--- |
--- Module      : Database.Relational.Schema.MySQLInfo.Config
--- Copyright   : 2014 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.MySQLInfo.Config (config) where
-
-import Database.Relational (Config (..), defaultConfig)
-
+module Database.Relational.Schema.MySQLInfo.Config
+  {-# DEPRECATED "import config from Database.Relational.Schema.MySQL instead of this module." #-} (
+  config,
+  ) where
 
--- | Configuration parameter against MySQL.
-config :: Config
-config =  defaultConfig { normalizedTableName = False }
+import Database.Relational.Schema.MySQL.Config (config)
diff --git a/src/Database/Relational/Schema/MySQLInfo/KeyColumnUsage.hs b/src/Database/Relational/Schema/MySQLInfo/KeyColumnUsage.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/MySQLInfo/KeyColumnUsage.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.MySQLInfo.KeyColumnUsage where
-
-import GHC.Generics (Generic)
-import Data.Int                     (Int16)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.MySQLInfo.Config (config)
-
-
-$(defineTableTypesAndRecord config
-    "INFORMATION_SCHEMA" "key_column_usage"
-    [ ("constraint_name"    , [t| String |])
-    , ("table_schema"       , [t| String |])
-    , ("table_name"         , [t| String |])
-    , ("column_name"        , [t| String |])
-    , ("ordinal_position"   , [t| Int16 |])
-    ]
-    [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/MySQLInfo/TableConstraints.hs b/src/Database/Relational/Schema/MySQLInfo/TableConstraints.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/MySQLInfo/TableConstraints.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.MySQLInfo.TableConstraints where
-
-import GHC.Generics (Generic)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.MySQLInfo.Config (config)
-
-
-$(defineTableTypesAndRecord config
-    "INFORMATION_SCHEMA" "table_constraints"
-    [ ("table_schema"       , [t| String |])
-    , ("table_name"         , [t| String |])
-    , ("constraint_name"    , [t| String |])
-    , ("constraint_type"    , [t| String |])
-    ]
-    [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/Oracle.hs b/src/Database/Relational/Schema/Oracle.hs
--- a/src/Database/Relational/Schema/Oracle.hs
+++ b/src/Database/Relational/Schema/Oracle.hs
@@ -1,7 +1,9 @@
 {-# LANGUAGE TemplateHaskell #-}
 
 module Database.Relational.Schema.Oracle
-    ( normalizeColumn, notNull, getType
+    ( module Database.Relational.Schema.Oracle.Config
+
+    , normalizeColumn, notNull, getType
     , columnsQuerySQL, primaryKeyQuerySQL
     ) where
 
@@ -16,12 +18,13 @@
 
 import Database.Relational
 
-import Database.Relational.Schema.OracleDataDictionary.ConsColumns (dbaConsColumns)
-import qualified Database.Relational.Schema.OracleDataDictionary.ConsColumns as ConsCols
-import Database.Relational.Schema.OracleDataDictionary.Constraints (dbaConstraints)
-import qualified Database.Relational.Schema.OracleDataDictionary.Constraints as Cons
-import Database.Relational.Schema.OracleDataDictionary.TabColumns (DbaTabColumns, dbaTabColumns)
-import qualified Database.Relational.Schema.OracleDataDictionary.TabColumns as Cols
+import Database.Relational.Schema.Oracle.Config
+import Database.Relational.Schema.Oracle.ConsColumns (dbaConsColumns)
+import qualified Database.Relational.Schema.Oracle.ConsColumns as ConsCols
+import Database.Relational.Schema.Oracle.Constraints (dbaConstraints)
+import qualified Database.Relational.Schema.Oracle.Constraints as Cons
+import Database.Relational.Schema.Oracle.TabColumns (DbaTabColumns, dbaTabColumns)
+import qualified Database.Relational.Schema.Oracle.TabColumns as Cols
 
 -- NOT COMPLETED
 -- (ref: http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm)
diff --git a/src/Database/Relational/Schema/Oracle/Config.hs b/src/Database/Relational/Schema/Oracle/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/Oracle/Config.hs
@@ -0,0 +1,16 @@
+-- |
+-- Module      : Database.Relational.Schema.Oracle.Config
+-- Copyright   : 2014-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.Oracle.Config (config) where
+
+import Database.Relational (Config, defaultConfig)
+
+
+-- | Configuration parameter against Oracle.
+config :: Config
+config = defaultConfig
diff --git a/src/Database/Relational/Schema/Oracle/ConsColumns.hs b/src/Database/Relational/Schema/Oracle/ConsColumns.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/Oracle/ConsColumns.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.Oracle.ConsColumns where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.Oracle.Config (config)
+
+
+$(defineTableTypesAndRecord config
+    "SYS" "dba_cons_columns"
+    -- Column                                    NULL?    Datatype
+    -- ----------------------------------------- -------- ----------------------------
+    -- OWNER                                     NOT NULL VARCHAR2(30)
+    [ ("owner", [t|String|])
+    -- CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
+    , ("constraint_name", [t|String|])
+    -- TABLE_NAME                                NOT NULL VARCHAR2(30)
+    , ("table_name", [t|String|])
+    -- COLUMN_NAME                                        VARCHAR2(4000)
+    , ("column_name", [t|Maybe String|])
+    -- POSITION                                           NUMBER
+    , ("position", [t|Maybe Int32|])
+    ] [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/Oracle/Constraints.hs b/src/Database/Relational/Schema/Oracle/Constraints.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/Oracle/Constraints.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.Oracle.Constraints where
+
+import GHC.Generics (Generic)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.Oracle.Config (config)
+
+
+$(defineTableTypesAndRecord config
+    "SYS" "dba_constraints"
+    -- Column                                    NULL?    Datatype
+    -- ----------------------------------------- -------- ----------------------------
+    -- OWNER                                              VARCHAR2(30)
+    [ ("owner", [t|Maybe String|])
+    -- CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
+    , ("constraint_name", [t|String|])
+    -- CONSTRAINT_TYPE                                    VARCHAR2(1)
+    , ("constraint_type", [t|Maybe String|])
+    -- TABLE_NAME                                NOT NULL VARCHAR2(30)
+    , ("table_name", [t|String|])
+    -- SEARCH_CONDITION                                   LONG
+    -- R_OWNER                                            VARCHAR2(30)
+    -- R_CONSTRAINT_NAME                                  VARCHAR2(30)
+    -- DELETE_RULE                                        VARCHAR2(9)
+    -- STATUS                                             VARCHAR2(8)
+    -- DEFERRABLE                                         VARCHAR2(14)
+    -- DEFERRED                                           VARCHAR2(9)
+    -- VALIDATED                                          VARCHAR2(13)
+    -- GENERATED                                          VARCHAR2(14)
+    -- BAD                                                VARCHAR2(3)
+    -- RELY                                               VARCHAR2(4)
+    -- LAST_CHANGE                                        DATE
+    -- INDEX_OWNER                                        VARCHAR2(30)
+    -- INDEX_NAME                                         VARCHAR2(30)
+    -- INVALID                                            VARCHAR2(7)
+    -- VIEW_RELATED                                       VARCHAR2(14)
+    ] [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/Oracle/TabColumns.hs b/src/Database/Relational/Schema/Oracle/TabColumns.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/Oracle/TabColumns.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.Oracle.TabColumns where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.Oracle.Config (config)
+
+
+$(defineTableTypesAndRecord config
+    "SYS" "dba_tab_columns"
+    -- Column                                    NULL?    Datatype
+    -- ----------------------------------------- -------- ----------------------------
+    -- OWNER                                     NOT NULL VARCHAR2(30)
+    [ ("owner", [t|String|])
+    -- TABLE_NAME                                NOT NULL VARCHAR2(30)
+    , ("table_name", [t|String|])
+    -- COLUMN_NAME                               NOT NULL VARCHAR2(30)
+    , ("column_name", [t|String|])
+    -- DATA_TYPE                                          VARCHAR2(106)
+    , ("data_type", [t|Maybe String|])
+    -- DATA_TYPE_MOD                                      VARCHAR2(3)
+    , ("data_type_mod", [t|Maybe String|])
+    -- DATA_TYPE_OWNER                                    VARCHAR2(30)
+    , ("data_type_owner", [t|Maybe String|])
+    -- DATA_LENGTH                               NOT NULL NUMBER
+    , ("data_length", [t|Int32|])
+    -- DATA_PRECISION                                     NUMBER
+    , ("data_precision", [t|Maybe Int32|])
+    -- DATA_SCALE                                         NUMBER
+    , ("data_scale", [t|Maybe Int32|])
+    -- NULLABLE                                           VARCHAR2(1)
+    , ("nullable", [t|Maybe String|])
+    -- COLUMN_ID                                          NUMBER
+    , ("column_id", [t|Maybe Int32|])
+    -- DEFAULT_LENGTH                                     NUMBER
+    , ("default_length", [t|Maybe Int32|])
+    -- DATA_DEFAULT                                       LONG
+    , ("data_default", [t|Maybe String|])
+    -- NUM_DISTINCT                                       NUMBER
+    , ("num_distinct", [t|Maybe Int32|])
+    -- LOW_VALUE                                          RAW(32)
+    -- , ("low_value", [t|Maybe ByteString|])
+    -- HIGH_VALUE                                         RAW(32)
+    -- , ("high_value", [t|Maybe ByteString|])
+    -- DENSITY                                            NUMBER
+    , ("density", [t|Maybe Int32|])
+    -- NUM_NULLS                                          NUMBER
+    , ("num_nulls", [t|Maybe Int32|])
+    -- NUM_BUCKETS                                        NUMBER
+    , ("num_buckets", [t|Maybe Int32|])
+    -- LAST_ANALYZED                                      DATE
+    -- , ("last_analyzed", [t|Maybe Day|])
+    -- SAMPLE_SIZE                                        NUMBER
+    , ("sample_size", [t|Maybe Int32|])
+    -- CHARACTER_SET_NAME                                 VARCHAR2(44)
+    , ("character_set_name", [t|Maybe String|])
+    -- CHAR_COL_DECL_LENGTH                               NUMBER
+    , ("char_col_decl_length", [t|Maybe Int32|])
+    -- GLOBAL_STATS                                       VARCHAR2(3)
+    , ("global_stats", [t|Maybe String|])
+    -- USER_STATS                                         VARCHAR2(3)
+    , ("user_stats", [t|Maybe String|])
+    -- AVG_COL_LEN                                        NUMBER
+    , ("avg_col_len", [t|Maybe Int32|])
+    -- CHAR_LENGTH                                        NUMBER
+    , ("char_length", [t|Maybe Int32|])
+    -- CHAR_USED                                          VARCHAR2(1)
+    , ("char_used", [t|Maybe String|])
+    -- V80_FMT_IMAGE                                      VARCHAR2(3)
+    , ("v80_fmt_image", [t|Maybe String|])
+    -- DATA_UPGRADED                                      VARCHAR2(3)
+    , ("data_upgraded", [t|Maybe String|])
+    -- HISTOGRAM                                          VARCHAR2(15)
+    , ("histogram", [t|Maybe String|])
+    ] [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/OracleDataDictionary/Config.hs b/src/Database/Relational/Schema/OracleDataDictionary/Config.hs
--- a/src/Database/Relational/Schema/OracleDataDictionary/Config.hs
+++ b/src/Database/Relational/Schema/OracleDataDictionary/Config.hs
@@ -1,16 +1,6 @@
--- |
--- Module      : Database.Relational.Schema.OracleDataDictionary.Config
--- Copyright   : 2014 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.OracleDataDictionary.Config (config) where
-
-import Database.Relational (Config, defaultConfig)
-
+module Database.Relational.Schema.OracleDataDictionary.Config
+  {-# DEPRECATED "import config from Database.Relational.Schema.Oracle instead of this module." #-} (
+  config,
+  ) where
 
--- | Configuration parameter against Oracle.
-config :: Config
-config =  defaultConfig
+import Database.Relational.Schema.Oracle.Config (config)
diff --git a/src/Database/Relational/Schema/OracleDataDictionary/ConsColumns.hs b/src/Database/Relational/Schema/OracleDataDictionary/ConsColumns.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/OracleDataDictionary/ConsColumns.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.OracleDataDictionary.ConsColumns where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.OracleDataDictionary.Config (config)
-
-
-$(defineTableTypesAndRecord config
-    "SYS" "dba_cons_columns"
-    -- Column                                    NULL?    Datatype
-    -- ----------------------------------------- -------- ----------------------------
-    -- OWNER                                     NOT NULL VARCHAR2(30)
-    [ ("owner", [t|String|])
-    -- CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
-    , ("constraint_name", [t|String|])
-    -- TABLE_NAME                                NOT NULL VARCHAR2(30)
-    , ("table_name", [t|String|])
-    -- COLUMN_NAME                                        VARCHAR2(4000)
-    , ("column_name", [t|Maybe String|])
-    -- POSITION                                           NUMBER
-    , ("position", [t|Maybe Int32|])
-    ] [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/OracleDataDictionary/Constraints.hs b/src/Database/Relational/Schema/OracleDataDictionary/Constraints.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/OracleDataDictionary/Constraints.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.OracleDataDictionary.Constraints where
-
-import GHC.Generics (Generic)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.OracleDataDictionary.Config (config)
-
-
-$(defineTableTypesAndRecord config
-    "SYS" "dba_constraints"
-    -- Column                                    NULL?    Datatype
-    -- ----------------------------------------- -------- ----------------------------
-    -- OWNER                                              VARCHAR2(30)
-    [ ("owner", [t|Maybe String|])
-    -- CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
-    , ("constraint_name", [t|String|])
-    -- CONSTRAINT_TYPE                                    VARCHAR2(1)
-    , ("constraint_type", [t|Maybe String|])
-    -- TABLE_NAME                                NOT NULL VARCHAR2(30)
-    , ("table_name", [t|String|])
-    -- SEARCH_CONDITION                                   LONG
-    -- R_OWNER                                            VARCHAR2(30)
-    -- R_CONSTRAINT_NAME                                  VARCHAR2(30)
-    -- DELETE_RULE                                        VARCHAR2(9)
-    -- STATUS                                             VARCHAR2(8)
-    -- DEFERRABLE                                         VARCHAR2(14)
-    -- DEFERRED                                           VARCHAR2(9)
-    -- VALIDATED                                          VARCHAR2(13)
-    -- GENERATED                                          VARCHAR2(14)
-    -- BAD                                                VARCHAR2(3)
-    -- RELY                                               VARCHAR2(4)
-    -- LAST_CHANGE                                        DATE
-    -- INDEX_OWNER                                        VARCHAR2(30)
-    -- INDEX_NAME                                         VARCHAR2(30)
-    -- INVALID                                            VARCHAR2(7)
-    -- VIEW_RELATED                                       VARCHAR2(14)
-    ] [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/OracleDataDictionary/TabColumns.hs b/src/Database/Relational/Schema/OracleDataDictionary/TabColumns.hs
--- a/src/Database/Relational/Schema/OracleDataDictionary/TabColumns.hs
+++ b/src/Database/Relational/Schema/OracleDataDictionary/TabColumns.hs
@@ -1,82 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.OracleDataDictionary.TabColumns where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.OracleDataDictionary.Config (config)
-
+module Database.Relational.Schema.OracleDataDictionary.TabColumns
+  {-# DEPRECATED "import Database.Relational.Schema.Oracle.TabColumns instead of this module." #-} (
+  module Database.Relational.Schema.Oracle.TabColumns,
+  ) where
 
-$(defineTableTypesAndRecord config
-    "SYS" "dba_tab_columns"
-    -- Column                                    NULL?    Datatype
-    -- ----------------------------------------- -------- ----------------------------
-    -- OWNER                                     NOT NULL VARCHAR2(30)
-    [ ("owner", [t|String|])
-    -- TABLE_NAME                                NOT NULL VARCHAR2(30)
-    , ("table_name", [t|String|])
-    -- COLUMN_NAME                               NOT NULL VARCHAR2(30)
-    , ("column_name", [t|String|])
-    -- DATA_TYPE                                          VARCHAR2(106)
-    , ("data_type", [t|Maybe String|])
-    -- DATA_TYPE_MOD                                      VARCHAR2(3)
-    , ("data_type_mod", [t|Maybe String|])
-    -- DATA_TYPE_OWNER                                    VARCHAR2(30)
-    , ("data_type_owner", [t|Maybe String|])
-    -- DATA_LENGTH                               NOT NULL NUMBER
-    , ("data_length", [t|Int32|])
-    -- DATA_PRECISION                                     NUMBER
-    , ("data_precision", [t|Maybe Int32|])
-    -- DATA_SCALE                                         NUMBER
-    , ("data_scale", [t|Maybe Int32|])
-    -- NULLABLE                                           VARCHAR2(1)
-    , ("nullable", [t|Maybe String|])
-    -- COLUMN_ID                                          NUMBER
-    , ("column_id", [t|Maybe Int32|])
-    -- DEFAULT_LENGTH                                     NUMBER
-    , ("default_length", [t|Maybe Int32|])
-    -- DATA_DEFAULT                                       LONG
-    , ("data_default", [t|Maybe String|])
-    -- NUM_DISTINCT                                       NUMBER
-    , ("num_distinct", [t|Maybe Int32|])
-    -- LOW_VALUE                                          RAW(32)
-    -- , ("low_value", [t|Maybe ByteString|])
-    -- HIGH_VALUE                                         RAW(32)
-    -- , ("high_value", [t|Maybe ByteString|])
-    -- DENSITY                                            NUMBER
-    , ("density", [t|Maybe Int32|])
-    -- NUM_NULLS                                          NUMBER
-    , ("num_nulls", [t|Maybe Int32|])
-    -- NUM_BUCKETS                                        NUMBER
-    , ("num_buckets", [t|Maybe Int32|])
-    -- LAST_ANALYZED                                      DATE
-    -- , ("last_analyzed", [t|Maybe Day|])
-    -- SAMPLE_SIZE                                        NUMBER
-    , ("sample_size", [t|Maybe Int32|])
-    -- CHARACTER_SET_NAME                                 VARCHAR2(44)
-    , ("character_set_name", [t|Maybe String|])
-    -- CHAR_COL_DECL_LENGTH                               NUMBER
-    , ("char_col_decl_length", [t|Maybe Int32|])
-    -- GLOBAL_STATS                                       VARCHAR2(3)
-    , ("global_stats", [t|Maybe String|])
-    -- USER_STATS                                         VARCHAR2(3)
-    , ("user_stats", [t|Maybe String|])
-    -- AVG_COL_LEN                                        NUMBER
-    , ("avg_col_len", [t|Maybe Int32|])
-    -- CHAR_LENGTH                                        NUMBER
-    , ("char_length", [t|Maybe Int32|])
-    -- CHAR_USED                                          VARCHAR2(1)
-    , ("char_used", [t|Maybe String|])
-    -- V80_FMT_IMAGE                                      VARCHAR2(3)
-    , ("v80_fmt_image", [t|Maybe String|])
-    -- DATA_UPGRADED                                      VARCHAR2(3)
-    , ("data_upgraded", [t|Maybe String|])
-    -- HISTOGRAM                                          VARCHAR2(15)
-    , ("histogram", [t|Maybe String|])
-    ] [''Show, ''Generic])
+import Database.Relational.Schema.Oracle.TabColumns
diff --git a/src/Database/Relational/Schema/PgCatalog/Config.hs b/src/Database/Relational/Schema/PgCatalog/Config.hs
--- a/src/Database/Relational/Schema/PgCatalog/Config.hs
+++ b/src/Database/Relational/Schema/PgCatalog/Config.hs
@@ -1,16 +1,6 @@
--- |
--- Module      : Database.Relational.Schema.PgCatalog.Config
--- Copyright   : 2014 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.PgCatalog.Config (config) where
-
-import Database.Relational (Config, defaultConfig)
-
+module Database.Relational.Schema.PgCatalog.Config
+  {-# DEPRECATED "import config from Database.Relational.Schema.PostgreSQL instead of this module." #-} (
+  config,
+  ) where
 
--- | Configuration parameter against PostgreSQL.
-config :: Config
-config =  defaultConfig
+import Database.Relational.Schema.PostgreSQL.Config (config)
diff --git a/src/Database/Relational/Schema/PgCatalog/PgAttribute.hs b/src/Database/Relational/Schema/PgCatalog/PgAttribute.hs
--- a/src/Database/Relational/Schema/PgCatalog/PgAttribute.hs
+++ b/src/Database/Relational/Schema/PgCatalog/PgAttribute.hs
@@ -1,72 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.HDBC.Schema.PgCatalog.PgAttribute
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.PgCatalog.PgAttribute where
-
-import GHC.Generics (Generic)
-import Data.Int (Int16, Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.PgCatalog.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "PG_CATALOG" "pg_attribute"
+module Database.Relational.Schema.PgCatalog.PgAttribute
+  {-# DEPRECATED "import Database.Relational.Schema.PostgreSQL.PgAttribute instead of this module." #-} (
+  module Database.Relational.Schema.PostgreSQL.PgAttribute,
+  ) where
 
-  [
--- Table "pg_catalog.pg_attribute"
---     Column     |   Type    | Modifiers
--- ---------------+-----------+-----------
---  attrelid      | oid       | not null
-    ("attrelid"     , [t|Int32|]),
---  attname       | name      | not null
-    ("attname"      , [t|String|]),
---  atttypid      | oid       | not null
-    ("atttypid"     , [t|Int32|]),
---  attstattarget | integer   | not null
-    ("attstattarget", [t|Int32|]),
---  attlen        | smallint  | not null
-    ("attlen"       , [t|Int16|]),
---  attnum        | smallint  | not null
-    ("attnum"      , [t|Int16|]),
---  attndims      | integer   | not null
-    ("attndims"    , [t|Int32|]),
---  attcacheoff   | integer   | not null
-    ("attcacheoff" , [t|Int32|]),
---  atttypmod     | integer   | not null
-    ("atttypmod"   , [t|Int32|]),
---  attbyval      | boolean   | not null
-    ("attbyval"    , [t|Bool|]),
---  attstorage    | "char"    | not null
-    ("attstorage"  , [t|Char|]),
---  attalign      | "char"    | not null
-    ("attalign"    , [t|Char|]),
---  attnotnull    | boolean   | not null
-    ("attnotnull"  , [t|Bool|]),
---  atthasdef     | boolean   | not null
-    ("atthasdef"   , [t|Bool|]),
---  attisdropped  | boolean   | not null
-    ("attisdropped", [t|Bool|]),
---  attislocal    | boolean   | not null
-    ("attislocal"  , [t|Bool|]),
---  attinhcount   | integer   | not null
-    ("attinhcount" , [t|Int32|]),
---  attcollation  | oid       | not null
-    ("attcollation", [t|Int32|])
---  attacl        | aclitem[] |
-    -- ("attacl"      , [t|String|]),
---  attoptions    | text[]    |
-    -- ("attoptions"  , [t|String|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.PostgreSQL.PgAttribute
diff --git a/src/Database/Relational/Schema/PgCatalog/PgClass.hs b/src/Database/Relational/Schema/PgCatalog/PgClass.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/PgCatalog/PgClass.hs
+++ /dev/null
@@ -1,56 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.PgCatalog.PgClass
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.PgCatalog.PgClass where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.PgCatalog.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "PG_CATALOG" "pg_class"
-  [("oid"         , [t| Int32 |]),
- -- relname        | name      | not null
-   ("relname"     , [t| String |]),
- -- relnamespace   | oid       | not null
-   ("relnamespace", [t| Int32 |])
- -- reltype        | oid       | not null
- -- reloftype      | oid       | not null
- -- relowner       | oid       | not null
- -- relam          | oid       | not null
- -- relfilenode    | oid       | not null
- -- reltablespace  | oid       | not null
- -- relpages       | integer   | not null
- -- reltuples      | real      | not null
- -- reltoastrelid  | oid       | not null
- -- reltoastidxid  | oid       | not null
- -- relhasindex    | boolean   | not null
- -- relisshared    | boolean   | not null
- -- relpersistence | "char"    | not null
- -- relkind        | "char"    | not null
- -- relnatts       | smallint  | not null
- -- relchecks      | smallint  | not null
- -- relhasoids     | boolean   | not null
- -- relhaspkey     | boolean   | not null
- -- relhasrules    | boolean   | not null
- -- relhastriggers | boolean   | not null
- -- relhassubclass | boolean   | not null
- -- relfrozenxid   | xid       | not null
- -- relacl         | aclitem[] |
- -- reloptions     | text[]    |
-  ]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PgCatalog/PgConstraint.hs b/src/Database/Relational/Schema/PgCatalog/PgConstraint.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/PgCatalog/PgConstraint.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.PgCatalog.PgConstraint
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.PgCatalog.PgConstraint where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.PgCatalog.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "PG_CATALOG" "pg_constraint"
-  [ -- ("oid"    , [t| Int32 |]),
- -- conname       | name         | not null
- -- connamespace  | oid          | not null
- -- contype       | "char"       | not null
-    ("contype",   [t| Char |]),
- -- condeferrable | boolean      | not null
- -- condeferred   | boolean      | not null
- -- convalidated  | boolean      | not null
- -- conrelid      | oid          | not null
-    ("conrelid",  [t| Int32 |])
- -- contypid      | oid          | not null
- -- conindid      | oid          | not null
- -- confrelid     | oid          | not null
- -- confupdtype   | "char"       | not null
- -- confdeltype   | "char"       | not null
- -- confmatchtype | "char"       | not null
- -- conislocal    | boolean      | not null
- -- coninhcount   | integer      | not null
- -- conkey        | smallint[]   |
-    -- ("conkey",  ???),
- -- confkey       | smallint[]   |
- -- conpfeqop     | oid[]        |
- -- conppeqop     | oid[]        |
- -- conffeqop     | oid[]        |
- -- conexclop     | oid[]        |
- -- conbin        | pg_node_tree |
- -- consrc        | text         |
-  ]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PgCatalog/PgNamespace.hs b/src/Database/Relational/Schema/PgCatalog/PgNamespace.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/PgCatalog/PgNamespace.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.PgCatalog.PgNamespace
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.PgCatalog.PgNamespace where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.PgCatalog.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "PG_CATALOG" "pg_namespace"
-  [("oid"    , [t| Int32 |]),
- -- nspname  | name      | not null
-   ("nspname", [t| String |])
- -- nspowner | oid       | not null
- -- nspacl   | aclitem[] |
-  ]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PgCatalog/PgType.hs b/src/Database/Relational/Schema/PgCatalog/PgType.hs
--- a/src/Database/Relational/Schema/PgCatalog/PgType.hs
+++ b/src/Database/Relational/Schema/PgCatalog/PgType.hs
@@ -1,91 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
--- |
--- Module      : Database.Relational.Schema.PgCatalog.PgType
--- Copyright   : 2013-2017 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.PgCatalog.PgType where
-
-import GHC.Generics (Generic)
-import Data.Int (Int16, Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.PgCatalog.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "PG_CATALOG" "pg_type"
+module Database.Relational.Schema.PgCatalog.PgType
+  {-# DEPRECATED "import Database.Relational.Schema.PostgreSQL.PgType instead of this module." #-} (
+  module Database.Relational.Schema.PostgreSQL.PgType,
+  ) where
 
-  [
-    ("oid", [t|Int32|]),
--- Table "pg_catalog.pg_type"
---      Column     |     Type     | Modifiers
--- ----------------+--------------+-----------
---  typname        | name         | not null
-    ("typname", [t|String|]),
---  typnamespace   | oid          | not null
-    ("typnamespace", [t|Int32|]),
---  typowner       | oid          | not null
-    ("typowner", [t|Int32|]),
---  typlen         | smallint     | not null
-    ("typlen", [t|Int16|]),
---  typbyval       | boolean      | not null
-    ("typbyval", [t|Bool|]),
---  typtype        | "char"       | not null
-    ("typtype", [t|Char|]),
---  typcategory    | "char"       | not null
-    ("typcategory", [t|Char|]),
---  typispreferred | boolean      | not null
-    ("typispreferred", [t|Bool|]),
---  typisdefined   | boolean      | not null
-    ("typisdefined", [t|Bool|]),
---  typdelim       | "char"       | not null
-    ("typdelim", [t|Char|]),
---  typrelid       | oid          | not null
-    ("typrelid", [t|Int32|]),
---  typelem        | oid          | not null
-    ("typelem", [t|Int32|]),
---  typarray       | oid          | not null
-    ("typarray", [t|Int32|]),
---  typinput       | regproc      | not null
-    -- ("typinput", [t||]),
---  typoutput      | regproc      | not null
-    -- ("typoutput", [t||]),
---  typreceive     | regproc      | not null
-    -- ("typreceive", [t||]),
---  typsend        | regproc      | not null
-    -- ("typsend", [t||]),
---  typmodin       | regproc      | not null
-    -- ("typmodin", [t||]),
---  typmodout      | regproc      | not null
-    -- ("typmodout", [t||]),
---  typanalyze     | regproc      | not null
-    -- ("typanalyze", [t||]),
---  typalign       | "char"       | not null
-    ("typalign", [t|Char|]),
---  typstorage     | "char"       | not null
-    ("typstorage", [t|Char|]),
---  typnotnull     | boolean      | not null
-    ("typnotnull", [t|Bool|]),
---  typbasetype    | oid          | not null
-    ("typbasetype", [t|Int32|]),
---  typtypmod      | integer      | not null
-    ("typtypmod", [t|Int32|]),
---  typndims       | integer      | not null
-    ("typndims", [t|Int32|]),
---  typcollation   | oid          | not null
-    ("typcollation", [t|Int32|]),
---  typdefaultbin  | pg_node_tree |
-    -- ("typdefaultbin", [t||]),
---  typdefault     | text         |
-    ("typdefault", [t|Maybe String|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.PostgreSQL.PgType
diff --git a/src/Database/Relational/Schema/PostgreSQL.hs b/src/Database/Relational/Schema/PostgreSQL.hs
--- a/src/Database/Relational/Schema/PostgreSQL.hs
+++ b/src/Database/Relational/Schema/PostgreSQL.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Database.Relational.Schema.PostgreSQL
--- Copyright   : 2013 Kei Hibino
+-- Copyright   : 2013-2019 Kei Hibino
 -- License     : BSD3
 --
 -- Maintainer  : ex8k.hibino@gmail.com
@@ -13,6 +13,8 @@
 -- table schema and table constraint informations
 -- from system catalog of PostgreSQL.
 module Database.Relational.Schema.PostgreSQL (
+  module Database.Relational.Schema.PostgreSQL.Config,
+
   Column,
 
   normalizeColumn, notNull, getType,
@@ -39,17 +41,18 @@
    wheres, (.=.), (.>.), in', values, (!), fst', snd',
    placeholder, asc, value, unsafeProjectSql, (><))
 
-import Database.Relational.Schema.PgCatalog.PgNamespace (pgNamespace)
-import qualified Database.Relational.Schema.PgCatalog.PgNamespace as Namespace
-import Database.Relational.Schema.PgCatalog.PgClass (pgClass)
-import qualified Database.Relational.Schema.PgCatalog.PgClass as Class
-import Database.Relational.Schema.PgCatalog.PgConstraint (PgConstraint, pgConstraint)
-import qualified Database.Relational.Schema.PgCatalog.PgConstraint as Constraint
+import Database.Relational.Schema.PostgreSQL.Config
+import Database.Relational.Schema.PostgreSQL.PgNamespace (pgNamespace)
+import qualified Database.Relational.Schema.PostgreSQL.PgNamespace as Namespace
+import Database.Relational.Schema.PostgreSQL.PgClass (pgClass)
+import qualified Database.Relational.Schema.PostgreSQL.PgClass as Class
+import Database.Relational.Schema.PostgreSQL.PgConstraint (PgConstraint, pgConstraint)
+import qualified Database.Relational.Schema.PostgreSQL.PgConstraint as Constraint
 
-import Database.Relational.Schema.PgCatalog.PgAttribute (PgAttribute, pgAttribute)
-import qualified Database.Relational.Schema.PgCatalog.PgAttribute as Attr
-import Database.Relational.Schema.PgCatalog.PgType (PgType(..), pgType)
-import qualified Database.Relational.Schema.PgCatalog.PgType as Type
+import Database.Relational.Schema.PostgreSQL.PgAttribute (PgAttribute, pgAttribute)
+import qualified Database.Relational.Schema.PostgreSQL.PgAttribute as Attr
+import Database.Relational.Schema.PostgreSQL.PgType (PgType(..), pgType)
+import qualified Database.Relational.Schema.PostgreSQL.PgType as Type
 
 import Control.Applicative ((<|>))
 
diff --git a/src/Database/Relational/Schema/PostgreSQL/Config.hs b/src/Database/Relational/Schema/PostgreSQL/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/PostgreSQL/Config.hs
@@ -0,0 +1,16 @@
+-- |
+-- Module      : Database.Relational.Schema.PostgreSQL.Config
+-- Copyright   : 2014-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.PostgreSQL.Config (config) where
+
+import Database.Relational (Config, defaultConfig)
+
+
+-- | Configuration parameter against PostgreSQL.
+config :: Config
+config = defaultConfig
diff --git a/src/Database/Relational/Schema/PostgreSQL/PgAttribute.hs b/src/Database/Relational/Schema/PostgreSQL/PgAttribute.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/PostgreSQL/PgAttribute.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.HDBC.Schema.PostgreSQL.PgAttribute
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.PostgreSQL.PgAttribute where
+
+import GHC.Generics (Generic)
+import Data.Int (Int16, Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.PostgreSQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "PG_CATALOG" "pg_attribute"
+
+  [
+-- Table "pg_catalog.pg_attribute"
+--     Column     |   Type    | Modifiers
+-- ---------------+-----------+-----------
+--  attrelid      | oid       | not null
+    ("attrelid"     , [t|Int32|]),
+--  attname       | name      | not null
+    ("attname"      , [t|String|]),
+--  atttypid      | oid       | not null
+    ("atttypid"     , [t|Int32|]),
+--  attstattarget | integer   | not null
+    ("attstattarget", [t|Int32|]),
+--  attlen        | smallint  | not null
+    ("attlen"       , [t|Int16|]),
+--  attnum        | smallint  | not null
+    ("attnum"      , [t|Int16|]),
+--  attndims      | integer   | not null
+    ("attndims"    , [t|Int32|]),
+--  attcacheoff   | integer   | not null
+    ("attcacheoff" , [t|Int32|]),
+--  atttypmod     | integer   | not null
+    ("atttypmod"   , [t|Int32|]),
+--  attbyval      | boolean   | not null
+    ("attbyval"    , [t|Bool|]),
+--  attstorage    | "char"    | not null
+    ("attstorage"  , [t|Char|]),
+--  attalign      | "char"    | not null
+    ("attalign"    , [t|Char|]),
+--  attnotnull    | boolean   | not null
+    ("attnotnull"  , [t|Bool|]),
+--  atthasdef     | boolean   | not null
+    ("atthasdef"   , [t|Bool|]),
+--  attisdropped  | boolean   | not null
+    ("attisdropped", [t|Bool|]),
+--  attislocal    | boolean   | not null
+    ("attislocal"  , [t|Bool|]),
+--  attinhcount   | integer   | not null
+    ("attinhcount" , [t|Int32|]),
+--  attcollation  | oid       | not null
+    ("attcollation", [t|Int32|])
+--  attacl        | aclitem[] |
+    -- ("attacl"      , [t|String|]),
+--  attoptions    | text[]    |
+    -- ("attoptions"  , [t|String|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PostgreSQL/PgClass.hs b/src/Database/Relational/Schema/PostgreSQL/PgClass.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/PostgreSQL/PgClass.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.PostgreSQL.PgClass
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.PostgreSQL.PgClass where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.PostgreSQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "PG_CATALOG" "pg_class"
+  [("oid"         , [t| Int32 |]),
+ -- relname        | name      | not null
+   ("relname"     , [t| String |]),
+ -- relnamespace   | oid       | not null
+   ("relnamespace", [t| Int32 |])
+ -- reltype        | oid       | not null
+ -- reloftype      | oid       | not null
+ -- relowner       | oid       | not null
+ -- relam          | oid       | not null
+ -- relfilenode    | oid       | not null
+ -- reltablespace  | oid       | not null
+ -- relpages       | integer   | not null
+ -- reltuples      | real      | not null
+ -- reltoastrelid  | oid       | not null
+ -- reltoastidxid  | oid       | not null
+ -- relhasindex    | boolean   | not null
+ -- relisshared    | boolean   | not null
+ -- relpersistence | "char"    | not null
+ -- relkind        | "char"    | not null
+ -- relnatts       | smallint  | not null
+ -- relchecks      | smallint  | not null
+ -- relhasoids     | boolean   | not null
+ -- relhaspkey     | boolean   | not null
+ -- relhasrules    | boolean   | not null
+ -- relhastriggers | boolean   | not null
+ -- relhassubclass | boolean   | not null
+ -- relfrozenxid   | xid       | not null
+ -- relacl         | aclitem[] |
+ -- reloptions     | text[]    |
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PostgreSQL/PgConstraint.hs b/src/Database/Relational/Schema/PostgreSQL/PgConstraint.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/PostgreSQL/PgConstraint.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.PostgreSQL.PgConstraint
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.PostgreSQL.PgConstraint where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.PostgreSQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "PG_CATALOG" "pg_constraint"
+  [ -- ("oid"    , [t| Int32 |]),
+ -- conname       | name         | not null
+ -- connamespace  | oid          | not null
+ -- contype       | "char"       | not null
+    ("contype",   [t| Char |]),
+ -- condeferrable | boolean      | not null
+ -- condeferred   | boolean      | not null
+ -- convalidated  | boolean      | not null
+ -- conrelid      | oid          | not null
+    ("conrelid",  [t| Int32 |])
+ -- contypid      | oid          | not null
+ -- conindid      | oid          | not null
+ -- confrelid     | oid          | not null
+ -- confupdtype   | "char"       | not null
+ -- confdeltype   | "char"       | not null
+ -- confmatchtype | "char"       | not null
+ -- conislocal    | boolean      | not null
+ -- coninhcount   | integer      | not null
+ -- conkey        | smallint[]   |
+    -- ("conkey",  ???),
+ -- confkey       | smallint[]   |
+ -- conpfeqop     | oid[]        |
+ -- conppeqop     | oid[]        |
+ -- conffeqop     | oid[]        |
+ -- conexclop     | oid[]        |
+ -- conbin        | pg_node_tree |
+ -- consrc        | text         |
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PostgreSQL/PgNamespace.hs b/src/Database/Relational/Schema/PostgreSQL/PgNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/PostgreSQL/PgNamespace.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.PostgreSQL.PgNamespace
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.PostgreSQL.PgNamespace where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.PostgreSQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "PG_CATALOG" "pg_namespace"
+  [("oid"    , [t| Int32 |]),
+ -- nspname  | name      | not null
+   ("nspname", [t| String |])
+ -- nspowner | oid       | not null
+ -- nspacl   | aclitem[] |
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/PostgreSQL/PgType.hs b/src/Database/Relational/Schema/PostgreSQL/PgType.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/PostgreSQL/PgType.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+-- |
+-- Module      : Database.Relational.Schema.PostgreSQL.PgType
+-- Copyright   : 2013-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.PostgreSQL.PgType where
+
+import GHC.Generics (Generic)
+import Data.Int (Int16, Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.PostgreSQL.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "PG_CATALOG" "pg_type"
+
+  [
+    ("oid", [t|Int32|]),
+-- Table "pg_catalog.pg_type"
+--      Column     |     Type     | Modifiers
+-- ----------------+--------------+-----------
+--  typname        | name         | not null
+    ("typname", [t|String|]),
+--  typnamespace   | oid          | not null
+    ("typnamespace", [t|Int32|]),
+--  typowner       | oid          | not null
+    ("typowner", [t|Int32|]),
+--  typlen         | smallint     | not null
+    ("typlen", [t|Int16|]),
+--  typbyval       | boolean      | not null
+    ("typbyval", [t|Bool|]),
+--  typtype        | "char"       | not null
+    ("typtype", [t|Char|]),
+--  typcategory    | "char"       | not null
+    ("typcategory", [t|Char|]),
+--  typispreferred | boolean      | not null
+    ("typispreferred", [t|Bool|]),
+--  typisdefined   | boolean      | not null
+    ("typisdefined", [t|Bool|]),
+--  typdelim       | "char"       | not null
+    ("typdelim", [t|Char|]),
+--  typrelid       | oid          | not null
+    ("typrelid", [t|Int32|]),
+--  typelem        | oid          | not null
+    ("typelem", [t|Int32|]),
+--  typarray       | oid          | not null
+    ("typarray", [t|Int32|]),
+--  typinput       | regproc      | not null
+    -- ("typinput", [t||]),
+--  typoutput      | regproc      | not null
+    -- ("typoutput", [t||]),
+--  typreceive     | regproc      | not null
+    -- ("typreceive", [t||]),
+--  typsend        | regproc      | not null
+    -- ("typsend", [t||]),
+--  typmodin       | regproc      | not null
+    -- ("typmodin", [t||]),
+--  typmodout      | regproc      | not null
+    -- ("typmodout", [t||]),
+--  typanalyze     | regproc      | not null
+    -- ("typanalyze", [t||]),
+--  typalign       | "char"       | not null
+    ("typalign", [t|Char|]),
+--  typstorage     | "char"       | not null
+    ("typstorage", [t|Char|]),
+--  typnotnull     | boolean      | not null
+    ("typnotnull", [t|Bool|]),
+--  typbasetype    | oid          | not null
+    ("typbasetype", [t|Int32|]),
+--  typtypmod      | integer      | not null
+    ("typtypmod", [t|Int32|]),
+--  typndims       | integer      | not null
+    ("typndims", [t|Int32|]),
+--  typcollation   | oid          | not null
+    ("typcollation", [t|Int32|]),
+--  typdefaultbin  | pg_node_tree |
+    -- ("typdefaultbin", [t||]),
+--  typdefault     | text         |
+    ("typdefault", [t|Maybe String|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServer.hs b/src/Database/Relational/Schema/SQLServer.hs
--- a/src/Database/Relational/Schema/SQLServer.hs
+++ b/src/Database/Relational/Schema/SQLServer.hs
@@ -1,15 +1,17 @@
 {-# LANGUAGE TemplateHaskell #-}
 
 module Database.Relational.Schema.SQLServer (
+  module Database.Relational.Schema.SQLServer.Config,
+
   getType, normalizeColumn, notNull,
   columnTypeQuerySQL, primaryKeyQuerySQL
   ) where
 
 import qualified Data.Map as Map
-import qualified Database.Relational.Schema.SQLServerSyscat.Columns as Columns
-import qualified Database.Relational.Schema.SQLServerSyscat.Indexes as Indexes
-import qualified Database.Relational.Schema.SQLServerSyscat.IndexColumns as IndexColumns
-import qualified Database.Relational.Schema.SQLServerSyscat.Types as Types
+import qualified Database.Relational.Schema.SQLServer.Columns as Columns
+import qualified Database.Relational.Schema.SQLServer.Indexes as Indexes
+import qualified Database.Relational.Schema.SQLServer.IndexColumns as IndexColumns
+import qualified Database.Relational.Schema.SQLServer.Types as Types
 
 import Control.Applicative ((<|>))
 import Data.ByteString (ByteString)
@@ -21,10 +23,12 @@
                             (!), (.=.), (><), asc, relationalQuery, just, placeholder',
                             query, relation', unsafeShowSql,
                             unsafeProjectSql, wheres)
-import Database.Relational.Schema.SQLServerSyscat.Columns
-import Database.Relational.Schema.SQLServerSyscat.Indexes
-import Database.Relational.Schema.SQLServerSyscat.IndexColumns
-import Database.Relational.Schema.SQLServerSyscat.Types
+
+import Database.Relational.Schema.SQLServer.Config
+import Database.Relational.Schema.SQLServer.Columns
+import Database.Relational.Schema.SQLServer.Indexes
+import Database.Relational.Schema.SQLServer.IndexColumns
+import Database.Relational.Schema.SQLServer.Types
 import Language.Haskell.TH (TypeQ)
 
 --{-# ANN module "HLint: ignore Redundant $" #-}
diff --git a/src/Database/Relational/Schema/SQLServer/Columns.hs b/src/Database/Relational/Schema/SQLServer/Columns.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLServer/Columns.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLServer.Columns where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLServer.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "sys" "columns"
+  [
+  -- column                schema  type                length   NULL
+  -- --------------------- ------- ------------------- -------- ------
+  -- object_id             sys     int                        4 No
+    ("object_id", [t|Int32|]),
+  -- name                  sys     sysname(nvarchar)        128 Yes
+    ("name", [t|Maybe String|]),
+  -- column_id             sys     int                        4 No
+    ("column_id", [t|Int32|]),
+  -- system_type_id        sys     tinyint                    1 No
+    --("system_type_id", [t|Int32|]),
+  -- user_type_id          sys     int                        4 No
+    ("user_type_id", [t|Int32|]),
+  -- max_length            sys     smallint                   2 No
+    --("max_length", [t|Int32|]),
+  -- precision             sys     tinyint                    1 No
+    --("precision", [t|Int32|]),
+  -- scale                 sys     tinyint                    1 No
+    --("scale", [t|Int32|]),
+  -- collation_name        sys     sysname(nvarchar)        128 Yes
+    --("collation_name", [t|Maybe String|]),
+  -- is_nullable           sys     bit                        1 Yes
+    ("is_nullable", [t|Maybe Bool|])--,
+  -- is_ansi_padded        sys     bit                        1 No
+    --("is_ansi_padded", [t|Bool|]),
+  -- is_rowguidcol         sys     bit                        1 No
+    --("is_rowguidcol", [t|Bool|]),
+  -- is_identity           sys     bit                        1 No
+    --("is_identity", [t|Bool|]),
+  -- is_computed           sys     bit                        1 No
+    --("is_computed", [t|Bool|]),
+  -- is_filestream         sys     bit                        1 No
+    --("is_filestream", [t|Bool|]),
+  -- is_replicated         sys     bit                        1 Yes
+    --("is_replicated", [t|Maybe Bool|]),
+  -- is_non_sql_subscribed sys     bit                        1 Yes
+    --("is_non_sql_subscribed", [t|Maybe Bool|]),
+  -- is_merge_published    sys     bit                        1 Yes
+    --("is_merge_published", [t|Maybe Bool|]),
+  -- is_dts_repllicated    sys     bit                        1 Yes
+    --("is_dts_replicated", [t|Maybe Bool|]),
+  -- is_xml_document       sys     bit                        1 No
+    --("is_xml_document", [t|Bool|]),
+  -- xml_collection_id     sys     int                        4 No
+    --("xml_collection_id", [t|Int32|]),
+  -- default_object_id     sys     int                        4 No
+    --("default_object_id", [t|Int32|]),
+  -- rule_object_id        sys     int                        4 No
+    --("rule_object_id", [t|Int32|]),
+  -- is_sparse             sys     bit                        1 Yes
+    --("is_sparse", [t|Maybe Bool|]),
+  -- is_column_set         sys     bit                        1 Yes
+    --("is_column_set", [t|Maybe Bool|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServer/Config.hs b/src/Database/Relational/Schema/SQLServer/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLServer/Config.hs
@@ -0,0 +1,16 @@
+-- |
+-- Module      : Database.Relational.Schema.PgCatalog.Config
+-- Copyright   : 2014-2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.SQLServer.Config (config) where
+
+import Database.Relational (Config, defaultConfig)
+
+
+-- | Configuration parameter against SQLServer.
+config :: Config
+config = defaultConfig
diff --git a/src/Database/Relational/Schema/SQLServer/IndexColumns.hs b/src/Database/Relational/Schema/SQLServer/IndexColumns.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLServer/IndexColumns.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLServer.IndexColumns where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLServer.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "sys" "index_columns"
+  [
+  -- column                schema  type                length   NULL
+  -- --------------------- ------- ------------------- -------- ------
+  -- object_id             sys     int                        4 No
+    ("object_id", [t|Int32|]),
+  -- index_id              sys     int                        4 No
+    ("index_id", [t|Int32|]),
+  -- index_column_id       sys     int                        4 No
+    ("column_id", [t|Int32|]),
+  -- key_ordinal           sys     tinyint                    1 No
+    ("key_ordinal", [t|Int32|]),
+  -- partition_ordinal     sys     tinyint                    1 No
+    --("partition_ordinal", [t|Int32|]),
+  -- is_descending_key     sys     bit                        1 No
+    --("is_descending_key", [t|Bool|]),
+  -- is_included_column    sys     bit                        1 No
+    ("is_included_column", [t|Bool|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServer/Indexes.hs b/src/Database/Relational/Schema/SQLServer/Indexes.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLServer/Indexes.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLServer.Indexes where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLServer.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "sys" "indexes"
+  [
+-- View "sys.indexes"
+-- column                schema  type                length   NULL
+-- --------------------- ------- ------------------- -------- ------
+-- object_id             sys     int                        4 No
+    ("object_id", [t|Int32|]),
+-- name                  sys     sysname(nvarchar)        128 Yes
+    --("name", [t|Maybe String|]),
+-- index_id              sys     int                        4 No
+    ("index_id", [t|Int32|]),
+-- type                  sys     tinyint                    1 No
+    --("type", [t|Char|]),
+-- type_desc             sys     nvarchar                  60 Yes
+    --("type_desc", [t|Maybe String|]),
+-- is_unique             sys     bit                        1 Yes
+    --("is_unique", [t|Maybe Bool|]),
+-- data_space_id         sys     int                        4 No
+    --("data_space_id", [t|Int32|]),
+-- ignore_dup_key        sys     bit                        1 Yes
+    --("ignore_dup_key", [t|Maybe Bool|]),
+-- is_primary_key        sys     bit                        1 Yes
+    ("is_primary_key", [t|Maybe Bool|])--,
+-- is_unique_constraint  sys     bit                        1 Yes
+    --("is_unique_constraint", [t|Maybe Bool|]),
+-- fill_factor           sys     tinyint                    1 No
+    --("fill_factor", [t|Int32|]),
+-- is_padded             sys     bit                        1 Yes
+    --("is_padded", [t|Maybe Bool|]),
+-- is_disabled           sys     bit                        1 Yes
+    --("is_disabled", [t|Maybe Bool|]),
+-- is_hypothetical       sys     bit                        1 Yes
+    --("is_hypothetical", [t|Maybe Bool|]),
+-- allow_row_locks       sys     bit                        1 Yes
+    --("allow_row_locks", [t|Maybe Bool|]),
+-- allow_page_locks      sys     bit                        1 Yes
+    --("allow_page_locks", [t|Maybe Bool|]),
+-- has_filter            sys     bit                        1 Yes
+    --("has_filter", [t|Maybe Bool|]),
+-- filter_definition     sys     nvarchar                 max Yes
+    --("filter_definition", [t|Maybe ByteString|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServer/Types.hs b/src/Database/Relational/Schema/SQLServer/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLServer/Types.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLServer.Types where
+
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLServer.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "sys" "types"
+  [
+-- View "sys.types"
+-- column                schema  type                length   NULL
+-- --------------------- ------- ------------------- -------- ------
+-- name                  sys     sysname(nvarchar)        128 No
+    ("name", [t|String|]),
+-- system_type_id        sys     tinyint                    1 No
+    --("system_type_id", [t|Int32|]),
+-- user_type_id          sys     int                        4 No
+    ("user_type_id", [t|Int32|]),
+-- schema_id             sys     int                        4 No
+    ("schema_id", [t|Int32|])--,
+-- principal_id          sys     int                        4 Yes
+    --("principal_id", [t|Maybe Int32|]),
+-- max_length            sys     int                        4 No
+    --("max_length", [t|Int32|]),
+-- precision             sys     tinyint                    1 No
+    --("precision", [t|Int32|]),
+-- scale                 sys     tinyint                    1 No
+    --("scale", [t|Int32|]),
+-- collation_name        sys     sysname(nvarchar)        128 Yes
+    --("collation_name", [t|Maybe String|]),
+-- is_nullable           sys     bit                        1 Yes
+    --("is_nullable", [t|Maybe Bool|]),
+-- is_user_defined       sys     bit                        1 No
+    --("is_user_defined", [t|Bool|]),
+-- is_assembly_type      sys     bit                        1 No
+    --("is_assembly_type", [t|Bool|]),
+-- default_object_id     sys     int                        4 No
+    --("default_object_id", [t|Int32|]),
+-- rule_object_id        sys     int                        4 No
+    --("rule_object_id", [t|Int32|]),
+-- is_table_type         sys     bit                        1 No
+    --("is_table_type", [t|Bool|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServerSyscat/Columns.hs b/src/Database/Relational/Schema/SQLServerSyscat/Columns.hs
--- a/src/Database/Relational/Schema/SQLServerSyscat/Columns.hs
+++ b/src/Database/Relational/Schema/SQLServerSyscat/Columns.hs
@@ -1,72 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLServerSyscat.Columns where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLServerSyscat.Config (config)
-
+module Database.Relational.Schema.SQLServerSyscat.Columns
+  {-# DEPRECATED "import Database.Relational.Schema.SQLServer.Columns instead of this module." #-} (
+  module Database.Relational.Schema.SQLServer.Columns,
+  ) where
 
-$(defineTableTypesAndRecord config
-  "sys" "columns"
-  [
-  -- column                schema  type                length   NULL
-  -- --------------------- ------- ------------------- -------- ------
-  -- object_id             sys     int                        4 No
-    ("object_id", [t|Int32|]),
-  -- name                  sys     sysname(nvarchar)        128 Yes
-    ("name", [t|Maybe String|]),
-  -- column_id             sys     int                        4 No
-    ("column_id", [t|Int32|]),
-  -- system_type_id        sys     tinyint                    1 No
-    --("system_type_id", [t|Int32|]),
-  -- user_type_id          sys     int                        4 No
-    ("user_type_id", [t|Int32|]),
-  -- max_length            sys     smallint                   2 No
-    --("max_length", [t|Int32|]),
-  -- precision             sys     tinyint                    1 No
-    --("precision", [t|Int32|]),
-  -- scale                 sys     tinyint                    1 No
-    --("scale", [t|Int32|]),
-  -- collation_name        sys     sysname(nvarchar)        128 Yes
-    --("collation_name", [t|Maybe String|]),
-  -- is_nullable           sys     bit                        1 Yes
-    ("is_nullable", [t|Maybe Bool|])--,
-  -- is_ansi_padded        sys     bit                        1 No
-    --("is_ansi_padded", [t|Bool|]),
-  -- is_rowguidcol         sys     bit                        1 No
-    --("is_rowguidcol", [t|Bool|]),
-  -- is_identity           sys     bit                        1 No
-    --("is_identity", [t|Bool|]),
-  -- is_computed           sys     bit                        1 No
-    --("is_computed", [t|Bool|]),
-  -- is_filestream         sys     bit                        1 No
-    --("is_filestream", [t|Bool|]),
-  -- is_replicated         sys     bit                        1 Yes
-    --("is_replicated", [t|Maybe Bool|]),
-  -- is_non_sql_subscribed sys     bit                        1 Yes
-    --("is_non_sql_subscribed", [t|Maybe Bool|]),
-  -- is_merge_published    sys     bit                        1 Yes
-    --("is_merge_published", [t|Maybe Bool|]),
-  -- is_dts_repllicated    sys     bit                        1 Yes
-    --("is_dts_replicated", [t|Maybe Bool|]),
-  -- is_xml_document       sys     bit                        1 No
-    --("is_xml_document", [t|Bool|]),
-  -- xml_collection_id     sys     int                        4 No
-    --("xml_collection_id", [t|Int32|]),
-  -- default_object_id     sys     int                        4 No
-    --("default_object_id", [t|Int32|]),
-  -- rule_object_id        sys     int                        4 No
-    --("rule_object_id", [t|Int32|]),
-  -- is_sparse             sys     bit                        1 Yes
-    --("is_sparse", [t|Maybe Bool|]),
-  -- is_column_set         sys     bit                        1 Yes
-    --("is_column_set", [t|Maybe Bool|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.SQLServer.Columns
diff --git a/src/Database/Relational/Schema/SQLServerSyscat/Config.hs b/src/Database/Relational/Schema/SQLServerSyscat/Config.hs
--- a/src/Database/Relational/Schema/SQLServerSyscat/Config.hs
+++ b/src/Database/Relational/Schema/SQLServerSyscat/Config.hs
@@ -1,16 +1,6 @@
--- |
--- Module      : Database.Relational.Schema.PgCatalog.Config
--- Copyright   : 2014 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.SQLServerSyscat.Config (config) where
-
-import Database.Relational (Config, defaultConfig)
-
+module Database.Relational.Schema.SQLServerSyscat.Config
+  {-# DEPRECATED "import config from Database.Relational.Schema.SQLServer instead of this module." #-} (
+  module Database.Relational.Schema.SQLServer.Config,
+  ) where
 
--- | Configuration parameter against SQLServer.
-config :: Config
-config =  defaultConfig
+import Database.Relational.Schema.SQLServer.Config
diff --git a/src/Database/Relational/Schema/SQLServerSyscat/IndexColumns.hs b/src/Database/Relational/Schema/SQLServerSyscat/IndexColumns.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/SQLServerSyscat/IndexColumns.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLServerSyscat.IndexColumns where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLServerSyscat.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "sys" "index_columns"
-  [
-  -- column                schema  type                length   NULL
-  -- --------------------- ------- ------------------- -------- ------
-  -- object_id             sys     int                        4 No
-    ("object_id", [t|Int32|]),
-  -- index_id              sys     int                        4 No
-    ("index_id", [t|Int32|]),
-  -- index_column_id       sys     int                        4 No
-    ("column_id", [t|Int32|]),
-  -- key_ordinal           sys     tinyint                    1 No
-    ("key_ordinal", [t|Int32|]),
-  -- partition_ordinal     sys     tinyint                    1 No
-    --("partition_ordinal", [t|Int32|]),
-  -- is_descending_key     sys     bit                        1 No
-    --("is_descending_key", [t|Bool|]),
-  -- is_included_column    sys     bit                        1 No
-    ("is_included_column", [t|Bool|])
-  ]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServerSyscat/Indexes.hs b/src/Database/Relational/Schema/SQLServerSyscat/Indexes.hs
deleted file mode 100644
--- a/src/Database/Relational/Schema/SQLServerSyscat/Indexes.hs
+++ /dev/null
@@ -1,59 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLServerSyscat.Indexes where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLServerSyscat.Config (config)
-
-
-$(defineTableTypesAndRecord config
-  "sys" "indexes"
-  [
--- View "sys.indexes"
--- column                schema  type                length   NULL
--- --------------------- ------- ------------------- -------- ------
--- object_id             sys     int                        4 No
-    ("object_id", [t|Int32|]),
--- name                  sys     sysname(nvarchar)        128 Yes
-    --("name", [t|Maybe String|]),
--- index_id              sys     int                        4 No
-    ("index_id", [t|Int32|]),
--- type                  sys     tinyint                    1 No
-    --("type", [t|Char|]),
--- type_desc             sys     nvarchar                  60 Yes
-    --("type_desc", [t|Maybe String|]),
--- is_unique             sys     bit                        1 Yes
-    --("is_unique", [t|Maybe Bool|]),
--- data_space_id         sys     int                        4 No
-    --("data_space_id", [t|Int32|]),
--- ignore_dup_key        sys     bit                        1 Yes
-    --("ignore_dup_key", [t|Maybe Bool|]),
--- is_primary_key        sys     bit                        1 Yes
-    ("is_primary_key", [t|Maybe Bool|])--,
--- is_unique_constraint  sys     bit                        1 Yes
-    --("is_unique_constraint", [t|Maybe Bool|]),
--- fill_factor           sys     tinyint                    1 No
-    --("fill_factor", [t|Int32|]),
--- is_padded             sys     bit                        1 Yes
-    --("is_padded", [t|Maybe Bool|]),
--- is_disabled           sys     bit                        1 Yes
-    --("is_disabled", [t|Maybe Bool|]),
--- is_hypothetical       sys     bit                        1 Yes
-    --("is_hypothetical", [t|Maybe Bool|]),
--- allow_row_locks       sys     bit                        1 Yes
-    --("allow_row_locks", [t|Maybe Bool|]),
--- allow_page_locks      sys     bit                        1 Yes
-    --("allow_page_locks", [t|Maybe Bool|]),
--- has_filter            sys     bit                        1 Yes
-    --("has_filter", [t|Maybe Bool|]),
--- filter_definition     sys     nvarchar                 max Yes
-    --("filter_definition", [t|Maybe ByteString|])
-  ]
-  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLServerSyscat/Types.hs b/src/Database/Relational/Schema/SQLServerSyscat/Types.hs
--- a/src/Database/Relational/Schema/SQLServerSyscat/Types.hs
+++ b/src/Database/Relational/Schema/SQLServerSyscat/Types.hs
@@ -1,53 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLServerSyscat.Types where
-
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLServerSyscat.Config (config)
-
+module Database.Relational.Schema.SQLServerSyscat.Types
+  {-# DEPRECATED "import Database.Relational.Schema.SQLServer.Types instead of this module." #-} (
+  module Database.Relational.Schema.SQLServer.Types,
+  ) where
 
-$(defineTableTypesAndRecord config
-  "sys" "types"
-  [
--- View "sys.types"
--- column                schema  type                length   NULL
--- --------------------- ------- ------------------- -------- ------
--- name                  sys     sysname(nvarchar)        128 No
-    ("name", [t|String|]),
--- system_type_id        sys     tinyint                    1 No
-    --("system_type_id", [t|Int32|]),
--- user_type_id          sys     int                        4 No
-    ("user_type_id", [t|Int32|]),
--- schema_id             sys     int                        4 No
-    ("schema_id", [t|Int32|])--,
--- principal_id          sys     int                        4 Yes
-    --("principal_id", [t|Maybe Int32|]),
--- max_length            sys     int                        4 No
-    --("max_length", [t|Int32|]),
--- precision             sys     tinyint                    1 No
-    --("precision", [t|Int32|]),
--- scale                 sys     tinyint                    1 No
-    --("scale", [t|Int32|]),
--- collation_name        sys     sysname(nvarchar)        128 Yes
-    --("collation_name", [t|Maybe String|]),
--- is_nullable           sys     bit                        1 Yes
-    --("is_nullable", [t|Maybe Bool|]),
--- is_user_defined       sys     bit                        1 No
-    --("is_user_defined", [t|Bool|]),
--- is_assembly_type      sys     bit                        1 No
-    --("is_assembly_type", [t|Bool|]),
--- default_object_id     sys     int                        4 No
-    --("default_object_id", [t|Int32|]),
--- rule_object_id        sys     int                        4 No
-    --("rule_object_id", [t|Int32|]),
--- is_table_type         sys     bit                        1 No
-    --("is_table_type", [t|Bool|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.SQLServer.Types
diff --git a/src/Database/Relational/Schema/SQLite3.hs b/src/Database/Relational/Schema/SQLite3.hs
--- a/src/Database/Relational/Schema/SQLite3.hs
+++ b/src/Database/Relational/Schema/SQLite3.hs
@@ -1,13 +1,16 @@
 {-# LANGUAGE TemplateHaskell #-}
 
 module Database.Relational.Schema.SQLite3 (
+  module Database.Relational.Schema.SQLite3.Config,
+
   getType, normalizeColumn, normalizeType, notNull,
   tableInfoQuerySQL, indexListQuerySQL, indexInfoQuerySQL
   ) where
 
 import qualified Data.Map as Map
-import qualified Database.Relational.Schema.SQLite3Syscat.TableInfo as TableInfo
+import qualified Database.Relational.Schema.SQLite3.TableInfo as TableInfo
 
+import Language.Haskell.TH (TypeQ)
 import Control.Arrow (first)
 import Control.Applicative ((<|>))
 import Data.ByteString (ByteString)
@@ -16,10 +19,11 @@
 import Data.Map (Map)
 import Data.Time (Day, LocalTime)
 import Database.Relational (Query, unsafeTypedQuery)
-import Database.Relational.Schema.SQLite3Syscat.IndexInfo
-import Database.Relational.Schema.SQLite3Syscat.IndexList
-import Database.Relational.Schema.SQLite3Syscat.TableInfo
-import Language.Haskell.TH (TypeQ)
+
+import Database.Relational.Schema.SQLite3.Config
+import Database.Relational.Schema.SQLite3.IndexInfo
+import Database.Relational.Schema.SQLite3.IndexList
+import Database.Relational.Schema.SQLite3.TableInfo
 
 --{-# ANN module "HLint: ignore Redundant $" #-}
 
diff --git a/src/Database/Relational/Schema/SQLite3/Config.hs b/src/Database/Relational/Schema/SQLite3/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLite3/Config.hs
@@ -0,0 +1,16 @@
+-- |
+-- Module      : Database.Relational.Schema.SQLite3.Config
+-- Copyright   : 2019 Kei Hibino
+-- License     : BSD3
+--
+-- Maintainer  : ex8k.hibino@gmail.com
+-- Stability   : experimental
+-- Portability : unknown
+module Database.Relational.Schema.SQLite3.Config (config) where
+
+import Database.Relational (Config (addModifyTableAliasAS), defaultConfig)
+
+
+-- | Configuration parameter against SQLite3.
+config :: Config
+config = defaultConfig { addModifyTableAliasAS = True }
diff --git a/src/Database/Relational/Schema/SQLite3/IndexInfo.hs b/src/Database/Relational/Schema/SQLite3/IndexInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLite3/IndexInfo.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLite3.IndexInfo where
+
+import GHC.Generics (Generic)
+import Data.Int (Int64)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLite3.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "pragma" "index_info"
+  [
+-- pragma "index_info"
+-- column                type                NULL
+-- --------------------- ------------------- ------
+-- seqno                 integer             No
+    ("seqno", [t|Int64|]),
+-- cid                   integer             No
+    ("cid", [t|Int64|]),
+-- name                  text                No
+    ("name", [t|String|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLite3/IndexList.hs b/src/Database/Relational/Schema/SQLite3/IndexList.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLite3/IndexList.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLite3.IndexList where
+
+import GHC.Generics (Generic)
+import Data.Int (Int64)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLite3.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "pragma" "index_list"
+  [
+-- pragma "main.index_list"
+-- column                type                NULL
+-- --------------------- ------------------- ------
+-- seq                   integer             No
+    ("seq", [t|Int64|]),
+-- name                  text                No
+    ("name", [t|String|]),
+-- unique                integer             No
+    ("unique", [t|Int64|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLite3/TableInfo.hs b/src/Database/Relational/Schema/SQLite3/TableInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Database/Relational/Schema/SQLite3/TableInfo.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Database.Relational.Schema.SQLite3.TableInfo where
+
+import GHC.Generics (Generic)
+import Data.Int (Int16, Int64)
+import Database.Relational.TH (defineTableTypesAndRecord)
+
+import Database.Relational.Schema.SQLite3.Config (config)
+
+
+$(defineTableTypesAndRecord config
+  "pragma" "table_info"
+  [
+-- View "main.sqlite_master"
+-- column                type                NULL
+-- --------------------- ------------------- ------
+-- cid                   integer             No
+    ("cid", [t|Int64|]),
+-- name                  text                No
+    ("name", [t|String|]),
+-- type                  text                No
+    ("ctype", [t|String|]),
+-- notnull               integer             No
+    ("notnull", [t|Int16|]),
+-- dflt_value            -                   Yes
+    ("dflt_value", [t|Maybe String|]),
+-- pk                    integer             No
+    ("pk", [t|Int16|])
+  ]
+  [''Show, ''Generic])
diff --git a/src/Database/Relational/Schema/SQLite3Syscat/Config.hs b/src/Database/Relational/Schema/SQLite3Syscat/Config.hs
--- a/src/Database/Relational/Schema/SQLite3Syscat/Config.hs
+++ b/src/Database/Relational/Schema/SQLite3Syscat/Config.hs
@@ -1,16 +1,6 @@
--- |
--- Module      : Database.Relational.Schema.SQLite3Syscat.Config
--- Copyright   : 2014 Kei Hibino
--- License     : BSD3
---
--- Maintainer  : ex8k.hibino@gmail.com
--- Stability   : experimental
--- Portability : unknown
-module Database.Relational.Schema.SQLite3Syscat.Config (config) where
-
-import Database.Relational (Config, defaultConfig)
-
+module Database.Relational.Schema.SQLite3Syscat.Config
+  {-# DEPRECATED "import config from Database.Relational.Schema.SQLite3 instead of this module." #-} (
+  module Database.Relational.Schema.SQLite3.Config,
+  ) where
 
--- | Configuration parameter against SQLite3.
-config :: Config
-config =  defaultConfig
+import Database.Relational.Schema.SQLite3.Config
diff --git a/src/Database/Relational/Schema/SQLite3Syscat/IndexInfo.hs b/src/Database/Relational/Schema/SQLite3Syscat/IndexInfo.hs
--- a/src/Database/Relational/Schema/SQLite3Syscat/IndexInfo.hs
+++ b/src/Database/Relational/Schema/SQLite3Syscat/IndexInfo.hs
@@ -1,29 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLite3Syscat.IndexInfo where
-
-import GHC.Generics (Generic)
-import Data.Int (Int64)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLite3Syscat.Config (config)
-
+module Database.Relational.Schema.SQLite3Syscat.IndexInfo
+  {-# DEPRECATED "import Database.Relational.Schema.SQLite3.IndexInfo instead of this module." #-} (
+  module Database.Relational.Schema.SQLite3.IndexInfo,
+  ) where
 
-$(defineTableTypesAndRecord config
-  "pragma" "index_info"
-  [
--- pragma "index_info"
--- column                type                NULL
--- --------------------- ------------------- ------
--- seqno                 integer             No
-    ("seqno", [t|Int64|]),
--- cid                   integer             No
-    ("cid", [t|Int64|]),
--- name                  text                No
-    ("name", [t|String|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.SQLite3.IndexInfo
diff --git a/src/Database/Relational/Schema/SQLite3Syscat/IndexList.hs b/src/Database/Relational/Schema/SQLite3Syscat/IndexList.hs
--- a/src/Database/Relational/Schema/SQLite3Syscat/IndexList.hs
+++ b/src/Database/Relational/Schema/SQLite3Syscat/IndexList.hs
@@ -1,29 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLite3Syscat.IndexList where
-
-import GHC.Generics (Generic)
-import Data.Int (Int64)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLite3Syscat.Config (config)
-
+module Database.Relational.Schema.SQLite3Syscat.IndexList
+  {-# DEPRECATED "import Database.Relational.Schema.SQLite3.IndexList instead of this module." #-} (
+  module Database.Relational.Schema.SQLite3.IndexList,
+  ) where
 
-$(defineTableTypesAndRecord config
-  "pragma" "index_list"
-  [
--- pragma "main.index_list"
--- column                type                NULL
--- --------------------- ------------------- ------
--- seq                   integer             No
-    ("seq", [t|Int64|]),
--- name                  text                No
-    ("name", [t|String|]),
--- unique                integer             No
-    ("unique", [t|Int64|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.SQLite3.IndexList
diff --git a/src/Database/Relational/Schema/SQLite3Syscat/TableInfo.hs b/src/Database/Relational/Schema/SQLite3Syscat/TableInfo.hs
--- a/src/Database/Relational/Schema/SQLite3Syscat/TableInfo.hs
+++ b/src/Database/Relational/Schema/SQLite3Syscat/TableInfo.hs
@@ -1,35 +1,6 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-
-module Database.Relational.Schema.SQLite3Syscat.TableInfo where
-
-import GHC.Generics (Generic)
-import Data.Int (Int16, Int64)
-import Database.Relational.TH (defineTableTypesAndRecord)
-
-import Database.Relational.Schema.SQLite3Syscat.Config (config)
-
+module Database.Relational.Schema.SQLite3Syscat.TableInfo
+  {-# DEPRECATED "import Database.Relational.Schema.SQLite3.TableInfo instead of this module." #-} (
+  module Database.Relational.Schema.SQLite3.TableInfo,
+  ) where
 
-$(defineTableTypesAndRecord config
-  "pragma" "table_info"
-  [
--- View "main.sqlite_master"
--- column                type                NULL
--- --------------------- ------------------- ------
--- cid                   integer             No
-    ("cid", [t|Int64|]),
--- name                  text                No
-    ("name", [t|String|]),
--- type                  text                No
-    ("ctype", [t|String|]),
--- notnull               integer             No
-    ("notnull", [t|Int16|]),
--- dflt_value            -                   Yes
-    ("dflt_value", [t|Maybe String|]),
--- pk                    integer             No
-    ("pk", [t|Int16|])
-  ]
-  [''Show, ''Generic])
+import Database.Relational.Schema.SQLite3.TableInfo
