Rumah > Artikel > pangkalan data > Apakah maksud kunci utama komposit mysql?
Dalam MySQL, kunci utama komposit bermaksud kunci utama jadual pangkalan data mengandungi lebih daripada satu medan, iaitu kunci utama berbilang medan ialah kunci utama komposit adalah sejenis kunci utama dan mempunyai fungsi dan definisi yang sama seperti kunci utama. Kunci primer komposit tidak boleh mengandungi lajur berlebihan yang tidak diperlukan apabila lajur kunci utama komposit dipadamkan, jika kunci utama yang terdiri daripada lajur yang tinggal masih memenuhi prinsip keunikan, maka kunci utama komposit adalah salah.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Apakah kunci utama komposit bagi jadual data?
Apa yang dipanggil kunci utama komposit bermakna kunci utama jadual anda mengandungi lebih daripada satu medan.
Kunci utama berbilang medan MySQL juga boleh menjadi kunci utama komposit. Kunci primer komposit juga merupakan jenis kunci primer dan mempunyai fungsi dan definisi yang sama seperti kunci primer.
Kekangan kunci utama mentakrifkan kunci utama dalam jadual untuk menentukan secara unik pengecam setiap baris data dalam jadual. Kunci utama boleh menjadi lajur tertentu dalam jadual atau gabungan berbilang lajur Kunci utama yang terdiri daripada berbilang lajur dipanggil kunci utama komposit.
Kunci primer komposit tidak boleh mengandungi lajur berlebihan yang tidak diperlukan. Apabila lajur kunci utama komposit dipadamkan, jika kunci utama yang terdiri daripada lajur yang tinggal masih memenuhi prinsip keunikan, maka kunci utama komposit adalah salah. Ini adalah prinsip meminimumkan.
Contohnya:
create table test ( name varchar(19), id number, value varchar(10), primary key (name,id) )
Gabungan nama dan medan id di atas ialah kunci utama komposit jadual ujian anda
Ia muncul kerana medan nama anda mungkin muncul Nama pendua, jadi tambah medan ID untuk memastikan keunikan rekod anda
Mengapa kunci utama komposit muncul?
Ini kerana medan nama jadual mungkin mempunyai nama pendua, jadi kita perlu menambah medan id untuk memastikan keunikan rekod Dalam pembangunan kita, adalah lebih baik untuk menyimpan satu medan kunci utama Jika kita perlu mencipta dua kunci utama komposit, kita harus semasa membuat jadual Cari medan yang mengenal pasti objek secara unik.
Kemudian soalan itu datang lagi. Bukankah ini bermakna jadual hanya boleh mempunyai satu kunci utama? Kunci utama ialah satu-satunya indeks jadual, jadi mengapa jadual boleh mencipta berbilang kunci utama?
Malah, "kunci utama ialah satu-satunya indeks" agak samar-samar Berikut adalah contoh: Kami biasa mempunyai medan id dalam jadual, yang ditetapkan untuk berkembang secara automatik dan ditetapkan sebagai. kunci utama Pada masa ini "Kunci utama ialah satu-satunya indeks", dan ID berkembang secara automatik untuk memastikan keunikan. Pada masa ini, apabila nama medan varchar(50) dicipta, ia juga ditetapkan sebagai kunci utama Pada masa ini, id dan nama menjadi kunci utama komposit, dan medan nama dalam jadual boleh memasukkan nilai nama yang sama. apabila memasukkan data. Terdapat satu lagi masalah pada masa ini. Bukankah dikatakan bahawa "kunci utama adalah indeks yang unik? Bagaimana mereka boleh mempunyai nilai yang sama?"
Jadi dengan mengatakan "kunci utama adalah. indeks unik" adalah samar-samar; kunci utama ialah indeks unik Premisnya ialah "apabila terdapat hanya satu kunci utama dalam jadual, ia adalah satu-satunya indeks apabila terdapat berbilang kunci utama dalam jadual, ia dipanggil komposit kunci utama. Gabungan kunci utama komposit menjamin indeks unik, yang boleh difahami sebagai gabungan kunci utama komposit Indeks unik (kunci utama) jadual. Mengapakah ID yang meningkat sendiri sudah digunakan sebagai kunci utama untuk pengenalan unik Mengapakah kunci utama komposit masih diperlukan? Kerana tidak semua jadual mesti mempunyai medan ID Contohnya, jika kita membina jadual pelajar dan tiada ID unik yang boleh mengenal pasti pelajar, apakah yang perlu kita lakukan? Nama, umur dan kelas pelajar semuanya boleh diulang dan tidak boleh dikenal pasti secara unik menggunakan satu medan Dalam kes ini, kita boleh menetapkan berbilang medan sebagai kunci utama untuk membentuk kunci utama gabungan ini bersama-sama mengenal pasti keunikan , medan tertentu Tiada masalah dengan nilai medan kunci utama pendua Selagi semua nilai kunci utama dalam berbilang rekod adalah sama, ia tidak dianggap pendua.
Ringkasan: Dalam pembangunan, sebaiknya simpan satu medan kunci utama Jika anda perlu mencipta dua kunci utama komposit, anda harus mencari medan yang boleh mengenal pasti objek secara unik semasa membuat jadual. Pendek kata, gunakan kunci utama yang kurang komposit.
Bagaimana untuk menambah kunci utama komposit?
Anda boleh menambah kunci utama komposit semasa mencipta jadual Pada masa ini, kunci utama terdiri daripada berbilang medan adalah seperti berikut:
PRIMARY KEY [字段1,字段2,…,字段n]
Contoh: Cipta jadual data tb_emp, dengan mengandaikan jadual Tiada id kunci utama Untuk mengenal pasti pekerja secara unik, nama dan deptId boleh digabungkan sebagai kunci utama
mysql> CREATE TABLE tb_emp -> ( -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id,deptId) -> ); Query OK, 0 rows affected (0.37 sec)
Kunci primer bersama
Perbezaan antara kunci primer bersama dan kunci primer komposit ialah kunci primer bersama ditunjukkan dalam berbilang jadual, dan kunci primer komposit dicerminkan dalam berbilang medan dalam jadual.
学生表:student create table student( id int auto_increment comment '主键id', name varchar(30) comment '姓名', age smallint comment '年龄', primary key(id) ); 课程表:course create table course( id int auto_increment comment '主键id', name varchar(30) comment '课程名称', primary key(id) ); 学生课程表:stu_course create table IF NOT EXISTS stu_cour( id int auto_increment comment '主键id', stu_id mediumint comment '学生表id', cour_id mediumint comment '课程表id', primary key(id) );
Pada masa ini, id dalam stu_course mewakili kunci utama bersama, dan rekod pelajar serta kursus boleh diperoleh melalui id
Jadi gabungan kunci utama, seperti namanya, ialah gabungan berbilang kunci utama untuk membentuk gabungan kunci utama, yang dicerminkan dalam kesatuan. (Kekunci utama adalah unik pada prinsipnya, jangan risau dengan nilai unik) Indeks boleh meningkatkan kelajuan pertanyaan data dengan banyak, tetapi ia akan memperlahankan kelajuan memasukkan, memadam dan mengemas kini jadual, kerana apabila melaksanakan operasi tulis ini, indeks mesti dikendalikan. Contoh mudah: Kunci primer A dan kunci primer B membentuk kunci primer bersama C. Data kunci primer A dan kunci primer B boleh sama persis B adalah unik.
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Apakah maksud kunci utama komposit mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!