Rumah pangkalan data tutorial mysql 数据库设计之主键的思考

数据库设计之主键的思考

Jun 07, 2016 pm 04:03 PM
kunci utama fikir pangkalan data paradigma reka bentuk

根据第二范式,主键是必须的。主键还是是唯一的,主键也被作为外键引用建立表和表之间的关系。从这几个方面讨论主键(数据库是Oracle): 1.主键的命名 最近看到由于架构使用hibernate的原因,导致所有主键的命名是ID,我觉得非常糟糕,如部门表(department),

根据第二范式,主键是必须的。主键还是是唯一的,主键也被作为外键引用建立表和表之间的关系。从这几个方面讨论主键(数据库是Oracle):

1.主键的命名

最近看到由于架构使用hibernate的原因,导致所有主键的命名是ID,我觉得非常糟糕,如部门表(department),用户表(user),角色表(role),这些表如果关联都是id之间关联,非常难辨认这个叫ID是那张表的,如果改为department_id,user_id,role_id是不是很舒服,一看就知道是那张表的ID。可惜架构限制,即使开发人员不断抱怨,也没办法。

2.选什么字段做为主键

选择主键是找一个自然键(与业务有关系的键),还是建一个与业务模型毫无关系的键呢?打个比方:

部门表(department)有个部门code是唯一的,编码规则如,

百度公司 01

百度公司/研发部 0101

百度公司/研发部/搜索引擎开发组 010101

设备表(device)有设备code这个字段,这个字段是根据设备的一些属性生成的一个唯一标识。

我的建议是建一个毫无业务意义的字段,原因是什么呢?

部门是会调整的,一个部门从这个大部门下调整到其他的大部门下是常有的事情,有很多业务关联的部门的信息,如果基表进行调整,那需要把业务的数据都刷新了。

设备表的code也可能会变,因为设备类型每年都有调整,只要一调整code就变化了,同部门一样。

说到这有兄弟不服气了,我们公司的设备表code不调整。我想说的是你不可能预测未来,只要是业务,都可能会发生变化。

3.主键是选择序列还是uuid

如果你的系统是小系统,数据量不大,那就没有什么讲究。

a.如广东有21个地市局,在每个局都发布一个系统,每天都要把地市局的数据抽取到省公司整合。要是用序列,要把序列前面加上这个局的标记,如果不做任何加工,把数据抽取到省公司整合会很难过的。如果用uuid则不需要考虑这个问题,人家号称全球唯一。

b.用序列,uuid哪个性能好?这个我还真测试过,uuid没有序列性能好,只是差一点点,可以忽略。uuid是32位的varchar2,占用空间比序列大多了,所以性能差点不足为奇。哪不是说任何场景序列就比uuid好呢?不能这么说,序列有一个问题,是我长期的性能调优发现的,用序列可能造成SQL语句时快时慢的问题。如果正常使用序列,主键是连续的,不会出现问题,难的是有时候不可能,如你的部门id从1到100,由于数据迁移的原因,你想区分以前的部门id和迁移后的,你把序列从10000开始,这样会造成数据不均匀。如果你知道直方图,绑定窥探,那我就不用解释了。

4.还有一个特殊的情况,现在有部门表(department),用户表(user),还有一张关联表,这种关联表可能会出现重复的问题。

create table dept_user_relation

(

relation_id NUMBER(18)primary key,

department_id NUMBER(18),

user_id NUMBER(18)

);

RELATION_IDDEPARTMENT_ID USER_ID

----------- ------------- ----------

1 100 100

2 100 100

3 100 100

你会发现主键relation_id没起作用啊!是的,需要在department_id和user_id上加唯一约束,当你加了约束,你又会发现要这个relation_id有什么用呢?是的,它可能没有用。

a.如果relation_id没有被其他的表作为外键引用,你可以用department_id和user_id联合起来作为主键。但我觉得留着也没啥问题,当然,如果你是处女座,那只有删除relation_id。

b.如果relation_id被其他的表作为外键引用,建议你还是保留吧,还不然不好弄。

这一小节我想说的是主键的本质就是一个约束,标示唯一性。

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

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.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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)

Honor Magic V3 memperkenalkan teknologi perlindungan mata nyahfokus AI: berkesan mengurangkan perkembangan rabun Honor Magic V3 memperkenalkan teknologi perlindungan mata nyahfokus AI: berkesan mengurangkan perkembangan rabun Jul 18, 2024 am 09:27 AM

Menurut berita pada 12 Julai, siri Honor Magic V3 telah dikeluarkan secara rasmi hari ini, dilengkapi dengan skrin perlindungan mata Honor Vision Soothing Oasis yang baharu Walaupun skrin itu sendiri mempunyai spesifikasi tinggi dan kualiti tinggi, ia juga mempelopori pengenalan perlindungan mata aktif AI teknologi. Dilaporkan bahawa cara tradisional untuk mengurangkan rabun adalah "kaca mata rabun". Kuasa cermin mata rabun diagihkan secara sama rata untuk memastikan kawasan pusat penglihatan diimej pada retina, tetapi kawasan persisian digambarkan di belakang retina. Retina merasakan bahawa imej berada di belakang, menggalakkan arah paksi mata berkembang kemudian, dengan itu mendalamkan darjah. Pada masa ini, salah satu cara utama untuk mengurangkan perkembangan rabun adalah "kanta nyahfokus". Kawasan pusat mempunyai kuasa biasa, dan kawasan persisian diselaraskan melalui partition reka bentuk optik, supaya imej di kawasan persisian jatuh ke dalam. hadapan retina.

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Telefon Vivo dengan isyarat paling kuat! vivo X100s dilengkapi dengan sistem penguatan isyarat universal: 21 antena, reka bentuk sekeliling 360° Telefon Vivo dengan isyarat paling kuat! vivo X100s dilengkapi dengan sistem penguatan isyarat universal: 21 antena, reka bentuk sekeliling 360° Jun 03, 2024 pm 08:41 PM

