วันจันทร์ที่ 1 ธันวาคม พ.ศ. 2551

สุดท้ายก็ไม่พ้น อ่าน เพิ่ม เปลี่ยน ลบ

เดือนธันวาแล้วนะครับ

โปรเจคคืบหน้ากันไปถึงไหนแล้ว ไม่ได้ตามไปดูเท่าไหร่ช่วงนี้

มาแลกเปลี่ยนความคิดกันหน่อยดีกว่า จั่วหัวข้อว่า "สุดท้ายก็ไม่พ้น อ่าน เพิ่ม เปลี่ยน ลบ"

หมายความว่า

ไม่ว่าระบบงานที่ออกแบบไว้จะเป็นยังไง กระบวนการมันจะซับซ้อนยังไง สุดท้ายมันก็มีแค่ อ่านข้อมูล เพิ่มข้อมูล เปลี่ยนข้อมูล และก็ลบข้อมูล

ตอนนี้ถ้ามองในมุมมองของการพัฒนา คงพอแยกออกเป็นสองส่วน

1.เว็บ

2.ฐานข้อมูล

ตัวอย่าง

เว็บไปติดต่อฐานข้อมูล อ่านข้อมูลขึ้นมาแสดง ในตารางไหนบ้างก็ไม่รู้แหละ เขียน SQL เข้า บางทีตารางเดียวสบายมือมาก

SELECT * FROM products;

บางทีข้อมูลต้องป้อนผ่านหน้าเว็บเพราะไม่ใช่ว่าจะเอาข้อมูลทั้งหมดใส่ผ่าน DBMS มันต้องมีการเพิ่ม อันนี้ยุ่งขึ้นมาหน่อย ต้องเอาข้อมูลที่ได้ส่งผ่าน FORM ของเว็บในลักษณะตัวแปร มาประกอบเข้ากับ SQL สั้นบ้างยาวบ้าง ยุ่งบ้างไม่ยุ่งบ้างตามลักษณะงาน ก็ไม่พ้น

INSERT INTO products(productID,productName,price) VALUES('987','Sample Product',100);

มีข้อมูลแล้วไม่ได้ตั่งใจ ต้องแก้ไข ก็อ่านข้อมูลขึ้นมาแสดงก่อนเหมือนเดิม แล้วใส่ค่าใหม่ลงไปแก้ผ่าน FORM เหมือนเดิมอีก SQL เบสิกก็

UPDATE products SET productName = 'Very Good Product', price = 200 WHERE productID = '987';

แก้ไขแล้ว ไม่พอลบมันทั้งแถวก็

DELETE FORM products WHERE productID = '987';

...

พวกนี้เป็น SQL พื้น คนเขียนโปรแกรมที่ต้องใช้ฐานข้อมูลเป็นแน่ (ไม่น่ามาสอนจระเข้ว่ายน้ำเลย) เป็นอันว่าทบทวนไปแล้วกัน

งานมันมีแค่นี้ เว็บแอพพิเคชั่นที่ติดต่อกับฐานก็มูล เขียนยังไงมันก็มีแค่นี้ เพียงแต่งานใครจะขั้นตอนมากน้อบ ซับซ้อนมากน้อยแค่ไหนเท่านั้น

...

ความแตกต่าง

ตัวเว็บแอพพลิเคชั่น มีรูปแแบในการติดต่อฐานข้อมูลไม่เหมือนกัน ASP ก็เขียนแบบหนึ่ง PHP ก็เขียนแบบหนึ่ง...เขียนให้ติดต่อกับฐานข้อมูล MSSQLServer ก็เขียนอย่างนึง Access ก็อย่างนึง MySQL ก็ไปอีกแบบนึง

ชื่อฐานข้อมูล ตาราง คอลัมน์ ก็ต่างกันไป ไม่หลุดจาก SQL เขียนโปรแกรแล้วต้องประยุกต์ใช้เป็นก็ปรับๆ ไปให้เข้ากับงานเรา

ตัวอย่างใน Google ค้นหาทีนึง มีให้ Copy เป็นพัน ...จำไว้ว่า ไม่ใช่เราคนแรกแน่นอนที่เจอปัญหาแบบนี้ มีคนเจอมาหมดแล้ว อยากเขียน SQL ให้มันออกมาเป็นอย่างงู้นอย่างงี้ ค้นไปเหอะ มีแน่นอนสาบานได้ (เอาไปปรับนะ ไม่ใช่มีมาให้เลย ไม่งั้นคงไม่ต้องมาทำโปรเจคกันแล้ว) ...ค้นของไทยไม่เจอ ค้นภาษาอังกฤษดู เพราะโปรแกรมเป็นภาษาอังกฤษทั้งนั้น Response Dim SELECT echo print string อย่าอนุรักษ์ความเป็นไทยมาก คิดว่าเปิดหูเปิดตาลองอ่านดู ที่เค้าเขียนดีๆ อ่านง่ายๆ ต่างประเทศก็มีเยอะอยู่

