อ้างอิงปฐมภูมิจาก Thomas Connolly, Carolyn Begg : Database System, 2005
ผมเริ่มเขียนบทความนี้หลังจากเริ่มเขียนเรื่องของการทำ Multidimension พอเขียนไปเขียนมาผมว่ามันจะทำให้งงได้ง่าย ๆ เลย ถ้าคนทำไม่รู้เกี่ยวกับกฏการทำ Normalize เพราะการทำ Data Warehouse มันจะเหมือนกับว่า อยู่ ๆ เอาสิ่งที่ควรแยกออกจากกันมารวมกัน บางครั้งก็ยังคงแยกออกจากกันแต่เอามาทำ Relations กัน ยิ่งกว่านั้น บางครั้งกลับทำทั้ง 2 อย่างไปพร้อม ๆ กัน แต่เชื่อมั้ยไม่ว่าจะเป็น Normalize หรือ Multidimension มันง่ายมาก ๆ เลย ถ้าไม่เชื่อก็ลองมาดูกัน
หลักง่าย ๆ ของการทำ Normalize คือทำให้ฐานข้อมูลเกิดอาการปกติ โดยก่อนจะทำให้มันเกิดอาการปกติก็ต้องรู้ก่อนว่าแล้วอาการไม่ปกติเป็นอย่างไร ก็ต้องตอบว่ามันง่ายมากเลย คือให้ใช้ Sense มากกว่าใช้กฏหรือทฤษฏี เอาล่ะพูดมากไปเดี๋ยวจะเบื่อเปล่า ๆ เรามาดูกันเลยดีกว่า
ง่าย ๆ Normalize มีด้วยกัน 6+2 จริง ๆ จะพูดว่า 8 น่าจะง่ายกว่า แต่มันเป็น 6+2 จริง ๆ ครับ เริ่มง่าย ๆ มารู้จักกันทีละขั้นเลยนะครับ
First Normal Form (1NF) นิยามของมันคือ “Table faithfully represents a relation and has no “repeating groups” (http://en.wikipedia.org/wiki/First_normal_form)” แปลเป็นไทยคือขจัดกลุ่มข้อมูล ซึ่งทั้งหมดฟังดูยากใช่มั้ยคือ ลืมมันไปให้หมดเลยครับ จำง่าย ๆ เลยคือ “เมื่อมองไปที่ตารางข้อมูล มันต้องเป็นตารางที่ 1 ช่อง ไม่ไปทับช่องข้อมูลอื่น” อย่างนี้ครับ
เห็นมั้ยครับว่ารูปแรกมันไม่เป็นรูปแบบตาราง เพราะใน 1 ช่อง(Cell)ของ Attribute "หอพัก" กับ Attribute "เลขที่ห้อง" เหมือนไปทับข้อมูลอืน ดูแล้วมันขัด ๆ ตา แล้วทีนี้ถาม Sense ของคุณดูสิครับว่าตารางมันต้องเป็นอย่างไร ก็ง่าย ๆ เลยครับ กระจายไอ้ช่องใหญ่ ๆ (“หอชายตัวันรอน”) ให้เป็นตารางซะก็จบ อย่างนี้นะครับ
ก็ง่ายมากเลย ทำให้เป็นตารางซะ อย่าให้มันเกิดข้อมูลแบบกลุ่ม ๆ ครับ อธิบายแล้วยิ่งยาก เอาเป็นว่าแค่จำ 2 ภาพไว้ให้ดีก็พอครับ รูปบนคือก่อนเป็น 1NF รูปล่างคือเป็น 1NF แล้ว โดยส่วนมากจะเป็นข้อมูลลักษณะ Header กับ Detail เช่น หัวบิล กับรายการในบิล ถ้ามาทำ Table มันจะมีลักษณะคล้ายรูปบนก่อน เราก็เอามาทุบให้ข้อมูลกระจายไปเหมือนรูปด้านร่าง (แต่ถ้าเป็นผมซึ่งชำนาญแล้วผมจะหยิบออกไปเลย คือข้าม 1NF ไปทำ 2NF, 3NF เลย) จบมั้ยครับ เดี๋ยวผมจะต่อ 1NF แบบพิสดาลต่อพรุ่งนี้พร้อมกับขึ้น 2NF ถ้าใครงงวันนี้ผมขอแนนำว่าอย่าอ่าน 1NF แบบพิสดาลนะครับไว้เข้าใจแบบ Sense ก่อนค่อยกลับมาดูก็ได้ผมไม่รีบ
ไม่มีความเห็น