ความสัมพันธ์ระหว่าง Table กับ Code

ผมรู้สึกมาแต่ไหนแต่ไรแล้วว่า ข้อมูลรวมทั้งค่าคงที่ไม่ควรจะเก็บไว้ใน code เพราะมันไม่ยืดหยุ่น แล้วก็ไม่คิดว่าการแยกเก็บไว้ในไฟล์อื่นต่างหาก มันจะดีอะไรขึ้นมา อือม ผมคิดว่าเก็บไว้ใน table ในฐานข้อมูลจะดีกว่า มันดูเป็นระเบียบดี สืบค้นได้ด้วย ง่ายต่อการเชื่อมโยงอีกต่างหาก

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

ผมมีสถิติอะไรที่น่าสนใจมาให้ดู สถิตินี้ได้จากการที่ผมมักจะเอา open source ดัง ๆ มาติดตั้งที่เครื่องเพื่อทดสอบเล่นอะไรโน่นนี่อยู่บ่อย ๆ

Open Source Package พร้อมจำนวน Table

เราจะมองว่าการที่ open source ตัวใดต้องใช้ table เยอะแล้วมันคือ open source ที่ซับซ้อนได้ป่ะ? อือม จะบอกงั้นก็ไม่ได้ ถ้าบอกแบบนั้นงั้นก็แสดงว่า CakePHP กับ WordPress ไม่ซับซ้อนอ่ะดิ!!!

ไม่หรอก!! จะบอกแบบนั้นไม่ได้หรอก จริง ๆ แล้วความซับซ้อนต้องจำกัดความให้มันกระชับกว่านั้น นั่นก็คือผมคิดว่าการที่ open source ตัวใดต้องใช้ table เยอะ นั่นก็น่าจะหมายความว่า open source ตัวดังกล่าว จำเป็นที่จะต้องเก็บสารสนเทศอันซับซ้อนซะมากกว่า

ป.ล. 1 – ผมขี้เกียจจับภาพใหม่ ผมเพิ่งเห็นว่า WordPress ที่ผมลงไว้ มันมี Table เกินมา 6 Table อันเกิดจาก Plugins จริง ๆ ต้องมีแค่ 10 Table เท่านั้น
ป.ล. 2 – Drupal มันแน่จริง ๆ เลยครับ มี Table มากกว่า Joomla ซะอีก!!!

[tags]CakePHP, Druppal, Joomla, MediaWiki, MySQL, phpBB, PhpMyAdmin, WordPress, คอมพิวเตอร์,ซอฟต์แวร์,open source, table, code[/tags]

Related Posts

6 thoughts on “ความสัมพันธ์ระหว่าง Table กับ Code

  1. ส่วนตัวผมคิดว่าจำนวนตารางไม่มีความสัมพันธ์อะไรกับความซับซ้อนของโปรแกรมนะ ตารางอาจมีความสัมพันธ์กับโดเมน แต่จำนวนตารางขึ้นอยู่กับว่าเราทำ normalization/denormalization ในระดับไหน ไม่อย่างนั้นระบบอาจอ้างว่าตัวเองมีความซับซ้อนน้อยกว่า โดยการทำ denormalization รวบตารางให้น้อยลง แต่มีความซ้ำซ้อนของขอมูลมากขึ้น

    คราวนี้ถ้าจะนับจำนวนคอลัมน์ของทุกตารางรวมกัน ก็ยังไม่สามารถวัดความซับซ้อนของโปรแกรมอยู่ดี ตารางหนึ่งอาจมีร้อยคอลัมน์แต่ไม่ได้หมายความว่าข้อมูลที่เก็บมีความซับซ้อนกว่าตารางที่มีคอลัมน์น้อยกว่า

    ส่วนเรื่องการเก็บค่าคงที่ไว้ที่ไหนดี ผมยังคิดว่าเก็บไว้ใกล้โค้ดมากที่สุดดีกว่า เพราะเวลาไล่ แทนที่จะต้องไปเปิดข้อมูลในตาราง หรือไปเปิดไฟล์ภายนอกมาดู (ซึ่งบางครั้งอาจทำไม่ได้ง่ายนัก ถ้าเราไม่ได้ check out ไฟล์เหล่านั้นจาก version control system ด้วย) ทำให้โปรแกรมบำรุงรักษายากขึ้น ที่สำคัญ คำว่าค่าคงที่ น่าจะเป็นค่าที่ไม่เปลี่ยนแปลง การแยกไปเก็บภายนอก อาจทำให้เกิดโอกาสผิดพลาดถ้ามีใครไปแก้ข้อมูลภายนอกเหล่านั้น

    ทั้งนี้ทั้งนั้น นี่เป็นความเห็นส่วนตัว อาจผิดก็ได้ครับ

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

    แต่ถ้ากังวลว่าไฟล์ที่เก็บค่าคงที่ต่างๆ ไว้ จะถูกเข้าถึงโดยไม่ได้รับอนุญาต พอจะเป็นไปได้ไหม ถ้าแยกเก็บไว้อีก directory หนึ่ง แล้วกำหนดการเข้าถึง directory นั้นๆ แทน อาจด้วย .htaccess ก็ได้

  3. ไม่ชอบดึงค่า config จาก db แฮะ ผมว่าช้ากว่าดึงจาก txt นะ
    แล้วก็เวลาดู code เปิดค่า config มาดูข้างๆได้ สะดวกกว่าอ่ะ

    ยกเว้นบางกรณี ที่ใช้ db แล้วสะดวกกว่า ก็จะใช้ db

  4. ผมว่าถ้าเป็นค่าพวกคอนฟิคต่างๆ
    ถ้าไม่ได้แก้ไขอะไรมาก เก็บเป็นไฟล์แยกน่าจะดีกว่าอ่ะครับ
    แล้วใช้สคริปเจนไฟล์นี้ให้ จะได้ไม่ต้องแก้เอง

    ออกแนวๆ พวกสคริปสำหรับ install CMS อ่ะครับ
    ่งั้นมัวมา query db ก็จะช้ามาก

  5. ทุกท่าน – พอข้อมูลเยอะแล้วก็ซับซ้อน ก็รู้สึกอยากจะยัดใส่ DB ครับ แต่ถ้ามันไม่มากก็รู้สึกอยากจะใส่ในไฟล์ แต่พอเพิ่มใส่ในไฟล์ไปซักพัก มันก็รู้สึกเยอะขึ้นมาอีกล่ะ ก็อยากจะยัดใส่ DB อีก เป็นแบบนี้วนเวียนไปเรื่อย ๆ เหมือนวงจรอุบาทว์ครับ 😛

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *