MySQL三大范式是關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的基礎(chǔ),而第一范式是其中最基礎(chǔ)的一個(gè)。第一范式的目標(biāo)是確保每個(gè)屬性具有原子性,也就是確保每個(gè)屬性不能再分成更小的組件。
舉個(gè)例子,如果我們要設(shè)計(jì)一個(gè)“人員信息”表,其中包括姓名、電話、地址三個(gè)屬性,那么我們需要確保這三個(gè)屬性都是原子性的。也就是說(shuō),我們不能將“地址”這個(gè)屬性再細(xì)分成“省份”、“城市”、“街道”等多個(gè)屬性,因?yàn)檫@樣會(huì)破壞第一范式的原則。
如果我們忽略第一范式,將表設(shè)計(jì)成這樣:
CREATE TABLE person_info ( name VARCHAR(50), phone VARCHAR(20), province VARCHAR(20), city VARCHAR(20), street VARCHAR(50) );
而不是這樣:
CREATE TABLE person_info ( name VARCHAR(50), phone VARCHAR(20), address VARCHAR(100) );
那么在插入和更新數(shù)據(jù)時(shí),就需要考慮多個(gè)屬性的關(guān)聯(lián)性,比如修改地址時(shí)需要同時(shí)更新省份、城市、街道等屬性,而這樣的操作會(huì)非常繁瑣。
因此,第一范式的目標(biāo)是確保每個(gè)屬性都是原子性的,這樣可以使數(shù)據(jù)庫(kù)的查詢(xún)、插入、更新等操作更加簡(jiǎn)便明了,提高數(shù)據(jù)庫(kù)的可維護(hù)性和可擴(kuò)展性。