ทีนี้มามองว่า ส่วนใหญ่ที่ทำให้งานมันไม่เดินคืออะไร ..

1. ยังตอบไม่ได้เลยว่า "จะทำอะไร" ...โอ...เราจะทำอะไรเนี่ยะ ยังไม่เข้าใจเลย เลือกไม่ถูก

เมื่อไม่รู้ว่าจะทำอะไรกระบวนการมันไม่มี ข้อมูลก็ไม่ต้องพูดถึง มันตามต่อมาไม่ได้ เช่น อยากไประบบรับคำสั่งซื้อ ...รับยังไง ขั้นตอนของมันคือยังไง ไล่เลียงมา 1 2 3 4 ตรงนี้จะทำให้เรารู้ว่า เราจะต้องทำอะไรกับข้อมูล อย่างที่บอก ไม่พ้น 4 วิถีทางนั้นไปได้หรอก (ไม่อ่าน เพิ่ม เปลี่ยน ก็ลบ) ใช้ข้อมูลอะไรบ้าง ฐานข้อมูล "มีข้อมูลที่เกี่ยวข้องนั้นหมด รึยัง"

แนะนำอีกว่า เอาขอบเขตให้มันชัดเจน ว่าเราจะทำอะไร ย่อยอีกได้มั๊ย ตัวอย่างนี้เช่ย รับคำสั่งซื้อเนี่ยะ ต้องแสดงสินค้าให้เห็นก่อน ...เห็นๆ เลย อ่านข้อมูลมาแสดง จากนั้นให้ลูกค้าเลือก เลือกได้หลายชิ้น เว็บต้องเก็บข้อมูลแล้วว่าเลือกอะไรไปบ้าง ...ตรงนี้ยังไม่ใช่ฐานข้อมูล เป็นการเก็บข้อมูลบนเว็บ (แยกให้ออก) ..เลือกหมดแล้ว จะเชคเอาท์ ก็ค่อยบันทึกลงฐานข้อมูล ...ตรงนี้ก็เพิ่มข้อมูล ...

2. ต่อมาจากข้อ 1 ข้อมูลที่มันมีมันโอเครึยัง มีครบตามที่ต้องใช้แล้ว สมบรูณ์แล้ว สิ่งที่จะแก้ไม่กระทบต่องานแล้ว เช่น ไม่ใช่แก้ความสัมพันธ์ แก้ชื่อฟิลด์ แก้ขนาดฟิลด์ เยอะแยะมาก ถ้า ยังเป็นแบบนี้ แนะนำว่า หยุด อย่าเพิ่งเอาไปใช้ เอาให้นิ่งก่อนแล้วค่อยทำ ไม่เสียใจแน่นอน

3. เจอปัญหา ไม่รู้จะแก้ยังไง ...รอ ...รอทำไม เพื่อนๆมี เพื่อนๆ พูกภาษาไทยเหมือนกัน ถามเลย เฮ้ย แกทำยังไง ขอเอามาดู ดูเสร็จ เอามาปรับ หรือไม่ก็บอกไปแล้ว Google โลด (ใครใช้อย่างอื่นก็ตามใจนะ ไม่ได้ตังค์หรอกแต่สนับสนุน Google อย่างไร้เหตุผล) 

...ดึกแล้ว บ่นแค่นี้ก่อนละกัน เดี๋ยวนึกอะไรออกมาโพสต่อ

...บทความนี้ไม่ออกแบววิชาการ เน้นบอกเล่าประสบการณ์ผู้เขียนแบบถึงกึ๋นเท่านั้น โปรดใช้วิจารณญาณในการอ่าน ผู้อ่านที่ทำโปรเจคไม่คืบหน้าควรได้รับคำแนะนำจากอาจารย์ที่ปรึกษา :)

2 ความคิดเห็น:

kataikub กล่าวว่า...

ขอบคุงพี่หม่อน มาก ๆ
ท้าวความนิดนึง ที่พี่หม่อนมาโพส นี่คงเนื่องจากวันพฤหัสพี่หม่อนเข้าไปห้องโปรเจคแล้วเจอต่าย-ตุ้ย-แม็ค แล้วทำงานกัน งง 555

ไว้แค่นี้ก่อน - -"

Z 'P'arëëna กล่าวว่า...

ขอบคุณสำหรับข้อความดีๆ ค่ะ

แต่อ่านอย่างเดียวก้อคงไม่กระจ่าง
ต้องพยายามเขียนกันต่อไป ^^

เอาว้า...สู้แค่ตาย Fighting \(^o^)/