2011-07-04 27 views
5

Tôi tự hỏi cách tốt nhất để tạo và duy trì bản đồ cơ sở dữ liệu và tập lệnh SQL là gì. Tôi biết tôi là một fan hâm mộ viết kịch bản SQL bằng tay trên một trình soạn thảo văn bản (cộng với thiết kế bản đồ để cạnh tôi trên một mảnh giấy), trong khi những người khác thích sử dụng phần mềm bản đồ cơ sở dữ liệu (MySQL Workbench, Visual Studio) ... một số được liệt kê trong this post) để tự động tạo tập lệnh.Làm cách nào để bạn tạo và cập nhật tập lệnh SQL?

Cả hai giải pháp đều có ưu điểm và nhược điểm. Tôi nhìn thấy những ưu điểm:

  • SQL script bằng tay:
    1. Bạn biết chính xác những gì bạn viết.
    2. Bạn có thể giữ mã SQL sạch và dễ đọc.
    3. Viết mã, bạn có cái nhìn tốt hơn về các chi tiết cơ sở dữ liệu cụ thể của mình.
    4. Viết mã cho phép bạn thực hành kiến ​​thức SQL của mình.
  • Tự động tạo ra kịch bản từ thiết kế đồ:
    1. Tiết kiệm một chút thời gian.
    2. Thậm chí không biết ngôn ngữ SQL, bạn có thể tạo tập lệnh (ngay cả khi tôi liệt kê tập lệnh này như một lợi thế trái ngược cho Tập lệnh SQL bằng tay).
    3. Ngăn chặn lỗi chính tả.

Bạn nghĩ sao về cách nào?

Trả lời

7

Nếu tự động hóa một cái gì đó tiết kiệm thời gian và lỗi của con người tại sao bạn không làm điều đó? Tôi sẽ thử tự động tạo SQL nếu:

  1. Tôi đã tạo một cơ sở dữ liệu thử nghiệm và xây dựng lược đồ một cách hữu cơ bằng cách viết và thực thi các truy vấn không phải do SQL không theo dõi; và
  2. Nếu cơ sở dữ liệu là hợp lý đơn giản và với một lượng thấp của bình thường

Một trường hợp hiếm có thể là nếu bạn đã có một danh sách lớn của các tập dữ liệu mà giản đồ cần thiết để được chiết xuất dưới dạng SQL .

Lợi ích của việc viết bằng tay là bạn nhận thức được mọi phần của thiết kế và có thể thực thi tốt hơn tính toàn vẹn dữ liệu (ví dụ thông qua việc sử dụng khóa ngoại hoặc hạn chế kiểu dữ liệu). Trong ngắn hạn, tôi sẽ đồng ý với danh sách các chuyên gia của bạn.

Đối với các kịch bản nâng cấp, tôi rất thích viết chúng bằng tay vì chúng thường khá ngắn và rất dễ đọc đối với những người kết thúc chạy chúng. Một mẹo tôi muốn có cho các kịch bản nâng cấp là đảm bảo mỗi tập lệnh thêm một hàng ghi số phiên bản nâng cấp trong một bảng chỉ có ở đó để đảm bảo cơ sở dữ liệu được phiên bản chính xác.Một cái gì đó như:

INSERT INTO DB_VERSION (upgrade_time, version_from, version_to, comment) 
    VALUES ('2011-07-04T120320', '2.2.4', '2.3', 'add column x to table y.') 
+1

Yêu thích ý tưởng db_version – Goran

+2

Phương thức db_version (mà tôi cũng sử dụng) có một, quan trọng hơn, sử dụng. Nó là cần thiết để đảm bảo một đường dẫn nâng cấp đơn giản cho db. Tôi thường có các kịch bản nâng cấp chỉ thực hiện nâng cấp từ phiên bản X lên phiên bản Y và thực hiện việc này bằng cách kiểm tra phiên bản hiện tại. Nếu tôi cần nâng cấp từ các phiên bản trước, thì tôi cần phải thực thi đúng chuỗi các kịch bản nâng cấp. – Frazz

Các vấn đề liên quan