Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pemodelan data untuk tabel yang sama dengan kolom yang sama

Hanya karena data memiliki struktur yang mirip tidak berarti memiliki arti yang sama atau batasan yang sama. Pisahkan tabel pencarian Anda. Ini menyimpan kunci asing terpisah, sehingga database dapat melindungi dirinya sendiri dari referensi jenis data pencarian yang salah.

Saya berharap DBMS relasional mendukung pewarisan, di mana Anda dapat menentukan struktur dasar di tabel induk dan hanya menambahkan FK tertentu di tabel anak. Seperti yang ada sekarang, Anda harus menahan beberapa pengulangan di DDL Anda...

CATATAN:Satu pengecualian dari aturan "simpan tabel pencarian terpisah" mungkin ketika sistem Anda harus dinamis (yaitu dapat menambahkan jenis data pencarian baru tanpa benar-benar membuat tabel fisik baru dalam database), tetapi tidak terlihat seperti itu jauh dari pertanyaan Anda.

Dengan satu tabel pencarian besar, FK saja tidak akan menghentikan (misalnya) ShippingLog tabel dari referensi baris yang dimaksudkan untuk EmployeeTask meja. Dengan menggunakan mengidentifikasi hubungan dan memigrasikan PK, Anda dapat melindungi diri Anda dari hal ini, tetapi bukan tanpa memperkenalkan beberapa redundansi dan memerlukan pembatasan yang cermat. Lebih bersih dan mungkin lebih berkinerja dengan melakukan hal yang benar dan memisahkan tabel pencarian.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan untuk mendapatkan hanya angka dari string

  2. Temukan kolom yang hanya berisi nol

  3. Bagaimana cara mengembalikan ke database yang berbeda di SQL Server?

  4. OPENXML dengan xmlns:dt

  5. Konversi 'datetime2' menjadi 'datetime' di SQL Server (Contoh T-SQL)