Гузаронидани базаи маълумот дар шакли сеюми оддӣ (3NF)

Намунаи сеюми маъмул (3NF) принсипи пойгоҳи додаҳоест, ки беэътибории маълумотро дар асоси принсипҳои стандартизатсионии пойгоҳи додашударо, ки дар шакли якум Формулаи (1NF) ва Формули дуюми оддӣ (2NF) пешниҳод мекунанд, дастгирӣ мекунад.

Талаботи формулаи сеюм

Ду шартҳои асосӣ барои махзани маълумот дар шакли оддии сеюм вуҷуд доранд:

Дар бораи вобастагии асосӣ

Биёед минбаъда фаҳмем, ки чӣ гуна мо бо он, ки ҳамаи сутунҳо бояд аз калиди ибтидоӣ вобаста бошанд.

Агар арзиши сутуни аз ҳар як калиди асосӣ ва сутуни дигар дар ҷадвал гирифта шавад, он 3NF-ро вайрон мекунад. Мизҳои кормандонро бо ин сутунҳо баррасӣ кунед:

Номи LastName ва FirstName танҳо аз арзиши кормандони коргар вобаста аст? Метавонед LastName аз номи FirstName вобаста бошад? Не, зеро чизе ки дар охирин ном дорад, арзиши ибтидоиро пешниҳод мекунад. Метавонед LastName аз LastName вобаста аст? Не, зеро ин ҳамон рост аст: ҳар гуна LastName метавонад, онро ҳамчун арзиши номи FirstName таъмин кунад. Бинобар ин, ин ҷадвал 3НF мутобиқ аст.

Аммо ин ҷадвалбандаро дар инҷо баррасӣ кунед:

Истеҳсолкунанда ва модели метавонад аз VehicleID ба даст оварда шавад, вале модели низ метавонад аз истеҳсолкунанда равад, зеро модели автомобил танҳо аз ҷониби истеҳсолкунанда муайян карда мешавад. Тарҳрезии ин маҷмӯъ ғайримутамаркази 3НF мебошад ва бинобар ин, боиси оқибатҳои маълумот мегардад. Масалан, шумо нависед, ки истеҳсолкунанда бе навсозии модели навсозии нармафзорро нависед.

Барои мутобиқ кардани он, мо бояд сутуни иловагии вобастаро ба дигар ҷадвал гузаронем ва онро бо калиди хориҷӣ истифода барем. Ин ба ду ҷадвал меояд:

Ҷадвалиҳои нақлиётӣ

Дар ҷадвали дар поён, модели модели калиди хориҷӣ ба мизҳои модул:

Ҷадвалиҳо

Ин навъҳои ҷадвалҳои ҷадвалҳои нав ба истеҳсолкунандагон. Агар шумо хоҳед, ки иттилооти махсуси автомобилиро ба модели навсозӣ навсозӣ кунед, шумо онро дар ин ҷадвал истифода мебаред, на дар ҷадвалҳои воситаҳои нақлиёт.

Майдонҳои таҳияшуда дар модели 3NF

Мизер метавонад як майдони таҳияшударо дар бар гирад - яке аз он дар сутунҳои дигар дар ҷадвал ҳисоб карда шавад. Масалан, ин маҷмӯи фармоишҳои тақвимро баррасӣ кунед:

Меънати умумии 3НF, зеро он метавонад бо хароҷоти мутаносиб аз рӯи миқдор зиёд карда шавад, на пурра аз калиди асосӣ вобаста. Мо бояд онро аз рӯи ҷадвал ба таври оддӣ ба шакли оддии сеюм гузорем.

Дар асл, аз он ба даст оварда шудааст, беҳтар аст, ки онро дар базаи маълумотҳо нигоҳ надоред.

Мо метавонем онро ҳангоми таҳияи саволномаҳои базаи маълумотҳо дар бораи "парвози" баҳогузорӣ карда метавонем. Масалан, мо шояд пештар дархост кардаем, ки ин пурсишро барои гирифтани рақам ва маҷмӯи тартиботҳо истифода барем:

SELECT OrderNumber, Тақвим аз Таҳвили WidgetOrders

Мо ҳоло метавонем чунин пурсишро истифода барем:

SELECT OrderNumber, UnitPrice * Миқдори AS Дар маҷмӯъ WidgetOrders

барои ноил шудан ба натиҷаҳои бе вайрон кардани қоидаҳои муқаррарӣ.