Sau khi đọc qua nhiều câu hỏi ở đây về di chuyển và các phiên bản lược đồ DB, tôi đã tìm ra một lược đồ để cập nhật một cách an toàn lược đồ DB trong quá trình cập nhật của chúng tôi. Ý tưởng cơ bản là trong quá trình cập nhật, chúng tôi xuất cơ sở dữ liệu thành tệp, thả và tạo lại tất cả các bảng và sau đó nhập lại mọi thứ. Không có gì quá ưa thích hoặc mạo hiểm ở đó.Cách tốt nhất để từ chối một cột trong lược đồ cơ sở dữ liệu là gì?
Vấn đề là hệ thống này hơi "lan truyền", có nghĩa là chỉ an toàn để thêm cột hoặc bảng, vì việc xóa chúng sẽ gây ra sự cố khi nhập lại dữ liệu. Thông thường, tôi sẽ ổn khi bỏ qua các cột này, nhưng vấn đề là nhiều mục bị loại bỏ đã được cấu trúc lại, và sự hiện diện của các mục cũ trong mã sẽ khiến các lập trình viên khác nghĩ rằng chúng có thể sử dụng chúng.
Vì vậy, tôi muốn tìm cách để có thể đánh dấu cột hoặc bảng là không được chấp nhận. Trong trường hợp lý tưởng, các đối tượng không được chấp nhận sẽ được đánh dấu trong khi cập nhật lược đồ, nhưng trong bản cập nhật tiếp theo, tập lệnh sao lưu của chúng tôi sẽ không đơn giản là SELECT các đối tượng đã được đánh dấu theo cách này, cho phép chúng ta loại bỏ các phần này của lược đồ .
Tôi đã nhận thấy rằng MySQL (và có thể là các nền tảng DB khác, nhưng đây là nền tảng mà chúng tôi đang sử dụng) hỗ trợ thuộc tính COLUMN cho cả hai trường và bảng. Điều này sẽ hoàn hảo, ngoại trừ việc tôi không thể tìm ra cách sử dụng nó một cách có ý nghĩa. Làm thế nào tôi sẽ đi về viết một truy vấn SQL để có được tất cả các tên cột mà làm không chứa một chú thích phù hợp với văn bản có chứa từ "không dùng nữa"? Hoặc tôi đang nhìn vào vấn đề này tất cả sai, và thiếu một cách tốt hơn để làm điều này?
Tôi không hiểu ý bạn là "nhiều mục đã loại bỏ thực sự được cấu trúc lại và sự hiện diện của các mục cũ trong mã khiến người lập trình khác nghĩ rằng họ có thể sử dụng chúng". –
Tại sao bạn làm theo quy trình này thay vì duy trì và thực thi các tập lệnh sql delta? – cherouvim