sql >> Databáze >  >> RDS >> PostgreSQL

Flyway více tabulek metadat v jednom schématu

Ideálním řešením pro vás by bylo rozdělení modulů do schémat. To vám dává účinnou jednotku izolace na modul a je také přirozeně vhodné pro modulární aplikace (moduly zcela izolované a samo se spravující), spíše než vše skládat do jediného schématu (zejména veřejné). např.

application_database
    ├── public
    ├── module_1
    │   ├── schema_version
    │   ├── m1_t1
    │   └── m1_t2
    ├── module_2
    │   ├── schema_version
    │   ├── m2_t1
    │   └── m2_t2
    ...

Druhou možností je zůstat pomocí veřejného schématu k hostování všech tabulek, ale použít samostatné schéma pro každou schema_version . Jedná se o menší úsilí o refaktorování, ale rozhodně méně elegantní design než výše uvedený. např.

application_database
    ├── public
    │   ├── m1_t1
    │   ├── m1_t2
    │   ├── m2_t1
    │   └── m2_t2
    ├── module_1
    │   └── schema_version
    │
    ├── module_2
    │   └── schema_version
    ...


  1. Pivoting dat pomocí dvou sloupců

  2. SQLite JSON_OBJECT()

  3. PHP/MySql vyhledávací pole s polem

  4. Tabulka MERGE, při shodě nedělejte nic