Өгөгдлийн сангийн боловсруулалтад бүрэн ажиллагаатай байх

Функциональ хамааралтай байдал нь хоёрдогч хэвийн маягтын (2NF) хэвийн стандартад нийцдэг мэдээллийн мэдээллийн хэвийн төлөв юм. Товчоор хэлбэл, энэ нь Нэгдүгээр хэвийн маягтын (1NF) шаардлагыг хангаж байгаа бөгөөд бүх түлхүүр бус шинж чанарууд нь анхдагч түлхүүрээс бүрэн хамааралтай байна гэсэн үг юм.

Энэ нь сонсогдож болохуйц төвөгтэй биш юм. Үүнийг дэлгэрэнгүй харъя.

Анхны Хэвийн Хэлбэрийн хураангуй

Өгөгдлийн сан нь бүрэн ажиллагаатай байхын тулд эхлээд эхний ээлжийн маягтыг дагаж мөрдөх ёстой.

Энэ бүх утга нь атомын утгатай байх ёстой гэсэн үг юм.

Жишээ нь, дараах хүснэгтэд 1NF-тэй нийцдэггүй . Учир нь ажилтан Тина нь хоёр байршилтай, хоёулаа нэг нүдэнд холбогдсон байна:

Эхний ээлжит маягтыг дагаж мөрдөхгүй байх
Ажилтан Байршил
Жон Лос Анжелес
Тина Лос Анжелес, Чикаго

Энэ загварыг ашиглах нь өгөгдлийн шинэчлэлт эсвэл оруулганд сөргөөр нөлөөлж болзошгүй. 1NF нийцлийг хангахын тулд бүх шинж чанарууд (эсвэл баганы нүднүүд) нэг утга агуулахын тулд хүснэгтийг дахин тохируулаарай:

Эхний хэвийн маягтыг дагаж мөрдөх
Ажилтан Байршил
Жон Лос Анжелес
Тина Лос Анжелес
Тина Чикаго

Гэхдээ 1NF нь өгөгдөлтэй холбоотой асуудлаас зайлсхийхэд хангалтгүй хэвээр байна.

2NF бүрэн дүүрэн байдлыг хангахын тулд хэрхэн ажилладаг вэ

Бүрэн хамааралтай байхын тулд нэр дэвшигч бус бүх түлхүүр шинж чанарууд нь үндсэн түлхүүрээс хамаарна. ( Нэр дэвшигч гол шинж чанар нь мэдээллийн баазын алдааг тодорхойлоход хэрэглэгддэг гол түлхүүр (жишээлбэл, анхдагч буюу гадаад түлхүүр) гэдгийг санаарай.

Өгөгдлийн сангийн дизайнерууд нь шинж чанаруудын хамааралтай харилцааг тайлбарлахын тулд тэмдэглэгээ хэрэглэдэг:

Хэрэв А шинж чанар нь В утгыг тодорхойлдог бол бид энэ A -> B - гэж бичнэ. Энэ нь B нь функциас хамааралтай байна гэсэн үг. Энэ харилцаан дахь A нь В утгыг тодорхойлно.

Жишээлбэл, дараахь ажилчдын Хэлтэс дэх хүснэгт, EmployeeID ба DeptID нь нэр дэвшигчийн түлхүүрүүд юм: EmployeeID нь хүснэгтийн үндсэн түлхүүр бөгөөд DeptID нь гадаад түлхүүр юм.

Бусад аливаа шинж чанар - энэ тохиолдолд EmployeeName болон DeptName нь түүний утгыг олохын тулд үндсэн түлхүүрээс хамаарах ёстой.

Ажилчдын газар
Ажилчдын ID EmployeeName DeptID DeptName
Emp1 Жон Dept001 Санхүүжилт
Emp2 Тина Dept003 Борлуулалт
Э-мейл Карлос Dept001 Санхүүжилт

Энэ тохиолдолд Employee Name нь EmployeeID-ийн үндсэн түлхүүрээс хамаардаг бол DeptName нь DeptID дээрээс хамаардаг учраас энэ хүснэгт бүрэн хамааралгүй юм. Үүнийг хэсэгчилсэн хамаарал гэж нэрлэдэг.

Энэ хүснэгтийг 2NF-д нийцүүлэхийн тулд бид өгөгдлийг хоёр хүснэгтэнд хуваах хэрэгтэй болно:

Ажилтнууд
Ажилчдын ID EmployeeName DeptID
Emp1 Жон Dept001
Emp2 Тина Dept003
Э-мейл Карлос Dept001

Бид DeptName атрибутыг Ажилчдын хүснэгтээс устгаж, шинэ хүснэгтүүд үүсгэнэ:

Департамент
DeptID DeptName
Dept001 Санхүүжилт
Dept002 Хүний нөөц
Dept003 Борлуулалт

Одоо хүснэгтийн хоорондын хамаарал бүрэн хамааралтай, эсвэл 2NF байна.

Яагаад заавал хамааралтай байх ёстой вэ?

Өгөгдлийн сангийн шинж чанаруудын бүрэн хамаарал нь өгөгдлийн бүрэн бүтэн байдлыг хангах, өгөгдлийн гажуудлаас сэргийлдэг.

Жишээлбэл, дээрх хэсэгт байгаа хүснэгтэд зөвхөн 1NF-г мөрддөг. Энд байгаа нь:

Эхний хэвийн маягтыг дагаж мөрдөх
Ажилтан Байршил
Жон Лос Анжелес
Тина Лос Анжелес
Тина Чикаго

Тина нь хоёр бичлэгтэй. Хэрэв бид хоёрыг хоёроор нь мэдэгдэхгүйгээр нэгтгэх юм бол үр дүн нь зөрүүтэй мэдээлэл байх болно.

Эсвэл, энэ хүснэгтэд ажилтан нэмэхийг хүсвэл, бид одоогоор Байршилыг мэдэхгүй байна уу? Байршлын шинж чанар нь NULL утгыг зөвшөөрөхгүй бол бид шинэ ажилтан нэмэх боломжтой болно.

Бүрэн хамаарал бол бүхэл бүтэн дүр төрх биш юм. Та мэдээллийн бааз Гуравдагч хэвийн маягт (3NF) байгаа эсэхийг шалгаарай.