Xin chào cả nhà,
Mình lập chủ đề này, mong muốn được hiểu rõ hơn về các cơ chế thiết kế 1 phần mềm/ ứng dụng Access tốt, liên quan chủ yếu tới vấn đề bảo mật và sử dụng dữ liệu.
Mình đã đọc các bài viết liên quan trong diễn đàn, qua các bài đọc này, mình rút ra được 1 số nhận định và xin được viết ra. Mong các bạn có thể giúp mình hiểu đúng hơn các nhận định này, hoặc nếu mình đang hiểu sai thì giúp mình hiểu đúng nhé.
Theo như mình tìm hiểu ở trên diễn đàn thì để có được 1 phần mềm chạy Access hiệu quả về tốc độ và bảo mật, cần thiết kế theo kiểu Front-end và Back-end. Trong đó:
- Frontend-Access: nơi người dùng tương tác với các forms và reports bằng những nghiệp vụ như nhập, sửa, xóa, xem, in báo cáo, ...
- Backend-Sql: nơi lưu trữ dữ liệu, Front-end sẽ liên kết với Backend bằng các linked tables, phương pháp kết nối dùng cổng ODBC.
Phương pháp này thậm chí cho phép người dùng sử dụng phần mềm dù không ở trong mạng LAN (ở ngoài chi nhánh cũng có thể kết nối và sử dụng phần mềm, chung database với trụ sở).
Khi dùng Access 2003 thì Microsoft hỗ trợ chức năng phân quyền người dùng (User-level Security) cho phép phân quyền theo nhóm, hạn chế khả năng nhập dữ liệu, sửa dữ liệu, xóa dữ liệu và cả sửa thiết kế (design). Từ 2007 trở đi, không còn chức năng này nữa nên muốn phân quyền người dùng thì phải tự lập trình.
Phân quyền có 2 loại:
- Phân quyền tổng quát: quy định từng nhóm đối tượng được phép truy cập vào forms hoặc reports nào của phần mềm như bài này: http://thuthuataccess.com/forum/thread-71.html của bạn Noname.
- Phân quyền chi tiết: quy định từng nhóm đối tượng được phép thực hiện nghiệp vụ gì trong 1 form: nhập, sửa, xóa dữ liệu.
Đối với việc phân quyền sửa thiết kế (design) như hạn chế người dùng xem, sửa thiết kế của forms hay reports hoặc cả querries thì phải chuyển file từ MDB sang MDE. Đây là phương pháp bảo vệ trí tuệ tốt nhất hiện tại.
Để hạn chế khả năng thao tác lên dữ liệu và thiết kế của phần mềm, thì có thể dùng thủ thuật giấu ribbon (2007) hoặc Menu bar (2003) khi phần mềm vừa mở.
---
Còn 1 số thắc mắc sau khi đọc các bài viết trên diễn đàn và không tìm thấy câu trả lời, mình mạn phép hỏi thêm ở đây, mong được chỉ dẫn:
- Ngoài phương pháp chuyển file MDE, còn có phương pháp nào hạn chế người dùng tiếp cận thiết kế (forms, querries, reports) của phần mềm không?
- SQL cho phép bảo mật thông tin cơ sở dữ liệu rất tốt. Tuy nhiên, các dữ liệu này lại được liên kết với Front end ở dạng Linked tables nên người dùng (nếu có chút hiểu biết) chỉ cần nhấn F11 có thể mở được Navigation Pane, xong từ đó có thể thấy các linked tables (ở SQL Backend-database). Khi thấy được là sao chép được, và lấy được dữ liệu. Như vậy không thể hạn chế việc này?