AILapTrinh.comAI Lập Trình
Đọc hiểu và cải tạo mã cũ

Hiểu cơ sở dữ liệu cũ không tài liệu bằng AI: lược đồ, quan hệ ngầm, dữ liệu thật

Cách dùng AI tìm hiểu cơ sở dữ liệu cũ: lấy lược đồ, đoán quan hệ ngầm, đọc giá trị mã hoá trong cột trạng thái, kiểm bằng truy vấn trên bản sao đã che dữ liệu.

Developer sitting cross-legged on the floor of a small Nha Trang apartment, laptop with a dim blank screen on a low table, stacked empty notebooks, evening lamp light

Để hiểu một cơ sở dữ liệu cũ không tài liệu bằng AI, đưa cho AI cấu trúc bảng chứ không đưa dữ liệu thật, nhờ nó suy ra quan hệ và ý nghĩa từng cột, rồi tự kiểm từng suy luận bằng truy vấn trên bản sao đã che dữ liệu. Cơ sở dữ liệu thường sống lâu hơn mã: mã có thể đã viết lại hai lần, nhưng các bảng vẫn từ thời đầu, với những cột tên khó hiểu, giá trị số mang ý nghĩa ngầm, và quan hệ chỉ tồn tại trong đầu người thiết kế.

Bài này đi qua quy trình từ lấy lược đồ, suy ra quan hệ, giải mã các cột trạng thái, tới viết tài liệu dữ liệu, kèm câu lệnh mẫu cho AI. Ví dụ dùng MySQL hoặc MariaDB, nguyên tắc áp dụng được cho PostgreSQL và các hệ khác.

Nguyên tắc số một: cấu trúc thì đưa, dữ liệu thì không

Cấu trúc bảng gồm tên bảng, tên cột, kiểu dữ liệu, chỉ mục, khoá. Đây là thứ AI cần để giúp bạn, và thường ít nhạy cảm. Dữ liệu là nội dung các dòng: tên khách hàng, số điện thoại, đơn hàng, số dư. Đây là thứ không được đưa vào chatbot, kể cả chỉ vài dòng làm ví dụ. Nếu cần ví dụ để AI hiểu ý nghĩa một cột, hãy tự tạo dòng giả có cấu trúc tương tự, hoặc dùng bản sao cơ sở dữ liệu mà toàn bộ thông tin cá nhân đã được thay bằng giá trị giả.

Ngay cả với cấu trúc bảng, hãy kiểm quy định của công ty về công cụ AI được phép dùng. Tên bảng và cột có thể tiết lộ nghiệp vụ, đối tác, hay tính năng chưa công bố. Nếu chưa được phép đưa ra ngoài, dùng công cụ AI do công ty phê duyệt hoặc mô hình chạy cục bộ.

Một lưu ý thực tế khác: làm việc trên bản sao, không trên cơ sở dữ liệu thật. Mọi truy vấn khám phá, kể cả truy vấn chỉ đọc, có thể chạy chậm và khoá bảng trên một hệ thống đang có khách dùng. Tài khoản dùng để khám phá nên chỉ có quyền đọc.

Lấy lược đồ và đưa cho AI đúng cách

Bước đầu tiên là lấy ra cấu trúc của toàn bộ cơ sở dữ liệu ở dạng văn bản.

  1. Xuất cấu trúc không kèm dữ liệu. Với MySQL và MariaDB, công cụ xuất có tuỳ chọn chỉ lấy cấu trúc (--no-data); với PostgreSQL, công cụ pg_dump có tuỳ chọn chỉ lấy lược đồ (--schema-only). Kết quả là các lệnh tạo bảng.
  2. Đếm số dòng mỗi bảng bằng truy vấn trên bảng thông tin hệ thống hoặc đếm trực tiếp trên bản sao. Con số giúp AI và bạn biết bảng nào là bảng chính, bảng nào gần như trống.
  3. Nếu lược đồ dài, chia theo nhóm bảng có tiền tố giống nhau và đưa từng nhóm.
  4. Câu lệnh mẫu cho AI: Đây là cấu trúc các bảng của một ứng dụng bán hàng, kèm số dòng mỗi bảng. Nhóm các bảng theo chức năng. Với mỗi bảng, đoán một dòng đại diện cho cái gì. Ghi rõ đâu là suy từ khoá ngoại khai báo, đâu là suy từ tên cột, đâu là đoán.
  5. Đọc kết quả và đánh dấu những bảng bạn không nhận ra để hỏi tiếp.

Ba mức căn cứ trong câu lệnh rất quan trọng. Khoá ngoại khai báo là sự thật; tên cột theo quy ước là manh mối khá tốt; còn lại là đoán. Bạn sẽ kiểm mỗi mức theo cách khác nhau.

Tìm quan hệ ngầm khi không có khoá ngoại

