PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah mungkin untuk memberi nama kolom hasil SQL dari baris di tabel lain? (Postgres)

Ini didasarkan pada kesalahpahaman utama cara kerja bagian dalam Postgres dan desain EAV .

Jika Anda tidak memiliki ratusan bidang berbeda atau kumpulan jenis atribut dinamis, gunakan tabel tunggal dengan semua kolom - kecuali untuk normalisasi database . Kolom tanpa nilai diisi dengan NULL .
Penyimpanan nol sangat murah , menempati 1 bit per kolom dalam tabel untuk bitmap nol, biasanya dialokasikan dalam satuan 8 byte untuk mencakup 64 kolom. Lihat:

Baris terpisah untuk tunggal atribut tambahan menempati setidaknya tambahan 36 byte .

4  bytes item identifier
23 bytes heap tuple header
1  byte  padding
8  bytes minimum row data size

Biasanya lebih banyak, karena bantalan dan overhead tambahan.

Harus ada ratusan kolom berbeda yang jarang penduduknya sebelum desain EAV yang berat seperti itu dapat membayar - dan hstore atau jsonb di Postgres 9.4 akan menjadi solusi yang unggul untuk itu . Hampir tidak ada ruang di antaranya untuk desain Anda, dan jika ada, Anda mungkin akan menggunakan enum untuk jenisnya.

Pada saat yang sama, kueri lebih rumit dan mahal. Kami berada di posisi yang sulit di sini.

Alih-alih menggunakan tata letak tabel seperti ini:

CREATE TABLE users (
   users_id serial PRIMARY KEY
 , salutation text
 , given_name text
 , surname text
 , alias text
 ... (many) more columns
);

CREATE TABLE address (
   address_id serial PRIMARY KEY
 , users_id int REFERENCES users
 , city text  -- or separate TABLE city incl region_id etc. ...
 , region_id int REFERENCES region
 , address  text
 ... (many) more columns
);

Jawaban yang terkait erat dengan lebih banyak saran:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan CASE Postgresql - dapatkah saya menggunakan nilai pengembalian CASE dalam SELECT saya?

  2. tidak bisa membuat sisipan PostgreSQL sederhana berfungsi

  3. BUAT INDEKS UNIK JIKA TIDAK ADA di postgreSQL

  4. 'barang' dan 'untuk jalur xml ('')' dari SQL Server di Postgresql

  5. Apa yang setara dengan MySQL dari EXPLAIN ANALYZE PostgreSQL?