ตั้งชื่อ Table และ Field ใน Access ยังไงไม่ให้ปวดหัวทีหลัง

แนวทางตั้งชื่อ Table และ Field ใน Access

การตั้งชื่อ Table และ Field ใน Access ดูเหมือนเรื่องเล็ก แต่ถ้าตั้งชื่อไม่ดีตั้งแต่แรก เวลาทำ Query, Form, Report หรือ VBA จะเริ่มเจอปัญหาจุกจิกเต็มไปหมดครับ

บทความนี้ไม่ได้บังคับว่าทุกคนต้องใช้รูปแบบเดียวกันเป๊ะ ๆ แต่จะให้หลักคิดที่ช่วยให้ชื่อในฐานข้อมูลอ่านง่าย แก้ง่าย และไม่สร้างปัญหาทีหลัง

ชื่อที่ดีควรอ่านแล้วรู้หน้าที่

ชื่อ Table หรือ Field ที่ดีควรตอบได้ทันทีว่ามันเก็บอะไร

ตัวอย่างชื่อที่ชัด

  • Customer
  • Product
  • Order
  • OrderDetail
  • CustomerID
  • OrderDate
  • UnitPrice

ตัวอย่างชื่อที่ชวนงง

  • Data
  • Table1
  • Name
  • Date
  • Amount1

ชื่ออย่าง Name หรือ Date ดูเหมือนเข้าใจง่าย แต่พอมีหลาย Table จะเริ่มงงว่าเป็นชื่อของอะไร วันที่อะไร

ถ้าเป็นชื่อลูกค้า ใช้ CustomerName จะชัดกว่า ถ้าเป็นวันที่ขาย ใช้ OrderDate จะชัดกว่า

ตัวอย่างชื่อ Field ใน Access แบบชวนงงกับแบบอ่านง่าย

ไม่แนะนำให้เว้นวรรค

Access อนุญาตให้ตั้งชื่อ field แบบมีเว้นวรรค เช่น Customer Name

แต่เวลาใช้งานต่อใน Query หรือ VBA เราต้องเขียนเป็น [Customer Name] เสมอ ถ้าลืมวงเล็บเหลี่ยมก็ error ได้ง่าย

ผมจึงแนะนำให้ใช้แบบไม่เว้นวรรค เช่น

  • CustomerName
  • OrderDate
  • UnitPrice
  • IsActive

หรือถ้าชอบ underscore ก็ใช้แบบนี้ได้

  • customer_name
  • order_date
  • unit_price

เลือกแบบใดแบบหนึ่งแล้วใช้ให้สม่ำเสมอครับ อย่าใช้ปนกันทั้งระบบ

ไม่แนะนำให้ตั้งชื่อ Table หรือ Field เป็นภาษาไทย

Access อนุญาตให้ตั้งชื่อ Table หรือ Field เป็นภาษาไทยได้ครับ เช่น ลูกค้า, วันที่ขาย, ยอดเงิน และตอนเริ่มทำใหม่ ๆ มันดูอ่านง่ายดี

แต่ถ้าระบบเริ่มโตขึ้น หรือวันหนึ่งต้องเขียน VBA ปัญหาจะเริ่มมาเรื่อย ๆ ซึ่งผมเจอกับตัวเองบ่อยมากครับ

ตัวอย่างปัญหาที่มักเจอ

  • เวลาเขียน VBA ต้องอ้างชื่อภาษาไทยให้ตรงทุกตัวอักษร
  • ถ้ามีเว้นวรรคหรืออักขระพิเศษ ต้องใส่วงเล็บเหลี่ยม เช่น [วันที่ขาย]
  • เวลา debug โค้ด อ่านยากกว่า field อังกฤษสั้น ๆ
  • ถ้าคัดลอกชื่อจากหน้าจอมาแล้วมีช่องว่างแปลก ๆ หรือสะกดไม่ตรง โค้ดพังได้ง่าย
  • ถ้าต้องทำงานร่วมกับ Query, Export, ODBC หรือระบบอื่น ชื่ออังกฤษจะปลอดภัยกว่า

แนวทางที่ผมแนะนำคือ ใช้ชื่อโครงสร้างเป็นภาษาอังกฤษ เช่น Customer, OrderDate, TotalAmount แล้วค่อยใช้ Caption แสดงภาษาไทยให้ผู้ใช้เห็นใน Form หรือ Datasheet แทน

พูดง่าย ๆ คือ ชื่อในระบบให้เป็นอังกฤษ ส่วนชื่อที่ผู้ใช้เห็นค่อยเป็นภาษาไทย แบบนี้ระยะยาวดูแลง่ายกว่ามากครับ

ชื่อ Table ใช้เอกพจน์หรือพหูพจน์ดี

เรื่องนี้ไม่มีกฎตายตัวครับ บางคนใช้ Customer บางคนใช้ Customers

