Jadual Kandungan
Apakah kunci utama?
Apakah peranan kunci asing?
Soalan Lazim dan Cadangan untuk Kekunci Utama dan Asing
Rumah pangkalan data SQL Melaksanakan kunci utama dan asing di SQL

Melaksanakan kunci utama dan asing di SQL

Jul 24, 2025 am 02:11 AM
sql kunci

Kunci utama ialah lajur atau gabungan lajur yang secara unik mengenal pasti setiap rekod baris dalam jadual. Ia mesti unik dan tidak kosong. Setiap jadual hanya boleh mempunyai satu kunci utama; Sebagai contoh, pengguna \ _id sering digunakan sebagai kunci utama jadual pengguna. Tentukan kunci utama anda boleh menentukan lajur tunggal atau komposit apabila membuat jadual. Kekunci asing digunakan untuk menubuhkan persatuan antara jadual, menunjuk ke kunci utama jadual lain, dan pastikan integriti rujukan, seperti Pengguna Jadual Pesanan \ _ID menunjuk kepada pengguna Jadual Pengguna \ _ID. Menetapkan kunci asing menghalang penyisipan data haram dan menyokong operasi cascading. Penggunaan kunci asing memerlukan sokongan enjin pangkalan data (seperti InnoDB). Adalah disyorkan bahawa kunci utama dipilih dari peningkatan bilangan bulat atau uuid untuk mengelakkan bidang perniagaan; Bidang utama asing harus diindeks untuk meningkatkan prestasi pertanyaan; Kekunci asing boleh dielakkan apabila keperluan prestasi sangat tinggi, konsistensi kawalan lapisan aplikasi, atau apabila menggunakan pangkalan data bukan hubungan.

Melaksanakan kunci utama dan asing di SQL

Penggunaan kunci utama dan kunci asing yang betul dalam SQL adalah asas untuk membina struktur pangkalan data relasi. Ini bukan sahaja memastikan integriti data, tetapi juga membantu kami mewujudkan korelasi data yang jelas.

Melaksanakan kunci utama dan asing di SQL

Apakah kunci utama?

Kunci utama adalah lajur atau kumpulan lajur yang digunakan untuk mengenal pasti secara unik setiap rekod baris dalam jadual. Ia mempunyai beberapa ciri utama:

  • Nilai mesti unik
  • Tidak boleh batal
  • Setiap jadual hanya boleh mempunyai satu kunci utama (tetapi boleh mengandungi pelbagai lajur)

Sebagai contoh, user_id biasanya digunakan sebagai kunci utama dalam jadual pengguna, kerana setiap ID pengguna adalah unik dan tidak akan diulang atau kosong.

Melaksanakan kunci utama dan asing di SQL

Cara untuk menentukan kunci utama boleh ditentukan secara langsung semasa membuat jadual:

 Buat Pengguna Jadual (
    USER_ID INT Utama utama,
    Nama Varchar (100)
);

Anda juga boleh menetapkan kunci utama kompaun melalui kombinasi lajur berganda:

Melaksanakan kunci utama dan asing di SQL
 Buat jadual order_items (
    order_id int,
    product_id int,
    kuantiti int,
    Kunci utama (order_id, product_id)
);

Apakah peranan kunci asing?

Kunci asing digunakan untuk mewujudkan sambungan antara dua jadual, yang menunjukkan kunci utama jadual lain. Kekangan utama asing menghalang penyisipan data haram dan memastikan rujukan lengkap.

Sebagai contoh, medan user_id dalam jadual pesanan boleh ditetapkan sebagai kunci asing dan menunjuk kepada user_id jadual pengguna:

 Buat pesanan jadual (
    Pesanan_id int utama,
    user_id int,
    Jumlah perpuluhan (10,2),
    Kunci Asing (USER_ID) Rujukan Pengguna (user_id)
);

Manfaat untuk melakukan ini termasuk:

  • Memasukkan user_id tidak sah akan ditolak
  • Sekiranya pengguna dipadam, pesanan yang berkaitan boleh diproses secara automatik (pada padam cascade atau set null diperlukan)
  • Logik antara data lebih jelas dan kecekapan pertanyaan lebih tinggi

