0Pricing
Ruby Academy · บทเรียน

การย้ายโครงสร้างฐานข้อมูล

พัฒนาสคีมาอย่างต่อเนื่อง

การย้ายโครงสร้างฐานข้อมูล เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

ไมเกรชันคืออะไร

ไมเกรชัน คือไฟล์ภาษา Ruby ที่มีการกำหนดเวอร์ชันและอธิบายการเปลี่ยนแปลงโครงสร้างฐานข้อมูล เช่น การสร้างตารางหรือการเพิ่มคอลัมน์

  • ไมเกรชันคือโค้ด จึงอยู่ภายใต้ระบบควบคุมเวอร์ชัน
  • ทุกคนในทีมจะใช้การเปลี่ยนแปลงเดียวกันตามลำดับเดียวกัน
  • คุณไม่ควรแก้ไขฐานข้อมูลด้วยตนเอง

การสร้างไมเกรชัน

เฟรมเวิร์กจะสร้างไฟล์ไมเกรชันให้คุณ ตัวอย่างเช่น rails generate migration CreateUsers จะสร้างไฟล์ที่มีเวลาประทับไว้ใน db/migrate/ เวลาประทับจะกำหนดลำดับที่ไมเกรชันทำงาน

การสร้างตาราง

ไมเกรชันจะกำหนดคำสั่ง change create_table จะสร้างตาราง ส่วน t.timestamps จะเพิ่ม created_at และ updated_at โดยอัตโนมัติ

class CreateUsers < ActiveRecord::Migration[7.1]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps
    end
  end
end

ชนิดคอลัมน์

ชนิดคอลัมน์ทั่วไปจะสอดคล้องกับชนิดข้อมูลในฐานข้อมูล:

  • string ข้อความสั้น
  • text ข้อความยาว
  • integer, float, decimal ตัวเลข
  • boolean ค่าจริง/เท็จ
  • datetime, date ค่าเวลา
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

การเรียกใช้ไมเกรชัน

rails db:migrate จะใช้ไมเกรชันทั้งหมดที่รอดำเนินการและอัปเดต schema.rb ระบบจะบันทึกไมเกรชันที่ทำงานแล้วไว้ในตาราง schema_migrations เพื่อให้แต่ละรายการทำงานเพียงครั้งเดียว

การเพิ่มคอลัมน์

หากต้องการขยายตารางที่มีอยู่ ให้สร้างไมเกรชันแล้วใช้ add_column คุณต้องระบุตาราง ชื่อคอลัมน์ ชนิดข้อมูล และตัวเลือก

class AddAgeToUsers < ActiveRecord::Migration[7.1]
  def change
    add_column :users, :age, :integer, default: 0
  end
end

การย้อนกลับ

rails db:rollback จะยกเลิกไมเกรชันล่าสุด ระบบจะย้อนกลับคำสั่ง change โดยอัตโนมัติเมื่อการดำเนินการนั้นย้อนกลับได้ เช่น add_column หรือ create_table

การเปลี่ยนแปลงที่ย้อนกลับไม่ได้

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

class ChangeData < ActiveRecord::Migration[7.1]
  def up
    execute "UPDATE users SET active = TRUE"
  end

  def down
    execute "UPDATE users SET active = FALSE"
  end
end

ดัชนี

เพิ่มดัชนีเพื่อเร่งการค้นหาคอลัมน์ที่คุณสืบค้นบ่อย เช่น คีย์ต่างประเทศหรืออีเมลที่ใช้เข้าสู่ระบบ ใช้ unique: true เพื่อบังคับให้ข้อมูลไม่ซ้ำกันในระดับฐานข้อมูลด้วย

class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
  def change
    add_index :users, :email, unique: true
  end
end

ไมเกรชันกับ schema.rb

ไมเกรชันคือประวัติของการเปลี่ยนแปลง ส่วน schema.rb คือภาพรวมปัจจุบัน นักพัฒนาที่เพิ่งเข้าทีมสามารถเรียกใช้ rails db:schema:load เพื่อสร้างฐานข้อมูลจากภาพรวมนี้ได้ทันที แทนการเรียกใช้ไมเกรชันทั้งหมดทีละรายการ

แนวทางปฏิบัติที่ดี

ทำให้ไมเกรชันปลอดภัย:

  • อย่าแก้ไขไมเกรชันที่เคยทำงานในสภาพแวดล้อมที่ใช้ร่วมกันแล้ว ให้เขียนไมเกรชันใหม่
  • ให้ไมเกรชันแต่ละรายการมุ่งเน้นการเปลี่ยนแปลงเพียงอย่างเดียว
  • เพิ่มข้อจำกัดในระดับฐานข้อมูล เช่น null: false และดัชนี เพื่อรักษาความถูกต้องของข้อมูล

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับไมเกรชัน

ทบทวน: ไมเกรชัน

คุณได้เรียนรู้วิธีปรับโครงสร้างให้เปลี่ยนแปลงได้อย่างปลอดภัยแล้ว:

  • ไมเกรชันคือการเปลี่ยนแปลงโครงสร้างที่มีการกำหนดเวอร์ชันและบันทึกไว้ในระบบควบคุมเวอร์ชัน
  • create_table, add_column และ add_index ใช้กำหนดโครงสร้างตาราง
  • db:migrate ใช้การเปลี่ยนแปลง ส่วน db:rollback ใช้ย้อนกลับ
  • ใช้ up/down สำหรับการเปลี่ยนแปลงที่ย้อนกลับไม่ได้
  • schema.rb คือภาพรวมปัจจุบัน

ถัดไป เราจะเชื่อมโมเดลเข้าด้วยกันด้วยความสัมพันธ์

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

บทเรียน “การย้ายโครงสร้างฐานข้อมูล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การย้ายโครงสร้างฐานข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การย้ายโครงสร้างฐานข้อมูล”

พัฒนาสคีมาอย่างต่อเนื่อง คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การย้ายโครงสร้างฐานข้อมูล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Active Record
  2. การย้ายโครงสร้างฐานข้อมูล
  3. ความสัมพันธ์
  4. การตรวจสอบความถูกต้องและคำค้น
← กลับไปที่ Ruby Academy