สำหรับมือใหม่ ผมแนะนำให้เลือกแบบเดียวแล้วใช้ให้ตลอด ถ้าจะใช้เอกพจน์ก็เอกพจน์ทั้งหมด เช่น

  • Customer
  • Product
  • Order
  • OrderDetail

เหตุผลคือ Table หนึ่งแถวแทนข้อมูล 1 รายการ เช่น Customer 1 แถวคือลูกค้า 1 คน Product 1 แถวคือสินค้า 1 ตัว

แต่ถ้าคุณถนัดพหูพจน์ เช่น Customers, Products ก็ใช้ได้ครับ ขอแค่ไม่ปนกันไปมา

อย่าตั้งชื่อชนกับคำที่ Access ใช้บ่อย

ชื่อบางคำควรเลี่ยง เพราะเป็นคำทั่วไปหรือมีโอกาสชนกับ function/property ใน Access เช่น

  • Date
  • Name
  • Value
  • Type
  • Number
  • Group

ไม่ได้แปลว่าใช้ไม่ได้เลย แต่จะทำให้โค้ดและ Query อ่านยากขึ้น

ให้เติมความหมายเข้าไป เช่น

  • OrderDate แทน Date
  • CustomerName แทน Name
  • ProductType แทน Type
  • InvoiceNumber แทน Number

Primary Key ตั้งชื่อให้เดาง่าย

สำหรับ Primary Key ผมชอบใช้ชื่อตาม Table แล้วลงท้ายด้วย ID

ตัวอย่าง

  • CustomerID
  • ProductID
  • OrderID
  • OrderDetailID

ส่วน Foreign Key ก็ใช้ชื่อเดียวกับ Primary Key ที่อ้างอิง เช่น Order.CustomerID อ้างถึง Customer.CustomerID

ข้อดีคือเวลาเห็น CustomerID ใน Table ไหน เราจะเดาได้ทันทีว่ามันเกี่ยวกับลูกค้า

ใช้ Caption แสดงภาษาไทยให้ผู้ใช้เห็น

ถ้าอยากให้ผู้ใช้เห็นชื่อภาษาไทยใน Form หรือ Datasheet ไม่จำเป็นต้องตั้งชื่อ field เป็นภาษาไทยเสมอไปครับ

เราสามารถตั้ง field เป็นอังกฤษ เช่น CustomerName แล้วใส่ Caption เป็น "ชื่อลูกค้า" ได้ โดยตั้งที่ช่อง Caption ในส่วน Field Properties ด้านล่างของมุมมอง Design View

วิธีนี้ช่วยให้ฝั่งคนใช้งานเห็นภาษาไทย ส่วนฝั่งคนดูแลระบบยังได้ชื่อ field ที่เอาไปใช้ใน Query และ VBA ง่าย

สรุป

การตั้งชื่อที่ดีช่วยลดงานแก้ภายหลังได้เยอะมาก โดยเฉพาะเมื่อระบบเริ่มมีหลาย Table หลาย Query และเริ่มเขียน VBA

หลักง่าย ๆ คือ ชื่อควรสื่อความหมาย ไม่เว้นวรรค ไม่กำกวม ไม่ชนคำทั่วไป และใช้รูปแบบเดียวกันทั้งระบบ

ถ้าเริ่มต้นดี ต่อให้ระบบโตขึ้น เราก็ยังไล่โครงสร้างได้ง่าย ไม่ต้องเดาว่า field นี้หมายถึงอะไรครับ

บทความที่เกี่ยวข้อง

คำถามที่พบบ่อย

ชื่อ Table หรือ Field ใน Access ใช้ภาษาไทยได้ไหม

Access ยอมให้ใช้ภาษาไทยได้ แต่ไม่แนะนำครับ โดยเฉพาะระบบที่อนาคตต้องเขียน VBA เพราะจะเจอปัญหาอ้างชื่อยาก ต้องใส่วงเล็บเหลี่ยมบ่อย อ่านโค้ดยาก และเสี่ยง error จากการพิมพ์ชื่อผิด ใช้ชื่ออังกฤษในโครงสร้าง แล้วใช้ Caption แสดงภาษาไทยให้ผู้ใช้เห็นแทนจะดูแลง่ายกว่า

ควรใช้เว้นวรรคในชื่อ Field ไหม

ไม่แนะนำ เพราะเวลาเขียน Query หรือ VBA ต้องใส่วงเล็บเหลี่ยมบ่อย เช่น [Customer Name] ใช้ CustomerName หรือ customer_name จะดูแลง่ายกว่า

ต้องใส่คำนำหน้า tbl หรือ qry ไหม

ทำได้ถ้าทีมใช้ convention นี้สม่ำเสมอ แต่สำหรับมือใหม่ให้สำคัญกว่าคือชื่อสื่อความหมาย ไม่เว้นวรรค และไม่ตั้งชื่อกำกวม

บทความที่เกี่ยวข้องกัน: