WordPress ตอนที่ 5 โครงสร้างดาต้าเบส(อ่าน6626ครั้ง)
เืมื่อเราติดตั้งเสร็จสรรพ์เรียบร้อยแล้ว สำหรับผู้ใช้งานทั่วไป ก็คงต้องไปลุยกันต่อเรื่องการใช้งานกันเลย แต่ผมขอเสริมสำหรับผู้ที่สนใจที่จะดัดแปลง ปรับแต่ง หรือเล่นกับ wordpress ชนิดที่ว่า ถึงลูกถึงคนกันเลยก็ว่าได้ จำเป็นอย่างยิ่งที่จะต้องรู้สิ่ง ๆ นี้ครับ นั่นก็คือ โครงสร้างดาต้าเบสที่เขาได้ผ่านการ NF1 ….. NF3 ถ้าได้ข้อมูลตรงนี้จะช่วยในการพัฒนาได้เยอะทีเดียว เพราะฉนั้นโปรดติดตาม
ก่อนอื่นให้เข้าสู่ phpmyadmin เราแล้วเลือกไปที่ชื่อฐานข้อมูลที่เราใช้เป็นของ wordpress ครับ สิ่งแรกที่เราจะเห็นคือ จำนวนดาต้าเบสที่ใช้ ว่ามีด้วยกันทั้งหมด 11 ตาราง จากการไล่เช็คมา 2 เวอร์ชั่นล่าสุด เหมือนกันทุกประการครับ ดังภาพ
พอมองด้านขวามือ จะเห็นรายละเอียดของแต่ละตาราง ว่าใช้งานไปเท่าไหร่แล้ว แต่สิ่งที่ผมอยากให้สังเกต และควรจะพึ่งตรวจสอบคือ รูปแบบ Encoding ของข้อมูล เราอาจจะใช้เป็น TIS-620 หรือ Window874 ก็ไม่ว่ากัน แต่สำหรับข้อมูลหรือมาตรฐานทุกวันนี้ อยากให้ใช้ UTF-8 มากกว่าครับ (ถึงแม้จะมีปัญหาการ sort ภาษาไทย ก็ตาม) เพราะมีข้อดีหลายประการด้วยกัน ลองค้นหาจากกูเกิลก็ได้ มีผู้กล่าวไว้ค่อนข้างเยอะแล้ว (ฝึกทักษะการค้นหาไปด้วยครับ)
เริ่มจาก wp_commentmeta ซึ่งก็คือ พวก key และ value ที่เราสามารถเสริมให้กับ comment นั่นแหละครับ จะใช่กี่อัน กี่ชื่อ กี่ตัวแปร ก็ย่อมทำได้ เพราะมันได้แยกออกมาจาก comment โดยอิสระเลย สังเกตจาก FK -> comment_id เป็นหลัก (คนที่งง ผมต้องขออภัย พยายามเลี่ยงศัพท์เทคนิคแ้ล้ว)
นี่คือตาราง wp_comments ครับ ซึ่งก็จะเก็บว่า
- เป็นคอมเม็นต์ของของบทความไหน comment_post_ID
- และเขียนโดยใคร comment_author
- อีเมล์คนเขียนว่ายังไง comment_author_email
- คนเขียนมีเว็บไซต์ไหม ถ้ามีก็ใส่ comment_author_url
- คนเขียนมาจากแห่งหนใหนในโลกไซเบอร์ (IP_Address) comment_IP (ทำอะไรโปรดระวัง มันสามารถเก็บได้มากกว่านี้)
- วันที่คอมเม็นต์ comment_date
- วันที่คอมเม็นต์เหมือนกัน แต่อันนี้ผมไม่ค่อยได้ใช้ และก็งงอยู่ 555 comment_date_gmt (แต่เห็นมันใส่ตรงกับอันก่อนประจำ)
- เนื้อหาคอมเม็นต์ที่จะให้คนอื่นอ่าน เขียนไป comment_content
- อันนี้ก็ยังไ่ม่ค่อยได้ใช้ ถ้ามีคนรู้วานบอกผมที comment_karma
- อนุญาตให้เอาขึ้นไหม ให้ก็กำหนด 1 ไม่ให้ก็ใส่ 0 comment_approved
- อันนี้เข้าใจว่าใช้ร่วมกับพวกเครื่องมือสื่อสารประเภท มือถือ (เดานะ) comment_agent
- ประเภทของคอมเม็นต์ comment_type
- อืมมม อันนี้กรณีที่เราเปิดให้คอมเม็นต์ แบบว่า ๆ เคยเห็นใน SMF หรือไม่ก็ drupal เปล่า ตอบคนก่อนอ่ะครับ ฮิ ๆ มันจะไม่ต่อท้ายเสมอ จะไปต่อที่เราอยากตอบเลย comment_parent
- ใครใช้ดีละ user_id
เมื่อกี้เริ่มเครียด เพราะดันไปเจอ ตารางที่มีความใกล้ชิด สนิทสนมกันพอสมควร ไปมาหาสู่กันได้ เลยหนีมาอันนี้ดีกว่า สลับกันและกัน อันนี้โดดเดี่ยวไม่ยุ่งกับใคร ฉันทำงานเสร็จสรรพ์ภายในตัว ไม่ขอพึ่งใคร อ้าว ยาววววว wp_links คือ ตารางที่ว่าด้วยการสร้างลิงค์ต่าง ๆ ในเว็บครับ
- link_id แม่มัน ไม่เคยซ้ำใครหรอก ขึ้นเอ๊า ขึ้นเอา ไม่รู้จะรีบไม่ไหน ไม่ยอมให้ reused ด้วย (เริ่มเคือง)
- จะลิงค์ไปไหนล่ะ konkeanweb.com ไหมล่ะ จัดไป ใส่ http://www ให้ด้วยก็ดี link_url
- จะไปไหนยาวไปก็เกิ๊นพอดี เอาสั้นๆ ให้คนเห็นแค่นี้พอ เข้าใจง่าย ใส่ไป(ไม่ใส่ไข่นะตัว) link_name
- บางทีข้อความก้ไม่เคยพอ ก็ต้องมีภาพให้เห็นถึงจะเทห์ และมีสีสรร (เขาว่างั้น ) ก็ใส่ให้เขาหน่อย link_image
- จะให้ขึ้นมาแบบหน้าต่าง หรือย้ายหน้าจอไปเลย อย่าลืม link_target
- ข้อความ+ภาพ ยังมืน อยากให้กระจ่างอีกหน่อย อธิบายเป็นข้อความเลย link_description
- จะให้คนอื่นเห็นไหมมมม link_visible YES/NO (ปกติทำเองใช้แต่ status )
- เจ้าของคือใคร link_owner
- ให้คะแนนบ้างก็ได้ link_rating
- มีวันที่อัพเดตด้วย 0.0 link_updated
- link_rel เอาสิ อยากยืมก็ทำได้
- ขี้หลงขี้ลืม ก็ใส่ไว้ก็ดีเหมือนกัน link_notes
- แจกชาวบ้าน อ่านกันฟรี ๆ อ่านรูปแบบอื่น ก็ทำได้ (ไฮโซ) link_rss
อันนี้พระเอกของงานเลยครับพี่น้อง wp_options เพราะรวมสรรพสิ่ง ทุกสิ่งอย่าง บทความการใช้งานจะได้เห็นว่า ตารางนี้มีบทบาทเยอะแค่ไหน ทำอะไรได้บ้าง มากกว่าที่เห็น ๆ กันอยู่ แต่ตอนนี้เอาตัวพระเอกไปเก็บไว้ก่อน ใบ้ให้ว่าข้อมูลหลัก ๆ มันอยู่ในนี้แหละ
อันนี้เป็นคู่หู เสริมความสามารถให้กับ บทความ หรือเรื่องที่เรา ๆ จะบ่นกันในบล๊อคแหละ wp_postmeta เหมือนกับ wp_commentmeta เพราะงั้นไม่ฉายซ้ำ เค๊ >,<
อ่ะ อันนี้พระเอกยิ่งกว่าพระเอกอีก เพราะมันคือสิ่งที่เราจะได้เห็น ๆ กัน wp_post ที่เราได้อ่านกันนี่ ก็ต้องยกความดีให้ตารางนี้เลยนะ (ไม่น่าทำละเอียดเลย เริ่มเหนื่อย แฮ๊ก ๆ แก่แล้วเหนื่อยง่ายจัง T__T )
- จะว่าไปทุก ๆ ตารางมีแม่หมดเลยนะ ID
- ใครเขียน post_author
- วันที่เขียน post_date
- อยากได้มากก็ใส่ให้อีก วันเขียนเนี่ยย post_date_gmt (ไว้หาประโยชน์ัมันชัด ๆ จะมาบอก ตอนนี้เข้าใจว่า เกี่ยวกับโซน)
- เนื้อหา post_content (แรก ๆ ไฟแรงครับ ตอนนี้ดึก เริ่มง่วง บ่นไม่ไหววว 555 )
- เออ มีหัวข้อด้วย post_title
- ที่เห็นใน คนเขียนเว็บอ่ะ หน้าแรก แบบย่ออ่ะ อันนี้แหละ post_excerpt
- มาแหละคุ้น ๆ หน่อย จะแช่แข็ง หรือให้แสดงก็อันนี้แหละ post_status
- จะให้ชาวบ้านเขาส่งเสียงแซวเล่น หรือให้กำลังใจเปล่าาา (ให้คอมเม็นต์แหละ) comment_status
- ping_status (แฮะ ๆ )
- บางทีมันก็ต้องสงวนไว้ให้เฉพาะกลุ่มบ้าง อ่ะไรบ้าง post_password
- มันก็คือ ๆ post_title แหละ เจ้าตัว post_name เนี่ยยย แต่หลัก ๆ ใช้กับการทำ page มากกว่าอ่ะนะ
- to_ping (แฮ่ะ ๆ ไม่บอก)
- pinged ( >,< ) ปล่อยให้พวกจอดำเล่นกัน
- post_modified แก้ไขวันไหน
- post_modified_gmt คือกันกับอันบน
- post_cotent_filltered อยากจะกรองไ้อ้คำไม่พึงประสงค์ก็จัดการได้
- post_parent (ติดไว้ก่อน ไม่แน่ใจ ยังไม่เคยเล่น)
- guid กูเกิลชอบมาก เขียนได้ดี กูเกิลมีรางวัล (ปล. ปรับแต่งกันให้ดี)
- menu_order เีรียงลำดับเมนู ใช้ในกรณีที่สร้างเป็นเมนู
- อันนี้บ่งบอกว่า เป็น บทความ หรือ page กันแน่ post_type
- อันนี้กรณีพวกไฟล์ อัพโหลดเสร็จ จะมีข้อมูลพวกนี้เป็นตัวบ่งชี้ post_mime_type (ไว้เล่น ๆ ไป จะเข้าใจ จะแทรกให้)
- จะไปนับจำนวนคนออกความเห็น จากตารางโน้น(wp_comment) ก็กะไรอยู่ คงจะอืดเป็นบ้าเลย ก็เลยจัดการด้วยการเม็นต์ที บวกค่านี้ที จะได้เอาไปใช้ได้เลย หุหุ ฉลาดดด comment_count
มาถึงส่วนที่ถือว่าเป็นทางลัดกันหน่อย พวก keyword tag ต่าง ๆ ที่เรามักจะเห็นกันบ่อย ๆ ส่วนนี้แหละ มีอยู่ด้วยกัน 3 ตาราง ที่สร้าง category สร้าง keyword ให้ เริ่มจาก wp_terms คือชื่อที่เราจะตั้งขึ้นมา
- ชื่อที่เห็น ๆ กัน name
- อันนี้ใช้ในการทำลิงค์ slug
- จัดเป็นกลุ่ม term_group
wp_term_taxonomy ตารางนี้ก็เอา wp_terms มาจัดการต่อด้วยการ
- taxonomy แยกหรือจัดประเภทด้วยชื่อให้ เช่น เป็นลิงค์หรือประเภท
- สร้างคำอธิบายของของกลุ่มเหล่านั้น ๆ เพื่อจะได้ทำความเข้าใจภายหลัง description
- เป็นสมุนของใครหรือเปล่า parent
- นับจำนวนการคลิกดูหน่อย count
หลังจากสร้างคำ พร้อมจัดกลุ่มเรียบร้อย ที่นี้ก็จูนกันหน่อยว่า ใครจะใช้บ้าง
- object_id คือไอดีที่จะมาใช้งานคำแต่ละคำ ที่สร้าง ตัวเลขส่วนนี้อาจจะมีหลายตัว เช่น 1 อาจจะมีหลายครั้ง แต่จะแยกกันด้วย ตัวถัดไป
- term_taxonomy_id อันนี้แหละจะเป็นตัวแยก เช่น object_id สมมุติมี 1 อยู่สองแถว(ตัวเลขซ้ำได้) ก็ต้องมานั่งเช็คอันนี้ว่า obejct_id=1 ตัวแรก เป็นลิงค์ หรือ category ของบทความ หรืออาจจะกลุ่มอื่น ๆ และ object_id=1 ตัวที่สองเป็นแบบไหน (แต่ไม่ซ้ำกันกับอันแรกแน่) อันนี้ขึ้นอยู่กับว่า wp_terms ได้สร้างไว้จำนวนเท่าใด (ถ้าเริ่มงง จะไม่แปลก 555 )
- term_order ไ้ว้จัดการเรียงลำดับความสำัคัญ
ที่นี้ก็หนีมาส่วนของผู้ใช้งานบ้าง ก็มีอยู่สองตาราง เหมือน ๆกับ post และ comment เลย คือจะมีพวก option meta เสริมมา
เริ่มจาก wp_users กันเลย
- ID อันนี้พบเจอได้ทั่ว ๆ ไป
- ชื่อในการใช้ login เข้าสู่ระบบ user_login
- รหัสผ่าน ที่พอจะปลอดภัยได้ user_pass
- ชื่อเล่นนิด ๆ user_nicename
- เผื่อคุยหรือส่งข้อมูลถึงกัน ไม่ว่าจะเป็นการยืนยันตัวตน หรือในกรณีอื่น ๆ (ไม่ใช่พวก spam หรอกน๊า) user_email
- มีเว็บไซต์หรือบล๊อคของตัวเองหรือไ่ม่ user_url
- ลงทะเบียนหรือสมัครไว้วันไหน user_registered
- สร้างตัวอักษรพิเศษ ๆ หน้าตาแปลก ๆ ยาว ๆ เพื่อยืนยันผ่านเมล์ ว่าถูกต้องหรือไม่ user_activation_key
- ตอนนี้ประทับตราว่าอนุญาตวิ่งเข้าออกในเว็บนี้ได้หรือไม่ได้ user_status
- ใส่ชื่อเทห์ ๆ ได้กรณีที่ใส่ชื่อ login แบบทางการแล้ว ฮา คนอื่นจะเห็นชื่อนี้แหละ
wp_usermeta อันนี้ก็จะเพิ่ม field เสริมให้กับข้อมูลผู้ใช้ที่เราอยากจะเสริมไป เช่น อยากจะได้ เบอร์โทรเพิ่มหน่อย แต่ตารางอันบนมันไม่มีครับ เลยต้องเสริมเอา ก็คือมาเพิ่มในนี้แหละ เคป่ะ เพราะงั้น พวก meta ทั้งหลายแหล่ ก็จะีมีลักษณะการใช้งาน เช่นนี้แหละ อยากได้อะไรที่มากกว่าที่เห็นก็มาใส่เอา
ทั้งหมดทั้งมวลนี้ เมื่อแปลงให้เห็นเป็นภาพฉบับ powerdesigner แ้ล้วก็จะได้แบบนี้
บางทีอาจจะงง ว่า ไม่เห็นมันเกี่ยวกับตรงไหนเลย ไอ้ที่โม้ ๆ มาอ่ะ ลองดูภาพนี้ครับ (คลิกที่ภาพเพื่อดูแบบเต็ม ๆ ใหญ่ ๆ ได้นะครับ)
ก็จะเห็นภาพชัดชึ้น ข้อมูลเชื่อมโยงกันมากขึ้น เพียงแต่เขาไมไ่ด้ตั้งชื่อตัวแปรให้มันตรงกันแค่นั้นเอง จริง ๆ แล้ว ก็คือตัวเดียวกัน มันเชื่อมกันแบบนี้แล ก็หวังว่า จะพอมองภาพออกแบบคร่าว ๆ ได้ว่า มันมีโครงสร้างยังไง อาจจะจำไม่ได้แม่น เหมือนจับวางก็ไม่เป็นไร กลับมาอ่านดูอีกรอบก็ได้ ถ้าจำไม่ได้
ตอนนี้ก็ดึกมากแล้ว เริ่มมืน ๆ ง่วงนอนครับ เลยไม่ฮาเลย หลัง ๆ นี่ ฮา (สักหน่อย ) ก็ขอให้โชคดี ไว้เจอกันคราวหน้า หลังเข้าพรรษาเสร็จ ก็ขอให้โชคดีกันถ้วนหน้า ทำบุญทำทานกันเยอะ ๆ ครับ ไม่ได้ดีกับใครหรอก จะดีสำหรับตัวท่านเอง เฉกเช่นการกินข้าวครับ ไ่ม่มีใครกินแทนใครได้ ใครกินใครก็อิ่ม อันนี้คงเข้าใจหลักการทำบุญนะครับ เพราะฉะนั้น อย่ามัวชักช้า หรือรอให้ใครทำให้ จงเริ่มตักตวงให้กับตัวเองให้เร็วที่สุด ขอบคุณครับที่ติดตามกัน
ปล.โทษทีพึ่งมาบอก (ไม่งั้นก็ไม่อ่านกันหร๊อกกก) บทความนี้เน้นเล่าเรื่องสำหรับคนที่พอจะเรียนรู้เรื่องดาต้าเบสมาบ้างพอสมควร เพราะงั้นคนทีไม่เคยเีรียนมา อ่านแล้วงง ก็ต้องขออภัยที่พึ่งจะมาบอก (555555555555 โทษทีที่ตั้งใจ) ตีสองแล้ววว โห มาวัดทีไร เงียบสงัด ชวนให้คิดไรไปเรื่อยเสมอ เพลิน นอนดีกว่า พรุ่งนี้ตื่นเช้า งานเข้า ๆ


































