cari
Rumahpangkalan datatutorial mysql通俗易懂的数据库设计三大范式

通俗易懂的数据库设计三大范式

Jun 07, 2016 pm 04:24 PM
untukMenubuhkanpangkalan dataparadigmareka bentuk

为了建立冗余较

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

在实际开发中最为常见的设计范式有三个:

1.第一范式

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式,如下表所示。?

用户信息表

编号 姓名 性别 年龄 联系电话 省份 城市 详细地址
1 张红欣 26 0378-23459876 河南 开封 朝阳区新华路23号
2 李四平 32 0751-65432584 广州 广东 白云区天明路148号
3 刘志国 21 0371-87659852 河南 郑州 二七区大学路198号
4 郭小明 27 0371-62556789 河南 郑州 新郑市薛店北街218号

上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。

2.第二范式

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。

订单信息表

订单编号 商品编号 商品名称 数量 单位 价格 客户 所属单位 联系方式
001 1 挖掘机 1 1200000¥ 张三 上海玖智 020-1234567
001 2 冲击钻 8 230¥ 张三 上海玖智 020-1234567
002 3 铲车 2 980000¥ 李四 北京公司 010-1234567

这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。

而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

订单信息表

订单编号 客户 所属单位 联系方式
001 张三 上海玖智 020-1234567
002 李四 北京公司 010-1234567

订单项目表

订单编号 商品编号 数量
001 1 1
001 2 8
002 3 2

商品信息表

商品编号 商品名称 单位 商品价格
1 挖掘机 1200000¥
2 冲击钻 230¥
3 铲车 980000¥

这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。

3.第三范式

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。

订单信息表

订单编号 订单项目 负责人 业务员 订单数量 客户编号
001 挖掘机 刘明 李东明 1台 1
002 冲击钻 李刚 霍新峰 8个 2
003 铲车 郭新一 艾美丽 2辆 1

客户信息表

客户编号 客户名称 所属公司 联系方式
1 李聪 五一建设 13253661015
2 刘新明 个体经营 13285746958

这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

Kenyataan
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
Apakah beberapa alat yang boleh anda gunakan untuk memantau prestasi MySQL?Apakah beberapa alat yang boleh anda gunakan untuk memantau prestasi MySQL?Apr 23, 2025 am 12:21 AM

Bagaimana untuk memantau prestasi MySQL dengan berkesan? Gunakan alat seperti mysqladmin, showglobalstatus, perconamonitoring dan pengurusan (PMM), dan mysql enterprisemonitor. 1. Gunakan mysqladmin untuk melihat bilangan sambungan. 2. Gunakan showglobalstatus untuk melihat nombor pertanyaan. 3.Pmm menyediakan data prestasi terperinci dan antara muka grafik. 4.MySqLenterPrisemonitor menyediakan fungsi pemantauan yang kaya dan mekanisme penggera.

Bagaimana MySQL berbeza dari SQL Server?Bagaimana MySQL berbeza dari SQL Server?Apr 23, 2025 am 12:20 AM

Perbezaan antara MySQL dan SQLServer adalah: 1) MySQL adalah sumber terbuka dan sesuai untuk sistem web dan tertanam, 2) SQLServer adalah produk komersil Microsoft dan sesuai untuk aplikasi peringkat perusahaan. Terdapat perbezaan yang signifikan antara kedua -dua enjin penyimpanan, pengoptimuman prestasi dan senario aplikasi. Apabila memilih, anda perlu mempertimbangkan saiz projek dan skalabiliti masa depan.

Dalam senario apa yang mungkin anda pilih SQL Server melalui MySQL?Dalam senario apa yang mungkin anda pilih SQL Server melalui MySQL?Apr 23, 2025 am 12:20 AM

Dalam senario aplikasi peringkat perusahaan yang memerlukan ketersediaan yang tinggi, keselamatan maju dan integrasi yang baik, SQLServer harus dipilih bukannya MySQL. 1) SQLServer menyediakan ciri peringkat perusahaan seperti ketersediaan tinggi dan keselamatan maju. 2) Ia bersepadu dengan ekosistem Microsoft seperti VisualStudio dan PowerBI. 3) SQLServer melakukan pengoptimuman prestasi yang sangat baik dan menyokong jadual yang dioptimumkan memori dan indeks penyimpanan lajur.

