Гэтыя два простых правілы дапамогуць нармалізацыі базы дадзеных
Першая нармальная форма (1NF) устанаўлівае асноўныя правілы арганізаванай базы дадзеных:
- Ліквідацыю дублюючых слупкі з той жа табліцы.
- Стварыць асобныя табліцы для кожнай групы звязаных дадзеных і ідэнтыфікаваць кожную радок з унікальным слупком (першасны ключ).
Што азначаюць гэтыя правілы пры разглядзе практычнага праектавання базы дадзеных? Гэта на самай справе даволі проста.
1. Ліквідаваць Тыражаванне
Першае правіла абвяшчае, што мы не павінны дубляваць дадзеныя ў межах адной і той жа радку табліцы. У супольнасці баз дадзеных, гэтая канцэпцыя называецца атамарнага табліцы. Табліцы, якія адпавядаюць гэтаму правілу, называюцца атамнымі. Давайце разгледзім гэты прынцып з класічным прыкладам: табліцы ў базе дадзеных чалавечых рэсурсаў, які захоўвае адносіны мэнэджэра-падначалены. У згаданым прыкладзе, мы накладзем бізнес-правіла, што кожны менеджэр можа мець адзін або некалькі падначаленых у той час як кожны падначалены можа мець толькі адзін менеджэр.
Наглядна, пры стварэнні спісу або табліцы, каб адсочваць гэтую інфармацыю, мы маглі б стварыць табліцу з наступнымі палямі:
- менеджэр
- Subordinate1
- Subordinate2
- Subordinate3
- Подчиненный4
Тым не менш, нагадаем, першае правіла, уведзенай 1NF: Ліквідаваць дублюючыя слупкі з той жа табліцы. Відавочна, што слупкі Subordinate1-Подчиненный4 дублююць. Надасце час і абдумаць праблемы, якія ўзнікаюць у гэтым сцэнары. Калі менеджэр мае толькі адзін падначалены, слупкі Subordinate2-Подчиненный4 проста марна месца захоўвання (каштоўная база дадзеных таварную). Акрамя таго, уявіце сабе выпадак, калі менеджэр ўжо мае 4 падначаленых - што адбудзецца, калі яна бярэ на іншага супрацоўніка? Уся структура табліцы запатрабуе мадыфікацыі.
На дадзены момант, другая бліскучая ідэя звычайна адбываецца з навічкамі базы дадзеных: Мы не хочам, каб мець больш чым адзін слупок, і мы хочам, каб забяспечыць гнуткі аб'ём сховішчы дадзеных. Давайце паспрабуем нешта накшталт гэтага:
- менеджэр
- падначаленыя
І поле Падначаленыя будзе ўтрымліваць некалькі запісаў у выглядзе «Мэры, Біл, Джо.»
Гэта рашэнне бліжэй, але ён таксама не дацягвае знак. Калонка падначаленыя па-ранейшаму дублююць адзін аднаго і неатомическое. Што адбываецца, калі нам трэба дадаць ці выдаліць падначалены? Нам трэба чытаць і пісаць усё змесціва табліцы. Гэта не мае вялікага значэння ў гэтай сітуацыі, але што, калі адзін менеджэр быў адзін сто супрацоўнікаў? Акрамя таго, гэта ўскладняе працэс выбару дадзеных з базы дадзеных у будучых запытах.
Вось табліца, якая задавальняе першае правіла 1NF:
- менеджэр
- падначалены
У гэтым выпадку, кожны падначалены маюць адзін уваход, але менеджэры могуць мець некалькі запісаў.
2. Вызначыць першасны ключ
Цяпер, што тычыцца другога правілы: ідэнтыфікаваць кожную радок з унікальным слупком або мноствам слупкоў ( першасны ключ )? Вы можаце зірнуць на табліцу вышэй, і выкарыстоўвае падначаленага слупка ў якасці першаснага ключа. На самай справе, падначалены слупок з'яўляецца добрым кандыдатам для першаснага ключа з-за таго, што нашы бізнес-правілаў паказана, што кожны падначалены можа мець толькі адзін менеджэр. Тым не менш, дадзеныя, якія мы абралі для захоўвання ў нашай табліцы робіць гэта менш ідэальным рашэннем. Што адбудзецца, калі мы наняць іншыя служачыя па імі Джым? Як мы захоўваем яго менеджэр-падначаленых адносіны ў базе дадзеных?
Лепш за ўсё выкарыстоўваць сапраўды унікальны ідэнтыфікатар (напрыклад, супрацоўнік ID) у якасці першаснага ключа . Наша канчатковая табліца будзе выглядаць наступным чынам:
- Менеджэр па ID
- падначаленыя ID
Цяпер наша табліца знаходзіцца ў першай нармальнай форме! Калі вы хочаце працягнуць вывучэнне нармалізацыі, чытаць іншыя артыкулы ў гэтай серыі: