หลายครั้งที่เราต้องเริ่ม Project ด้วยการวาด Database diagrams ออกแบบฐานข้อมูล เพื่อให้เห็นภาพรวมทั้งระบบรวมถึงนำไปประกอบในเอกสารของ Project ซึ่งถือเป็นสิ่งสำคัญอันดับแรกๆเลยในการออกแบบ เพราะส่วนใหญ่แล้วเท่าที่ผมเคยเจอมาจะมาตกม้าตายเรื่องการเก็บข้อมูล เพราะมันไม่เข้ากับ Design ของ Front-end ทางที่ดีออกแบบก่อนเริ่มโปรเจคจะทำให้ Developer เจ็บตัวน้อยที่สุดครับ
ขอเสนอ QuickDBD หรือ Quick Database Diagrams เป็นเครื่องมือออกแบบ Database ด้วยการเขียน code แบบ simple มากๆแถมหน้าตาสวยงามตามเทรน โดยการใช้งานแบบ Free นั้นจะจำกัดที่ 1 diagrams และไม่เกิน 10 Tables ซึ่งเพียงพอแล้วสำหรับโปรเจคเล็กๆถึงปานกลางเอาละมาเริ่มกันเลย
ให้เข้าไปที่เว็บไซต์นี้ Quick Database Diagrams
ถ้าใครที่ต้องการ Load simple data ให้เลือกเมนู File > Load Simple Diagrams จากนั้นให้เราดู code ด้านซ้ายขออธิบายง่ายๆแบบนี้
Product as p
--
ProductID PK int
Name varchar(200) UNIQUE
Price int
บรรทัดที่ 1 คือ ชื่อ Table = product และตั้ง Alise(ชื่อย่อ) ให้เป็น p
บรรทัดที่ 2 คือ การบอกว่าข้างล่างจะเป็น column ใน Table
บรรทัดที่ 3, 4, 5 คือ ชื่อ Column หรือ Field มีดังนี้
- ProductID เป็น Primary มี Type เป็น integer
- Name มี Type เป็น varchar ขนาด 200 และ UNIQUE(ห้ามซ้ำกัน)
- Price มี Type เป็น Int
เราสามารถทำ Foreign Key ได้โดยการใช้คำสั่งนี้ ต่อหลังชื่อ Column
FK >- {table_name}.{table_column}
พอรวมร่างกันก็จะได้หน้าตาแบบนี้
ProductID int FK >- product.ProductID
ถ้าเราตั้ง Alise ชื่อ Table ไว้ก็จะสามารถย่อได้แบบนี้
ProductID int FK >- p.ProductID
ลองเขียนเต็มๆก็จะได้ Code หน้าตาประมานนี้
Users as u
--
ID int PK AUTOINCREMENT
Name varchar(100)
Address varchar(200)
Phone varchar(10)
Products as p
--
ID PK int
Name varchar(200) UNIQUE
Price int
Orders as o
--
ID PK int
UserID int FK >- u.ID
CreatedAt timestamp
UpdatedAt timestamp
OrderDetails as od
--
ID PK int AUTOINCREMENT
OrderID int FK >- o.ID
ProductID int FK >- p.ID
Amount int
Price int
เราสามารถดู Column type ได้จากเมนู Doc ด้านบนของเว็บเลย
การ Exports
- ANSI SQL
- MySQL/MariaDB
- Oracle
- PostgreSQL
- SQL Server
- RTF
- PNG Image/SVG File
การ Imports
เราสามารถนำไฟล์ SQL ที่เรามีอยู่มา import เพื่อสร้าง diagrams ได้เช่นกัน