• Cách chia nhỏ CSDL
  • Cách chia nhỏ CSDL

    Minh Tiên > 02-06-15, 07:05 PM

    Chào cả nhà !
    Như trong bài "10 thủ thuật bảo mật cơ sở dữ liệu Access" của Bác Noname có để cập đến "Cách chia nhỏ CSDL để bảo mật", nhưng mình tìm trong diễn đàn ko thấy có bài viết nào liên quan để chủ đề này.
    Nay nhờ các Pro nào đã làm chia sẻ cách làm trên (Nếu có demo càng OK).
    Xin cảm ơn !
  • RE: Cách chia nhỏ CSDL

    tranthanhan1962 > 03-06-15, 01:56 PM

    (02-06-15, 07:05 PM)Minh Tiên Đã viết: Chào cả nhà !
    Như trong bài "10 thủ thuật bảo mật cơ sở dữ liệu Access" của Bác Noname có để cập đến "Cách chia nhỏ CSDL để bảo mật", nhưng mình tìm trong diễn đàn ko thấy có bài viết nào liên quan để chủ đề này.
    Nay nhờ các Pro nào đã làm chia sẻ cách làm trên (Nếu có demo càng OK).
    Xin cảm ơn !

    Chia cơ sở dữ liệu (Split database) chắc Minh Tiên cũng thường làm mà. Đó là sau khi hoàn thành ứng dụng ta chuyển toàn bộ table sang tập tin mdb mới còn ứng dụng của chúng ta chỉ còn các link table và phần còn lại. Trong tool của access có lệnh Database Splitter để làm công việc đó một cách tự động và tập tin mdb mới chứa các table có tên của ứng dụng thêm đuôi "_be". Nhưng thông thường thì ít ai sử dụng lệnh này nên không để ý.007
    Khi đó tin mdb có đuôi _be chứa riêng các table được đặt ở máy chủ (server) chỉ dùng để lưu trữ tâp tin mdb chứa các table link còn lại do quản trị viên quản lý (back end) hoặc chuyển sang mde (access 2003) hay accde (access 2007 trở lên) đặt trên máy trạm (clien) để nhân viên nhập liệu làm việc hoặc cho khách hàng (front end). Đối với các CSDL lớn access còn hỗ trợ việc dịch tập tin mdb back end sang SQL bằng lệnh upsizing wizard
    Đây là một trong những cách phân chia CSDL. Ví dụ ta có một ứng dụng access tên là chương trình. Sau khi chia ta có một chuongtrinh_be.mdb chỉ chứa dữ liệu đặt ở server. Chuongtrinh1.mdb có đầy đủ các phần của người thiết kế ứng dụng và table liên kết. chuongtrinh2.mdb, chuongtrinh3.mdb có quyền design hoặc số lượng query, form, module... ít hơn để hỗ trợ sửa chữa, xử lý lỗi.... Chuongtrinh1.mde, Chuongtrinh2.mde, Chuongtrinh3.mde...Không có quyền disign, chỉ có quyền truy cập, nhập mới, sửa chữa số liệu tùy theo từng trường hợp

    [Hình: THKZFSu.jpg]
  • RE: Cách chia nhỏ CSDL

    Minh Tiên > 03-06-15, 06:52 PM

    Cảm ơn tranthanhan1962 !
    Trong bài Bac Noname đã có đề cập đến tách dữ liệu frontend và Backend bằng Split database rồi. Cách này thì mình cũng làm. Mình muốn biết còn cách nào khác ko ?
    Thân./.
  • RE: Cách chia nhỏ CSDL

    tranthanhan1962 > 04-06-15, 12:30 AM

    (03-06-15, 06:52 PM)Minh Tiên Đã viết: Cảm ơn tranthanhan1962 !
    Trong bài Bac Noname đã có đề cập đến tách dữ liệu frontend và Backend bằng Split database rồi. Cách này thì mình cũng làm. Mình muốn biết còn cách nào khác ko ?
    Thân./.

    Về nguyên tắc thì chỉ có 1. Nhưng cách xử lý thì rất nhiều:
    Theo hình vẽ mình đã post lên thì:
    1/Data là 1 hay những tập tin chứa các table dữ liệu có thể là tập tin access hay SQL (ở đây là chuongtrinh_be.mdb) được đặt ở máy chủ server
    2/Back End có thể dịch là cửa sau hay giao diện dành cho người quản trị thiết kế. Là tất cả các thành phần quản lý thiết kế như chuongtrinh1.mdb chính là toàn bộ phần còn lại chuongtrinh.mdb sau khi tách các table chuyển qua data là chuongtrinh_be.mdb cái này do tac giả chương trình hay quản trị trưởng quản lý.
    Tuy nhiên nó cũng có thể là một phần của chuongtrinh1.mdb.
    Ví dụ: chuongtrinh2.mdb dành cho quản trị viên có quyền điều chỉnh thiết kế giao diện form, report (chỉ chứa những thành phần quan hệ của các form, report).
    Chuongtrinh3.mdb dành cho kỹ thuật viên quản lý cấp phát lại mật khẩu cho những nhân viên quên mật khẩu…
    3/Front End có thể dịch là giao diện tương tác dành cho người sử dụng (chứa các form nhập dữ liệu, các report) người sử dụng không thể thay đổi thiết kế các giao diện tương tác mà chỉ nhập hoặc chỉ xem giá trị dữ liệu thông qua những giao diện đó.
    Ví dụ chuongtrinh1.mde được tạo từ chuongtrinh1.mde quản trị dữ liệu sẽ thông qua nó để kiểm tra, thêm bớt, thay đổi nội dung giá trị tất cả các table của chuongtrinh_be.mdb. Nhưng không vào được các phần thiết kế hoặc các table dành riêng cho bộ phận back end.
    Chuongtrinh2.mde chỉ có các giao diện quản lý nhân viên, lý lịch nhân viên thời gian tham gia công tác, danh sách các bộ phận trong cơ quan. Như form nhập danh sách nhân viên, các bản lý lịch nhân viên…chuongtrinh 2 dành cho cán bộ phòng tổ chức sử dụng
    Chuongtrinh3.mde chỉ có các giao diện thông báo giá hàng hóa cho khách hàng…
    Ngoài ra còn có thể chia ra chuongtrinh4.mde dành cho phòng kế toán có các giao diện chấm công tính lương hoặc gộp chung phần này vào chuongtrinh2.mde chỉ khác nhau mật khẩu để vào từng giao diện nhập liệu riêng để làm việc.
    Đại loại dữ liệu chương trình chỉ có 1. Nhưng các tập tin chứa các giao diện tương tác thì có thể chia tách tùy ý, nhiều dạng khác nhau nhằm bảo đảm công việc theo từng bộ phận riêng lẽ. Điều quan trọng là tất cả các bô phận back end hoặc front end đều gắn liền với một database duy nhất (hoặc tập hợp các tập tin data duy nhất).
    Thông thường những người mới đến với access không mấy quan tâm đến chuyện này. Có khi làm xong một ứng dụng là xử dụng luôn. Nhưng như vậy nếu những ai có hiểu biết ít nhiều về access cũng có thể vào thay đổi, phá hoại chương trình một cách dễ dàng. Vì thế ít nhất chúng ta cũng phải chia cơ sở dữ liệu ra làm 3 phần (Đa số các bạn đã thực hiện việc này rồi). Phần 1: data chỉ chứa các table - Phần 2: Back End Hệ thống quản lý tương tác đầy đủ (phần còn lại sau khi chuyển các table thành link table phần này thường người thiết kế chương trình cất vào một nơi để dành lưu trữ) – Phần 3 Front End là phần thứ 2 được chuyển thành mde để người xử dụng xử lý dữ liệu mà không được phép điều chỉnh các bộ phận tương tác.
    Khi chúng ta phân chia ứng dụng ra từng phần nhỏ như vậy. Quyền quản lý từ bộ phận sử lý, sử dụng chương trình sẽ rõ ràng. Tốc độ truy cập nhanh hơn. Và đặt biệt ai hay bộ phận nào làm sai cũng không thể chối bỏ trách nhiệm hay đổ lỗi cho nhau được.
    Phương pháp chung hầu như có đầy đủ trên forum. Quan trọng là cách xử lý tùy thuộc theo từng người và chỉ có thể trao đổi qua từng trường hợp cụ thể.
    Thân
  • RE: Cách chia nhỏ CSDL

    thanhtruong > 14-02-17, 03:37 PM

    Mình hỏi nhé. Như hướng dẫn trên của Anh (chị) mình làm thế này có đúng không. xin mọi người cho ý kiến

    Mình có file "dulieu.mdb" nằm ở máy chủ.
    Mình tách file ra nó sẽ có : dulieu_be.mdb và dulieu.mdb
    Sau đó mình coppy file "dulieu.mdb"  vừa tách thành dulieu1.mdb, dulieu2.mdb, dulieu3.mdb ...
    Mình tiến hành sửa file dulieu1.mdb, dulieu2.mdb, dulieu3.mdb theo yêu cầu người dùng. 
    Tiếp đến mình chuyển dulieu1.mdb, dulieu2.mdb, dulieu3.mdb thành dulieu1.mde, dulieu2.mde, dulieu3.mde
    Rồi chia sẽ thư mục chứa 3 file dulieu1.mde, dulieu2.mde, dulieu3.mde này đến 3 máy tính khác.
    Người ở máy 1 chỉ xem được dulieu1.mde và Người ở máy 2 chỉ xem được dulieu2.mde .......

    Mình hỏi 4 ý?

    1. Cách làm trên có đúng không?
    2. Nếu muốn sửa chữa lớn ta có ráp được dulieu_be.mdb và dulieu.mdb lại để sửa không? Nếu được thì cách ráp nó sẽ thế nào?
    3. Dữ liệu đồng bộ giữa các file dulieu1.mde, dulieu2.mde, dulieu3.mde của các máy tính 1,2,3 theo em làm thử thì nó không đồng bộ được, mà phải tắt rồi mở lại mới đồng bộ được với nhau. Ví dụ thêm mới record ở dulieu1.mde thì tại dulieu2.mde không nhận được record mới đó mà phải tắt rồi mở lại mới nhận được. Vậy có cách nào để đồng bộ nhanh không?
    4. Và khi mình backup dữ liệu thì phần dulieu_be.mdb và phần [b]dulieu.mdb [/b]phần nào sẽ được backup, (trong trường hợp các file dulieu1.mde, dulieu2.mde, dulieu3.mde đang chạy tại các máy.)

    Mong mọi người cho ý kiến! xin cảm ơn!
  • RE: Cách chia nhỏ CSDL

    hieuvn > 14-02-17, 05:11 PM

    Theo mình hiểu chia nhỏ dữ liệu ở đây là không để quá nhiều thông tin trong 1 bảng. Ví dụ thay vì để 1 bảng chứa thông tin họ,tên, tuổi, giới tính, nghề nghiệp, chức vụ, lương, thói quen... vào 1 bảng thì ta tách ra khoảng 3 đến 5 bảng và gắn kết với nhau bằng các relationship. Việc tách data như thế không chỉ đảm bảo về mặt bảo mật mà còn làm cho các câu truy vấn nhẹ hơn thay vì load 1 lượng dữ liệu lớn trong 1 bảng.
  • RE: Cách chia nhỏ CSDL

    maidinhdan > 15-02-17, 01:12 AM

    (14-02-17, 03:37 PM)thanhtruong Đã viết: Mình hỏi nhé. Như hướng dẫn trên của Anh (chị) mình làm thế này có đúng không. xin mọi người cho ý kiến

    Mình có file "dulieu.mdb" nằm ở máy chủ.
    Mình tách file ra nó sẽ có : dulieu_be.mdb và dulieu.mdb
    Sau đó mình coppy file "dulieu.mdb"  vừa tách thành dulieu1.mdb, dulieu2.mdb, dulieu3.mdb ...
    Mình tiến hành sửa file dulieu1.mdb, dulieu2.mdb, dulieu3.mdb theo yêu cầu người dùng. 
    Tiếp đến mình chuyển dulieu1.mdb, dulieu2.mdb, dulieu3.mdb thành dulieu1.mde, dulieu2.mde, dulieu3.mde
    Rồi chia sẽ thư mục chứa 3 file dulieu1.mde, dulieu2.mde, dulieu3.mde này đến 3 máy tính khác.
    Người ở máy 1 chỉ xem được dulieu1.mde và Người ở máy 2 chỉ xem được dulieu2.mde .......

    Mình hỏi 4 ý?

    1. Cách làm trên có đúng không?
    2. Nếu muốn sửa chữa lớn ta có ráp được dulieu_be.mdb và dulieu.mdb lại để sửa không? Nếu được thì cách ráp nó sẽ thế nào?
    3. Dữ liệu đồng bộ giữa các file dulieu1.mde, dulieu2.mde, dulieu3.mde của các máy tính 1,2,3 theo em làm thử thì nó không đồng bộ được, mà phải tắt rồi mở lại mới đồng bộ được với nhau. Ví dụ thêm mới record ở dulieu1.mde thì tại dulieu2.mde không nhận được record mới đó mà phải tắt rồi mở lại mới nhận được. Vậy có cách nào để đồng bộ nhanh không?
    4. Và khi mình backup dữ liệu thì phần dulieu_be.mdb và phần [b]dulieu.mdb [/b]phần nào sẽ được backup, (trong trường hợp các file dulieu1.mde, dulieu2.mde, dulieu3.mde đang chạy tại các máy.)

    Mong mọi người cho ý kiến! xin cảm ơn!

    Chỉ 1 câu thôi: Không ai làm theo cách này.
  • RE: Cách chia nhỏ CSDL

    thanhtruong > 15-02-17, 12:43 PM

    (15-02-17, 01:12 AM)maidinhdan Đã viết: Chỉ 1 câu thôi: Không ai làm theo cách này.

    Để 1 phần mềm chạy ở nhiều máy mình làm cách sau:
    Mình có 3 máy tính trong đó có 1 máy chủ và 2 máy con. Và có file access tên “Dulieu.mdb”
    1.     Ở máy chủ Tạo thư mục chứa file “dulieu.mdb” như sau
    D:\DATA\dulieu.mdb và Share đến các máy con.
    2.     Tại 2 máy con, mình coppy file dulieu.mdb vào ổ E:\DATA2\dulieu.mdb
    3.     Tiến hành xóa tất cả Table của file trong thư mục E:\DATA2\dulieu.mdb
    Rồi bấm chuột phải chọn link table/ tìm đến file đã chia sẻ ở máy chủ là D:\DATA\dulieu.mdb, link tất cả các table này vào.
     
    ·       Vậy là xong!
    ·       Không biết có được không mọi người cho ý kiến.
    ·       Không có mục đích thương mại nên không cần phải bảo mật dữ liệu.
  • RE: Cách chia nhỏ CSDL

    maidinhdan > 15-02-17, 09:50 PM

    (15-02-17, 12:43 PM)thanhtruong Đã viết:
    (15-02-17, 01:12 AM)maidinhdan Đã viết: Chỉ 1 câu thôi: Không ai làm theo cách này.

    Để 1 phần mềm chạy ở nhiều máy mình làm cách sau:
    Mình có 3 máy tính trong đó có 1 máy chủ và 2 máy con. Và có file access tên “Dulieu.mdb”
    1.     Ở máy chủ Tạo thư mục chứa file “dulieu.mdb” như sau
    D:\DATA\dulieu.mdb và Share đến các máy con.
    2.     Tại 2 máy con, mình coppy file dulieu.mdb vào ổ E:\DATA2\dulieu.mdb
    3.     Tiến hành xóa tất cả Table của file trong thư mục E:\DATA2\dulieu.mdb
    Rồi bấm chuột phải chọn link table/ tìm đến file đã chia sẻ ở máy chủ là D:\DATA\dulieu.mdb, link tất cả các table này vào.
     
    ·       Vậy là xong!
    ·       Không biết có được không mọi người cho ý kiến.
    ·       Không có mục đích thương mại nên không cần phải bảo mật dữ liệu.

    Ok, cách này được ( Cách đầu tiên mà người mới bước vào Access thường dùng).

    Và sau này, Khi trình độ viết code của bạn nâng lên thì bạn sẽ không bao giờ dùng cách này.

    Nói thì dài dòng: Bạn cứ cho chạy thử nghiêm vài tháng rồi tự ngộ ra nó hay hơn. ( cho 3 máy chạy cùng 1 lúc ấy)
  • RE: Cách chia nhỏ CSDL

    thanhtruong > 16-02-17, 08:50 AM

    Cách này thì mình đã chạy thử được 1 ngày demo.
    Xảy ra các lỗi. 

    1. Nếu 2 máy thêm mới cùng một thời điểm hay khác thời điểm thì máy nào mở chương trình trước thì máy đó ưu tiên, máy còn lại lỗi.
    2. Không cập nhật được giữa các máy, máy 1 thêm mới, mà máy 2 không thấy được record mới, phải tắt và khởi động lại form thì mới thấy được,

    * Mình tạo nút lấy dữ liệu bằng code: 
    docmd.close
    docmd.openform "tên form"
    * không biết còn cách nào khác không?