Đọc câu JOIN trong mã. Tìm trong kho mã mọi câu truy vấn có phép nối, đưa cho AI để trích ra danh sách cặp bảng và cột được nối. Đây là bằng chứng mạnh nhất về quan hệ đang được dùng.

Kiểm bằng truy vấn đếm mồ côi. Với mỗi quan hệ nghi ngờ, đếm số dòng ở bảng con có giá trị cột liên kết không tìm thấy ở bảng cha. Số mồ côi bằng không hoặc rất nhỏ cho thấy quan hệ có thật; số lớn có thể là quan hệ sai hoặc dữ liệu đã bẩn từ lâu.

Kiểm kiểu quan hệ. Đếm xem mỗi giá trị ở bảng cha có bao nhiêu dòng con. Kết quả cho biết đây là quan hệ một một hay một nhiều trên thực tế, có khi khác với cái tên gợi ý.

Cảnh giác với cột đa nghĩa. Mã cũ hay có một cột lưu mã định danh trỏ tới nhiều bảng khác nhau tuỳ giá trị của một cột loại đi kèm. AI nhận ra mẫu này nếu bạn đưa cả hai cột và các câu truy vấn liên quan.

Ghi lại kèm mức chắc chắn. Mỗi quan hệ tìm được ghi rõ đã xác nhận bằng gì: khoá ngoại, câu JOIN, truy vấn đếm. Tài liệu có mức chắc chắn giúp người sau biết chỗ nào cần kiểm lại.

Giải mã các cột trạng thái và giá trị ma thuật

Phần khó hiểu nhất của cơ sở dữ liệu cũ thường là các cột lưu số nguyên hay ký tự mang ý nghĩa ngầm. Bảng dưới là cách tìm ý nghĩa của chúng.

NguồnCách làmGhi chú
Thống kê giá trịĐếm số dòng theo từng giá trị riêng của cột trạng thái trên bản saoBiết cột có bao nhiêu giá trị, giá trị nào phổ biến
Mã nguồnTìm mọi chỗ so sánh hoặc gán giá trị cho cột đó, đưa cho AI tóm tắt mỗi giá trị nghĩa là gìNguồn tốt nhất; thường có hằng số hoặc chú thích ở đâu đó
Giao diệnXem trang quản trị hiển thị nhãn gì tương ứng mỗi giá trịNhãn hiển thị là cách người dùng hiểu giá trị
Lịch sử thay đổiXem dòng chuyển trạng thái theo thời gian nếu có bảng nhật kýCho biết luồng trạng thái thật: từ giá trị nào sang giá trị nào
Người vận hànhHỏi người dùng hệ thống lâu năm về các giá trị lạGiá trị chỉ xuất hiện vài lần thường có câu chuyện riêng

Khi đã có danh sách giá trị và ý nghĩa, nhờ AI vẽ sơ đồ chuyển trạng thái dạng chữ: đơn hàng đi từ mới sang đã xác nhận, đang giao, hoàn tất, huỷ. Sơ đồ này thường lộ ra những chuyển trạng thái mã cho phép nhưng nghiệp vụ không hề muốn, nguồn của nhiều lỗi khó hiểu.

Những cái bẫy quen thuộc của cơ sở dữ liệu cũ

Bảng mã ký tự và đối chiếu: cơ sở dữ liệu tạo từ lâu có thể dùng bảng mã cũ cho một số bảng, khiến tiếng Việt hiển thị lỗi hoặc so sánh chuỗi sai. Hỏi AI đọc phần khai báo bảng mã trong cấu trúc từng bảng, liệt kê những bảng khác với phần còn lại. Đây là thông tin quan trọng nếu bạn định chuyển dữ liệu hay nâng phiên bản.

Thời gian và múi giờ: một số cột lưu thời gian theo giờ máy chủ, một số theo giờ quốc tế, có cột lưu dưới dạng số giây. Không có cách nào biết chắc chỉ bằng cấu trúc; phải xem mã ghi vào cột đó và so với thời điểm thật của vài sự kiện bạn biết rõ.

Trình kích hoạt và thủ tục lưu sẵn: logic nghiệp vụ có thể nằm ngay trong cơ sở dữ liệu, không có trong mã ứng dụng. Xuất cả phần này và đưa cho AI giải thích. Rất nhiều người đọc mã kỹ mà vẫn không hiểu vì sao một cột tự thay đổi, cho tới khi thấy trình kích hoạt.

Bảng bỏ dở: bảng có cấu trúc đầy đủ nhưng ít dòng, dòng mới nhất từ nhiều năm trước. Đừng xoá vội; đánh dấu và kiểm theo cách kiểm mã chết.

Nhờ AI viết truy vấn khám phá mà không làm phiền hệ thống

