Sebuah schema ing PostgreSQL iku namespace ing sawijining database — sawijining logical container sing ngumpulake tabel-tabel sing ana hubungane, views, functions, lan obyek-obyek liyane. Schemas ngidini sampeyan ngorganisir obyek lan nyegah collision nama; schema default yaiku public.
Schemas ngorganisir obyek ing database
A PostgreSQL server can have multiple DATABASES.
Each database can have multiple SCHEMAS (namespaces).
Each schema contains TABLES, views, functions, etc.
→ Hierarchy: server → database → schema → tables/objects
CREATE SCHEMA sales; -- create a schema
CREATE TABLE sales.orders (...); -- a table IN the sales schema (qualified name)
SELECT * FROM sales.orders; -- reference with schema.table
-- the default schema is `public` — unqualified objects go there
CREATE TABLE users (...); -- actually public.users
Obyek dirujuki minangka schema.object. Tanpa prefix schema, Postgres nggunakake search path (default: public).
Search path
SHOW search_path; -- default: "$user", public
SET search_path TO sales, public; -- look in sales first, then public
SELECT * FROM orders; -- finds sales.orders (no prefix needed)
Search path nemtokake schemas mana sing Postgres goleki kanggo nama-nama sing ora qualified — setiyakake ngidini sampeyan nggunakake nama sing pendek ing schema sing dipilih.
Napa nggunakake schemas
✓ ORGANIZATION — group related objects (e.g. `sales`, `inventory`, `auth` schemas)
✓ Avoid naming collisions — two schemas can each have an `orders` table
✓ MULTI-TENANCY — a schema per tenant (isolating each customer's data)
✓ SECURITY/permissions — grant access per schema
✓ Separating concerns — e.g. an `app` schema vs an `analytics` schema
Satuwi pola sing umum yaiku schema saben tenant ing aplikasi multi-tenant, utawa ngumpulake dening domain/module.
Napa iki penting
Schemas iku feature PostgreSQL sing migunani kanggo ngorganisir database objects, lan pangerten babagan iku duweni nilai penting kanggo struktur database kanthi bener, luwih-luwih nalika database berkembang utawa melayani akeh tenant.
Pangerten yen schema iku namespace ing database (ngumpulake tabel, views, functions) — kanthi hierarki server → database → schema → objects — iki nerangake carane Postgres ngorganisir obyek lan carane referensi (rujuk) schema.object, utawa gumantung search path kanggo nama-nama sing ora qualified, default menyang public.
Manalpractical uses yaiku nilai kunci: schemas menehi organisir (ngumpulake obyek sing ana hubungane dening domain/module — auth, sales, analytics), nyegah collision nama (schemas beda-beda bisa duwe tabel kanthi nama sama), ngidini security/permissions per-schema, lan penting kanggo multi-tenancy (satuwi pola umum satu schema saben tenant kanggo isolasi data saben customer — satuwi pilihan arsitektur penting kanggo aplikasi SaaS).
Pangerten schemas lan search path membantu sampeyan ngorganisir database kanthi resik, nyegah kekacauan lan collision ning mudun-mudun (putting everything in) public, lan ngimplementasikake pola minangka multi-tenancy.
Karena ngorganisir database objects kanthi logis penting kanggo maintainability (luwih-luwih ing aplikasi sing luwih gedhe), lan amargi schemas ngidini pola penting (domain separation, multi-tenancy, per-schema security), pangerten PostgreSQL schemas — apa iku, search path, lan practical uses — iku pangerten sing migunani lan relevan kanthi praktik kanggo struktur Postgres databases kanthi efektif, utamane relevan kanggo aplikasi sing luwih gedhe utawa multi-tenant nang-endi organisir obyek sing bener iku penting.
