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

Cara Membuat hubungan satu-ke-satu yang nyata di SQL Server

Saya cukup yakin secara teknis tidak mungkin di SQL Server untuk memiliki hubungan True 1 to 1, karena itu berarti Anda akan memiliki untuk menyisipkan kedua record secara bersamaan (jika tidak, Anda akan mendapatkan kesalahan kendala saat menyisipkan), di kedua tabel, dengan kedua tabel memiliki hubungan kunci asing satu sama lain.

Meskipun demikian, desain database Anda yang dijelaskan dengan kunci asing adalah hubungan 1 hingga 0,1. Tidak ada kendala yang mungkin membutuhkan catatan di tableB. Anda dapat memiliki hubungan semu dengan pemicu yang membuat catatan di tableB.

Jadi ada beberapa solusi semu

Pertama, simpan semua data dalam satu tabel. Maka Anda tidak akan mengalami masalah di EF.

Atau Kedua, entitas Anda harus cukup pintar untuk tidak mengizinkan penyisipan kecuali jika memiliki catatan terkait.

Atau ketiga, dan kemungkinan besar, Anda memiliki masalah yang Anda coba selesaikan, dan Anda bertanya kepada kami mengapa solusi Anda tidak berhasil alih-alih masalah sebenarnya yang Anda coba selesaikan (Masalah XY).

PERBARUI

Untuk menjelaskan dalam REALITY bagaimana hubungan 1 banding 1 tidak berhasil, saya akan menggunakan analogi dilema ayam atau telur. Saya tidak bermaksud untuk memecahkan dilema ini, tetapi jika Anda memiliki batasan yang mengatakan untuk menambahkan Telur ke tabel Telur, hubungan Ayam harus ada, dan ayam harus ada di meja, maka Anda tidak dapat menambahkan Telur ke tabel Telur. Kebalikannya juga benar. Anda tidak dapat menambahkan Ayam ke tabel Ayam tanpa hubungan ke Telur dan Telur yang ada di tabel Telur. Dengan demikian tidak ada catatan yang dapat dibuat, dalam database tanpa melanggar salah satu aturan/batasan.

Basis data nomenklatur hubungan satu-ke-satu menyesatkan. Semua hubungan yang saya lihat (oleh karena itu pengalaman saya) akan lebih deskriptif sebagai hubungan satu-ke-(nol atau satu).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencari Objek Database dan Data Tabel di SQL Server

  2. MVC4:UserIsInRole - Tidak dapat terhubung ke database SQL Server

  3. Cara mudah memilih kolom kanan sebagai Kunci Utama untuk tabel yang diberikan

  4. Bagaimana Anda memeriksa apakah IDENTITY_INSERT diatur ke ON atau OFF di SQL Server?

  5. Membuat Tabel dengan Kompresi di SQL Server (T-SQL)