/ / Prečo vytvoriť prázdnu (bez riadkov, stĺpcov) tabuľky v PostgreSQL - postgresql

Prečo vytvoriť prázdnu (bez riadkov, žiadnych stĺpcov) tabuľky v PostgreSQL - postgresql

V odpovedi na toto Otázka, ktorú som sa dozvedel, že v PostgreSQL môžete vytvoriť prázdnu tabuľku.

create table t();

Existuje nejaký skutočný prípad použitia? Prečo by ste vytvorili prázdnu tabuľku? Pretože nevieš, aké stĺpce bude mať?

odpovede:

7 pre odpoveď č. 1

Toto sú veci z môjho pohľadu, pre ktoré je stĺpec bez tabuľky vhodný. Pravdepodobne viac spadajú do teplej a nejasnej kategórie.

1. Jeden praktický účel vytvorenia tabuľky pred pridaním ľubovoľného používateľa definované stĺpce, je to, že vám umožňuje rýchlo opakovať vytvorením nového systému alebo iba rýchlym vývojom vo všeobecnosti.

2. Viac ako 1, ale umožňuje vám vyčiarknuť tabuľky, na ktoré môže odkazovať aj logika vašej aplikácie alebo postup, aj keď stĺpce obsahujú zatiaľ byť zavedený.

3. Videl som, že to prichádza v prípade, že ste vo veľkej spoločnosti s množstvom vývojárov. Možno si chcete rezervovať meno mesiacov vopred pred dokončením práce. Stačí pridať nový do zostavy bez stĺpca. Samozrejme, že stále mohli byť vysoko zdvihnite to, ale môžete vyhrať argument, že ste ho mali používajte skôr, ako prišli so svojimi ostatnými plánmi. Druh okrajové, ale platná výhoda.

Všetky tieto sú užitočné a chýbajú mi, keď nepracujem v PostgreSQL.


4 pre odpoveď č. 2

Nie je to prázdna tabuľka - iba prázdny výsledok. Riadky PostgreSQL obsahujú niektoré neviditeľné (štandardne) stĺpce. Nie som si istý, ale môže to byť artefakt z temného veku, keď bol Postgres objektovou relačnou databázou - a jazykom POSTQUEL podporovaným PG. Táto prázdna tabuľka môže pracovať ako abstraktný predok v hierarchii tried.

Zoznam systémových stĺpcov


4 pre odpoveď č. 3

Neviem presný dôvod jeho začleneniav PostgreSQL, ale tabuľka s nulovým stĺpcom - alebo skôr vzťah s nulovými atribútmi - hrá úlohu v teórii relačnej algebry, na ktorej je (všeobecne) založený SQL.

Konkrétne vzťah nulového atribútu s čn-tice (v podmienkach SQL, tabuľka bez stĺpcov a bez riadkov) je relačný ekvivalent nula alebo nepravdivý, zatiaľ čo vzťah bez atribútov okrem jedného tupla (SQL: žiadne stĺpce, ale jeden riadok, ktorý nie je v PostgreSQL možný) pokiaľ viem) je pravda, alebo jedna z nich: Hugh Darwen, otvorený obhajca relačnej teórie a kritik SQL, nazval tieto „Table Dum“ a „Table Dee“.

V normálnej algebre x + 0 == x a x * 0 == 0, kým x * 1 == x; ide o to, že v relačnej algebre môžu byť Table Dum a Table Dee použité ako podobné primitívy pre spojenia, odbory atď.

PostgreSQL interne odkazuje na tabuľky (tiežako pohľady a postupnosti) ako „vzťahy“, takže hoci sa zameriava na implementáciu SQL, ktorý nie je definovaný týmto typom čistej vzťahovej algebry, môžu existovať jeho prvky v jeho návrhu alebo histórii.


2 pre odpoveď № 4

Nemyslím si však, že moje je zamýšľané použitieNedávno som použil prázdnu tabuľku ako zámok pre pohľad, ktorý vytváram a dynamicky sa mení pomocou EXECUTE. Funkcia, ktorá vytvára / nahrádza pohľad, má ACCESS EXCLUSIVE na prázdnej tabuľke a ostatné funkcie, ktoré používajú pohľad, majú ACCESS.