Menurut berita pada 13 Mei, vivoX100s telah dikeluarkan secara rasmi malam ini Selain imej yang sangat baik, telefon baharu ini juga menunjukkan prestasi yang sangat baik dari segi isyarat. Menurut pengenalan rasmi vivo, vivoX100s menggunakan sistem penguatan isyarat universal yang inovatif, yang dilengkapi dengan sehingga 21 antena. Reka bentuk ini telah dioptimumkan semula berdasarkan skrin langsung untuk mengimbangi banyak keperluan isyarat seperti 5G, 4G, Wi-Fi, GPS dan NFC. Ini menjadikan vivoX100s sebagai telefon mudah alih dengan keupayaan penerimaan isyarat terkuat dalam sejarah vivo. Telefon baharu ini juga menggunakan reka bentuk keliling 360° yang unik, dengan antena diedarkan di sekeliling badan. Reka bentuk ini bukan sahaja meningkatkan kekuatan isyarat, tetapi juga mengoptimumkan pelbagai postur pegangan harian untuk mengelakkan masalah yang disebabkan oleh kaedah pegangan yang tidak betul.

Telefon bimbit Honor X60i dijual bermula dari 1,399 yuan: skrin langsung OLED segiempat visual Telefon bimbit Honor X60i dijual bermula dari 1,399 yuan: skrin langsung OLED segiempat visual Jul 29, 2024 pm 08:25 PM

Menurut berita pada 29 Julai, telefon bimbit Honor X60i dijual secara rasmi hari ini, bermula pada 1,399 yuan. Dari segi reka bentuk, telefon bimbit Honor X60i menggunakan reka bentuk skrin lurus dengan lubang di tengah dan sempadan ultra-sempit yang hampir tidak terhad pada keempat-empat sisi, yang meluaskan bidang pandangan. Parameter Honor X60i Paparan: Paparan definisi tinggi 6.7 inci Bateri: Bateri berkapasiti besar 5000mAh Pemproses: Pemproses Dimensity 6080 (TSMC 6nm, 2x2.4G A76+6×2G A55) Sistem: Sistem MagicOS8.0 Ciri-ciri lain: peningkatan isyarat 5G , kapsul pintar, cap jari bawah skrin, dwi MIC, pengurangan hingar, Soal Jawab pengetahuan, keupayaan fotografi: sistem dwi kamera belakang: 50 juta piksel kamera utama, 2 juta piksel kanta tambahan, kanta selfie hadapan: 8 juta piksel, harga: 8GB

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Proses susun baru! Xiaomi MIX Fold 4 dilengkapi dengan bateri Jinshajiang 'berbentuk khas tiga dimensi' buat kali pertama Proses susun baru! Xiaomi MIX Fold 4 dilengkapi dengan bateri Jinshajiang 'berbentuk khas tiga dimensi' buat kali pertama Jul 20, 2024 am 03:20 AM

Menurut berita pada 19 Julai, Xiaomi MIX Fold 4, telefon lipat perdana pertama, dikeluarkan secara rasmi malam ini dan dilengkapi dengan "bateri berbentuk khas tiga dimensi" buat kali pertama. Menurut laporan, Xiaomi MIX Fold4 telah mencapai kejayaan besar dalam teknologi bateri dan mereka bentuk "bateri berbentuk khas tiga dimensi" yang inovatif khusus untuk skrin lipat. Peranti skrin lipat tradisional kebanyakannya menggunakan bateri persegi konvensional, yang mempunyai kecekapan penggunaan ruang yang rendah. Untuk menyelesaikan masalah ini, Xiaomi tidak menggunakan sel bateri penggulungan biasa, tetapi membangunkan proses laminasi baharu untuk mencipta bentuk bateri baharu, yang sangat meningkatkan penggunaan ruang. Inovasi Teknologi Bateri Untuk menyusun kepingan elektrod positif dan negatif secara bergilir-gilir dan memastikan pembenaman ion litium yang selamat, Xiaomi telah membangunkan mesin kimpalan ultrasonik dan mesin laminasi baharu untuk meningkatkan ketepatan kimpalan dan pemotongan.

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Apple iPad Pro/Air 2024 tidak menyokong Apple Pencil generasi kedua: model baharu boleh dibeli jika perlu Apple iPad Pro/Air 2024 tidak menyokong Apple Pencil generasi kedua: model baharu boleh dibeli jika perlu May 08, 2024 pm 04:07 PM

Menurut berita pada 8 Mei, tablet iPad Pro/Air baharu Apple telah dikeluarkan Menurut laman web rasmi Apple, iPad Pro dan iPad Air baharu tidak lagi menyokong Apple Pencil generasi kedua yang dikeluarkan pada 2018, tetapi hanya menyokong Apple Pencil Pro. dan Pensil Apple (USB- C). Apple Pencil (USB-C) akan dikeluarkan pada November 2023. Stilus ini mengekalkan ketepatan tahap piksel, kependaman rendah dan ciri penderiaan sudut condong yang sama seperti Apple Pencil generasi pertama dan kedua, sambil menghapuskan fungsi dan kepekaan tekanan tidak menyokong pengecasan tanpa wayar. Harganya ialah 649 yuan. Dan ApplePe yang baru dikeluarkan

See all articles