Trong quá trình tìm hiểu, bạn sẽ chạy hàng chục truy vấn đếm, nhóm, lọc. AI viết loại truy vấn này rất nhanh, nhưng mặc định nó không biết bảng của bạn có mười nghìn hay năm mươi triệu dòng. Một câu đếm nhóm không có chỉ mục phù hợp trên bảng lớn có thể chạy hàng phút và chiếm tài nguyên của cả máy. Vì vậy, khi giao việc, luôn kèm số dòng của bảng và danh sách chỉ mục, và thêm yêu cầu: Viết truy vấn chỉ đọc, ưu tiên dùng cột có chỉ mục, giới hạn số dòng trả về, và cho biết trước truy vấn nào có thể quét toàn bảng.

Trước khi chạy câu nặng, dùng lệnh xem kế hoạch thực thi của hệ quản trị cơ sở dữ liệu (EXPLAIN trong MySQL và PostgreSQL) và đưa kết quả cho AI đọc giúp. Nếu kế hoạch cho thấy quét toàn bảng lớn, hãy chạy trên bản sao vào giờ vắng, hoặc lấy mẫu một phần dữ liệu theo khoảng mã định danh. Mọi truy vấn khám phá đều không có câu lệnh sửa hay xoá; nếu AI đề xuất một câu cập nhật "để dọn dữ liệu cho dễ kiểm", từ chối và ghi lại thành việc riêng cần duyệt.

Viết tài liệu dữ liệu để không ai phải làm lại

Kết quả của cả quá trình nên là một tài liệu dữ liệu sống trong kho mã: danh sách bảng theo nhóm chức năng, mỗi bảng một đoạn mô tả, các cột quan trọng kèm ý nghĩa, các giá trị trạng thái, quan hệ kèm mức chắc chắn, và những cái bẫy đã biết. Nhờ AI chuyển ghi chú rời rạc thành định dạng thống nhất, kèm một sơ đồ quan hệ thực thể dạng chữ, rồi bạn đọc lại và xoá mọi điều chưa được kiểm chứng.

Tài liệu này có hai người đọc. Người mới vào nhóm đọc để không phải lần mò như bạn. Trợ lý AI cũng đọc: khi tài liệu dữ liệu nằm trong kho và được đưa vào ngữ cảnh, câu truy vấn AI viết cho dự án ít sai tên cột hơn hẳn. Lỗi sai tên cột là loại lỗi kiểm tra cú pháp không bắt được, chỉ lộ ra khi câu truy vấn chạy thật.

Giữ tài liệu cập nhật bằng cùng quy tắc với mã: thay đổi cấu trúc bảng nào thì sửa tài liệu trong cùng lần gộp. Nếu dự án có tệp di chuyển cấu trúc đánh số, nhờ AI định kỳ so tài liệu với lược đồ thật để tìm chỗ lệch.

Câu hỏi thường gặp

Có nên đưa vài dòng dữ liệu thật cho AI để nó hiểu cột dễ hơn không?

Không nên. Tự tạo vài dòng giả có cùng cấu trúc và kiểu giá trị là đủ để AI hiểu. Nếu cần thống kê trên dữ liệu thật, chạy truy vấn trên bản sao rồi chỉ đưa kết quả tổng hợp không chứa thông tin cá nhân.

Cơ sở dữ liệu không có khoá ngoại có phải là thiết kế sai không?

Không hẳn. Nhiều hệ thống cũ bỏ khoá ngoại vì lý do hiệu năng, vì dùng bộ máy lưu trữ không hỗ trợ, hoặc vì thói quen. Hệ quả là quan hệ chỉ được giữ trong mã, nên cần tìm và ghi lại như trong bài.

AI đoán sai quan hệ giữa hai bảng thì kiểm thế nào?

Chạy truy vấn đếm số dòng mồ côi và số dòng con trên mỗi dòng cha trên bản sao. Kết quả cho biết quan hệ có thật không và kiểu gì. Thêm vào đó, tìm câu JOIN trong mã giữa hai bảng đó.

Nên bổ sung khoá ngoại cho cơ sở dữ liệu cũ không?

Có thể, nhưng là thay đổi cần kế hoạch: dữ liệu mồ côi hiện có sẽ khiến lệnh thêm khoá thất bại, và một số đoạn mã cũ có thể dựa vào việc không có ràng buộc. Làm trên bản sao trước, dọn dữ liệu, kiểm thử kỹ.

Làm sao biết logic nào nằm trong cơ sở dữ liệu chứ không phải trong mã?

Xuất danh sách trình kích hoạt, thủ tục lưu sẵn, hàm và khung nhìn từ cơ sở dữ liệu. Nếu một cột thay đổi mà không tìm thấy câu lệnh cập nhật nào trong mã, trình kích hoạt là nghi phạm đầu tiên.

Tài liệu dữ liệu nên chi tiết tới mức nào?

Đủ để người mới viết được truy vấn đúng cho các bảng chính mà không phải hỏi ai. Các bảng chính và cột trạng thái cần mô tả kỹ; bảng phụ ít dùng chỉ cần một dòng. Tài liệu quá dài sẽ không ai cập nhật.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138