Bị kẹt với lược đồ cơ sở dữ liệu cũ không còn phản ánh mô hình dữ liệu của bạn là cơn ác mộng của mỗi nhà phát triển. Tuy nhiên, với tất cả các cuộc nói chuyện về mã refactoring cho bảo trì tôi đã không nghe nói nhiều về refactoring lược đồ cơ sở dữ liệu lỗi thời.Mẹo về tái cấu trúc lược đồ cơ sở dữ liệu lỗi thời
Một số mẹo về cách chuyển sang giản đồ tốt hơn mà không vi phạm tất cả mã dựa trên lược đồ cũ? Tôi sẽ đề xuất một vấn đề cụ thể mà tôi phải minh họa cho quan điểm của mình nhưng cảm thấy tự do để đưa ra lời khuyên về các kỹ thuật khác đã được chứng minh hữu ích - những khả năng đó cũng có thể hữu ích.
dụ của tôi:
Công ty của tôi nhận được và tàu sản phẩm. Bây giờ một biên nhận sản phẩm và một lô hàng sản phẩm có một số dữ liệu rất khác nhau liên kết với họ để các nhà thiết kế cơ sở dữ liệu ban đầu tạo ra một bảng riêng biệt cho biên nhận và cho các lô hàng.
Trong một năm làm việc với hệ thống này, tôi đã nhận ra rằng lược đồ hiện tại không có ý nghĩa gì. Sau khi tất cả, cả một biên nhận và một lô hàng về cơ bản là một giao dịch, mỗi người liên quan đến việc thay đổi số lượng của một sản phẩm, ở tim chỉ có dấu +/- là khác nhau. Thật vậy, chúng tôi thường xuyên cần phải tìm tổng số tiền mà sản phẩm đã thay đổi trong một khoảng thời gian, một vấn đề mà thiết kế này là hết sức khó khăn.
Rõ ràng thiết kế phù hợp sẽ là có một bảng Giao dịch đơn với Id là khóa ngoại của bảng ReceiptInfo hoặc bảng ShipmentInfo. Thật không may, lược đồ sai đã được sản xuất trong một số năm và có hàng trăm thủ tục được lưu trữ, và hàng ngàn dòng mã được viết ra khỏi nó. Làm thế nào sau đó tôi có thể chuyển đổi lược đồ để hoạt động chính xác?
Có điều gì cụ thể cho MySQL không. Tất cả những gì tôi thấy có biểu đồ ... không có hướng dẫn thực tế về cách loại bỏ bảng tra cứu. –
Chủ yếu là RDBMS-thuyết bất khả tri. Bản thân cuốn sách chứa các chỉ dẫn thực tế. Có một phép tái cấu trúc cho * thêm * một bảng tra cứu, không thể nhìn thấy một để loại bỏ nó :) http://databaserefactoring.com/AddLookupTable.html –