Walau bagaimanapun, perlu diperhatikan bahawa secara lalai beberapa sistem pangkalan data (seperti MySQL's Myisam Engine) tidak menyokong kunci asing, dan anda mesti menggunakan InnoDB.


Soalan Lazim dan Cadangan untuk Kekunci Utama dan Asing

Adakah kunci utama dipilih dari bidang kenaikan atau perniagaan?

  • Integer penurunan diri (seperti INT AUTO_INCREMENT ) yang paling biasa digunakan, mudah dan stabil
  • Kadang -kadang uuid juga digunakan, terutamanya dalam sistem yang diedarkan untuk mengelakkan konflik
  • Cuba jangan gunakan bidang perniagaan yang berubah -ubah sebagai kunci utama, seperti nama pengguna, e -mel, dll.

Adakah anda mahu mengindeks medan kunci asing?

  • Ya, lebih baik untuk mengindeks secara manual medan kunci asing, jika tidak, ia akan mempengaruhi prestasi pertanyaan sambungan.
  • Kebanyakan pangkalan data secara automatik membuat indeks, tetapi tidak semua

Bilakah tidak ada kunci asing yang diperlukan?

  • Sistem ini mempunyai keperluan prestasi yang sangat tinggi dan dapat mengawal konsistensi data melalui lapisan aplikasi
  • Struktur jadual sering berubah, dan kos mengekalkan kunci asing adalah tinggi
  • Apabila menggunakan pangkalan data bukan hubungan (seperti MongoDB)

Pada dasarnya itu sahaja. Penetapan kunci utama dan asing nampaknya mudah, tetapi butirannya mudah diabaikan dalam perkembangan sebenar, mengakibatkan kesukaran dalam penyelenggaraan kemudian. Selagi anda memilih dan menggunakannya dengan munasabah mengikut keperluan perniagaan, struktur pangkalan data boleh menjadi lebih mantap dan pertanyaan lebih cekap.

Atas ialah kandungan terperinci Melaksanakan kunci utama dan asing di SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1596
276
Bagaimana untuk mendapatkan hari pertama dan terakhir tahun ini di SQL? Bagaimana untuk mendapatkan hari pertama dan terakhir tahun ini di SQL? Aug 11, 2025 pm 05:42 PM

ThefirstdayOfheyearisobtaintainTaTaThtainTyConstrtruncatingToJanuary1stofthegivenyear, andthelastdayisdecember31stofthesameyear, withmethodsvaryingbydatabasesystem;

Bagaimana untuk mencari jumlah lajur dalam SQL? Bagaimana untuk mencari jumlah lajur dalam SQL? Aug 08, 2025 pm 05:54 PM

Fungsi tofindthesumofacolumninsql, usethesum (), yang mana -mana yang tidak dapat diterangkan;

Memahami konteks dan kebenaran pelaksanaan SQL Memahami konteks dan kebenaran pelaksanaan SQL Aug 16, 2025 am 08:57 AM

Konteks pelaksanaan SQL merujuk kepada identiti atau peranan ketika menjalankan pernyataan SQL, yang menentukan keizinan sumber dan operasi mana yang dapat diakses. Tetapan kebenaran harus mengikuti prinsip kebenaran minimum, dan keizinan umum termasuk pilih, memasukkan, melaksanakan, dan lain -lain untuk menyelesaikan masalah kebenaran, anda perlu mengesahkan nama log masuk, keizinan peranan, tetapan pelaksanaan dan kebenaran skema. Melaksanakan penukaran konteks boleh dilaksanakan melalui ExecuteAs, tetapi perhatian harus dibayar kepada kewujudan pengguna, pemberian kebenaran dan kesan keselamatan prestasi. Adalah disyorkan untuk mengelakkan sewenang -wenangnya memberikan peranan DB_OWNER atau sysadmin. Akaun permohonan hanya perlu mengakses objek yang diperlukan dan diberi kuasa melalui skema.

Cara menyertai meja dengan sendirinya di SQL Cara menyertai meja dengan sendirinya di SQL Aug 16, 2025 am 09:37 AM

Aself-joinisusedtocomparerowswithinthesametable,suchasinhierarchicaldatalikeemployee-managerrelationships,bytreatingthetableastwoseparateinstancesusingaliases,asdemonstratedwhenlistingemployeesalongsidetheirmanagers'nameswithaLEFTJOINtoincludetop-lev

Apakah pernyataan Alter Table dalam SQL? Apakah pernyataan Alter Table dalam SQL? Aug 08, 2025 pm 02:13 PM

ThealterTableStatementisusedTomodifeanexistingtable'sstructureWithoutrecreatingit; 1.addanewcolumnusingaddcolumn; 2.dropacolumnwithdropcolumn, whoSalsodeletesitsdata;

Cara membuat pandangan dalam SQL Cara membuat pandangan dalam SQL Aug 11, 2025 pm 12:40 PM

Sintaks untuk membuat pandangan ialah pernyataan createViewView_nameasSelect; 2. Pandangan tidak menyimpan data sebenar, tetapi berdasarkan hasil pertanyaan masa nyata dari jadual asas; 3. Pandangan boleh diubahsuai menggunakan CreateOrreplaceView; 4. Pandangan boleh dipadam melalui Dropview; 5. Pandangan ini sesuai untuk memudahkan pertanyaan kompleks, menyediakan kawalan akses data, dan mengekalkan konsistensi antara muka, tetapi perhatian harus dibayar kepada prestasi dan logik, dan akhirnya berakhir dengan ayat lengkap.

Bagaimana untuk menggunakan gabungan luar penuh di SQL? Bagaimana untuk menggunakan gabungan luar penuh di SQL? Aug 17, 2025 am 12:25 AM

Afullouterjoinreturnsallrowsfrombothtables, withnullswherenomatchexists; 1) itcombinesmatchingrecordsandincludesunmatchedrowsfrombothleftandrightTables;

Berhijrah dari pangkalan data SQL ke MongoDB: Cabaran dan penyelesaian Berhijrah dari pangkalan data SQL ke MongoDB: Cabaran dan penyelesaian Aug 16, 2025 pm 01:40 PM

Transformdatamodelsbyembeddingorreferencingbasedonaccesspatternsinsteadofusingjoins; 2.handletransactionsbyforingatomicoperationsandeventualconsistency, reservingmulti-documenttransactionsforcases;

See all articles