Bagaimanakah MySQL mengendalikan set aksara dan kolasi?Bagaimanakah MySQL mengendalikan set aksara dan kolasi?Apr 23, 2025 am 12:19 AM

Mysqlmanagescharactersetsandcollationsbyusingutf-8asthedefault, membolehkanConfigurationatdatabase, table, andcolumnlevels, andrequiringcarefulalignmenttoavoidmismatches.1) setdefaultcharactandcollationforadatabase.2) configurecharact

Apa yang dicetuskan di MySQL?Apa yang dicetuskan di MySQL?Apr 23, 2025 am 12:11 AM

Pencetus MySQL adalah prosedur yang disimpan secara automatik yang dikaitkan dengan jadual yang digunakan untuk melakukan satu siri operasi apabila operasi data tertentu dilakukan. 1) Definisi dan fungsi pencetus: Digunakan untuk pengesahan data, pembalakan, dan lain-lain. 2) Prinsip kerja: Ia dibahagikan kepada sebelum dan selepas, dan menyokong pencetus peringkat baris. 3) Contoh Penggunaan: Boleh digunakan untuk merakam perubahan gaji atau mengemas kini inventori. 4) Kemahiran Debugging: Gunakan perintah showtriggers dan showcreateTrigger. 5) Pengoptimuman Prestasi: Elakkan operasi kompleks, menggunakan indeks, dan menguruskan urus niaga.

Bagaimana anda membuat dan mengurus akaun pengguna di MySQL?Bagaimana anda membuat dan mengurus akaun pengguna di MySQL?Apr 22, 2025 pm 06:05 PM

Langkah -langkah untuk membuat dan mengurus akaun pengguna di MySQL adalah seperti berikut: 1. Buat pengguna: Gunakan createuser'newuser '@' localhost'identifiedby'password '; 2. Menetapkan Kebenaran: Gunakan Grantselect, Insert, UpdateOnmydatabase.to'newuser'@'localhost '; 3. Betulkan Ralat Kebenaran: Gunakan RevokeAllPrivileSeonMydatabase.from'newuser'@'localhost '; kemudian menetapkan semula kebenaran; 4. Kebenaran Pengoptimuman: Gunakan Showgra

Bagaimana MySQL berbeza dari Oracle?Bagaimana MySQL berbeza dari Oracle?Apr 22, 2025 pm 05:57 PM

MySQL sesuai untuk pembangunan pesat dan aplikasi kecil dan sederhana, sementara Oracle sesuai untuk perusahaan besar dan keperluan ketersediaan yang tinggi. 1) MySQL adalah sumber terbuka dan mudah digunakan, sesuai untuk aplikasi web dan perusahaan kecil dan sederhana. 2) Oracle berkuasa dan sesuai untuk perusahaan besar dan agensi kerajaan. 3) MySQL menyokong pelbagai enjin penyimpanan, dan Oracle menyediakan fungsi peringkat perusahaan yang kaya.

Apakah kelemahan menggunakan MySQL berbanding dengan pangkalan data hubungan lain?Apakah kelemahan menggunakan MySQL berbanding dengan pangkalan data hubungan lain?Apr 22, 2025 pm 05:49 PM

Kelemahan MySQL berbanding dengan pangkalan data relasi lain termasuk: 1. Isu Prestasi: Anda mungkin menghadapi kesesakan apabila memproses data berskala besar, dan PostgreSQL melakukan lebih baik dalam pertanyaan kompleks dan pemprosesan data besar. 2. Skalabiliti: Keupayaan skala mendatar tidak sebaik Google Spanner dan Amazon Aurora. 3. Batasan Fungsian: Tidak sebaik PostgreSQL dan Oracle dalam Fungsi Lanjutan, beberapa fungsi memerlukan lebih banyak kod dan penyelenggaraan tersuai.

See all articles

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

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!