Vì vậy, nhiều người cố gắng thực hiện loại điều này (các lược đồ khác biệt). Ý kiến của tôi là
- Mã nguồn đi vào công cụ kiểm soát phiên bản (Subversion, CSV, GIT, Perforce ...). Đối xử với nó như thể nó là mã Java hoặc C, nó thực sự không khác gì. Bạn nên có một quy trình cài đặt để kiểm tra và áp dụng nó vào cơ sở dữ liệu.
- DDL LÀ MÃ NGUỒN. Nó cũng đi vào công cụ kiểm soát phiên bản.
- Dữ liệu là một vùng màu xám - các bảng tra cứu có thể phải nằm trong một công cụ kiểm soát phiên bản. Dữ liệu do ứng dụng tạo chắc chắn không nên.
Cách mà tôi làm những ngày này là tạo các tập lệnh di chuyển tương tự như các tập lệnh di chuyển trong Ruby on Rails. Đặt DDL của bạn vào các tập lệnh và chạy chúng để di chuyển cơ sở dữ liệu giữa các phiên bản. Nhóm các thay đổi cho một bản phát hành thành một tệp hoặc tập hợp các tệp. Sau đó, bạn có một tập lệnh di chuyển ứng dụng của mình từ phiên bản x sang phiên bản y.
Một điều tôi không bao giờ làm nữa (và tôi đã từng làm điều đó cho đến khi tôi học tốt hơn) là sử dụng bất kỳ công cụ GUI nào để tạo các đối tượng cơ sở dữ liệu trong môi trường phát triển của tôi. Viết các tập lệnh DDL từ ngày đầu tiên - dù sao thì bạn cũng sẽ cần chúng để quảng bá mã để thử nghiệm, sản xuất, v.v. Tôi đã thấy rất nhiều người sử dụng GUI để tạo tất cả các đối tượng và đến thời điểm phát hành sẽ có một sự cố gắng để sản xuất. tập lệnh để tạo / di chuyển lược đồ một cách chính xác thường không được kiểm tra và không thành công!
Mọi người sẽ có sở thích riêng của họ về cách làm điều này, nhưng tôi đã thấy rất nhiều điều đó được thực hiện không tốt trong những năm qua, điều này đã hình thành nên ý kiến của tôi ở trên.