Thứ Hai, 1 tháng 2, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 2 - Bút toán kép so với cơ sở dữ liệu kế toán

James Perry, Richard Newmark


Chương 2
Cơ sở dữ liệu và hệ thống kế toán


Bút toán kép so với cơ sở dữ liệu kế toán


Là điểm sáng trong 500 năm qua, bút toán kép đã cung cấp một phương pháp ghi chép giao dịch tuyệt vời. Nó thỏa mãn nhu cầu nắm bắt bản chất giao dịch của kế toán viên. Khi bút toán kép đầu tiên được phát triển cách nay hơn 500 năm, chi phí thu thập và lưu trữ thông tin rất cao. Ghi chép giao dịch bằng giấy bút là nhiệm vụ tiêu tốn thời gian. Bút toán kép cho kế toán viên một công cụ giá trị nhằm nhận diện nhanh chóng bản chất giao dịch. Vì vậy, bút toán kép giúp doanh nhân nắm bắt và lưu trữ các thuộc tính giao dịch chính theo một dạng có tính tổng hợp cao. Điều này giúp chi phí thu thập và lưu trữ thông tin ở mức chấp nhận được. Ngoài ra, khả năng kiểm tra bên nợ - bên có là một đặc trưng kiểm soát nội bộ quan trọng của hệ thống kế toán làm bằng tay.

Xử lý giao dịch bằng máy tính đã giải phóng kế toán viên khỏi những hạn chế và vất vả của hệ thống kế toán làm bằng tay. Nhờ máy tính, giờ đây ta có thể dễ dàng nắm bắt nhiều thông tin giao dịch. Chẳng hạn, các siêu thị và cửa hàng bán lẻ thường đọc mã vạch tại quầy để ghi nhận ngày giờ mua, mã món hàng, địa chỉ cửa hàng, mã số quầy, và mã số nhân viên thâu ngân. Quan trọng hơn, họ nắm bắt tất cả các thông tin này chỉ bằng hành động quét nhanh! Thẻ dùng tần số vô tuyến còn ghi nhận nhanh hơn tất cả các mặt hàng có trong giỏ nhờ mã số phát ra từ thẻ qua sóng vô tuyến, không cần phải đặt giỏ hàng gần thiết bị quét.

Các công nghệ như thiết bị đọc mã vạch và máy quét quang học đã đóng vai trò chính yếu trong việc giảm chi phí ghi nhận và lưu trữ nhiều thuộc tính của từng biến cố kinh tế. Để thấy rõ hơn sự khác biệt giữa bút toán kép và cơ sở dữ liệu kế toán, hãy xét một giao dịch mua bán đơn giản. Hầu hết giao dịch mua bán đều bắt đầu bằng việc khách hàng gửi đơn mua hàng (purchase order). Nếu công ty tiếp nhận đơn mua hàng có hàng trong kho và thấy tiền bảo chứng của khách hàng (customer's credit) là chấp nhận được, công ty sẽ gửi hàng kèm theo hóa đơn. Hệ bút toán kép ghi nhận giao dịch này cho công ty bán hàng bằng mục bút toán sau:



Để ý là mục bút toán này bao gồm 5 thông tin:

Thời điểm giao dịch (Date)
Tên tài khoản bên nợ (Accounts Receivable, khoản phải thu)
Tên tài khoản bên có (Sales, thương vụ)
Số tiền giao dịch (Amount)
Diễn giải của giao dịch (Explanation)

Trong mục bút toán tổng quát như được trình bày ở trên, phần diễn giải có thể chứa tên khách hàng. Các công ty dùng mục bút toán chuyên biệt và sổ cái chi tiết có thể lưu thêm thông tin tên khách hàng hay mã tài khoản. Chẳng hạn, nếu mục bút toán ở trên được đưa vào sổ cái chi tiết, qui trình lưu sổ sẽ lưu tên khách hàng hay mã tài khoản vào sổ cái chi tiết. Nếu giao dịch mua bán được ghi vào nhật ký bán hàng chuyên biệt thay vì vào nhật ký bán hàng tổng quát như trên, định dạng sẽ khác. Tóm lại, hệ bút toán kép sẽ ghi nhận 5 hay 6 thuộc tính giao dịch, trong đó thuộc tính số tiền được ghi nhận 2 lần.

Ta hãy xem hệ cơ sở dữ liệu kế toán xử lý giao dịch đó ra sao. Nó ghi giao dịch vào tập hợp bảng tương tự như Hình 2.1. Hình này hiển thị trong cửa sổ quan hệ Relationships của Access.

Hình 2.1. Giao dịch bán hàng được lưu trong hệ cơ sở dữ liệu kế toán.

Hệ cơ sở dữ liệu ở Hình 2.1. sẽ lưu một số thuộc tính giao dịch mua bán vào bảng hóa đơn tblInvoice. Ta sẽ dùng tiền tố "tbl" trong tài liệu này để chỉ rằng đây là một đối tượng bảng (table) trong Access. Ta còn dùng các tiền tố tương tự cho những đối tượng Access khác, trong đó "frm" dùng cho biểu mẫu (form), "rpt" dùng cho báo cáo (report), và "qry" dùng cho câu truy vấn (query).

Tuy nhiên, cần chú ý rằng nhiều thuộc tính khác của giao dịch mua bán còn được lưu trong 8 bảng nữa. Hệ cơ sở dữ liệu kế toán có thể lưu nhiều thuộc tính giao dịch mua bán hơn hệ bút toán kép. Để ý rằng hệ cơ sở dữ liệu kế toán thông tin mua bán sẽ lưu các thuộc tính này ở dạng nguyên thể, nằm rải rác trong nhiều bảng. Trong Chương 1 bạn đã học một số qui tắc thiết kế bảng hiệu quả, đó là lưu các thuộc tính vào nhiều bảng, nhưng cho phép thu thập lại thông tin khi cần. Một trong những qui tắc này yêu cầu bạn đặt một khóa chính cho mỗi bảng. Khóa chính (primary key) bao gồm một hay nhiều trường (fields) trong bảng nhằm cung cấp một định danh duy nhất cho từng dòng trong bảng. Trường khóa chính trong các bảng ở Hình 2.1 có hình chiếc chìa khóa ở bên trái. Để ý rằng bảng tblInvSuptblInvoiceLine có khóa chính bao gồm 2 trường. Kiểu khóa chính chứa 2 trường trở lên được gọi là khóa chính phức hợp (composite primary key).

Hệ cơ sở dữ liệu ở Hình 2.1 lưu 8 thuộc tính giao dịch vào bảng tblInvoice và hầu như vô hạn thuộc tính vào các bảng khác. Chẳng hạn, nếu giao dịch mua bán gồm 20 mặt hàng khác nhau, bảng tblInvoiceLine sẽ lưu 60 thuộc tính (20 thuộc tính số lượng Quantity, 20 thuộc tính đơn giá UnitPrice, và 20 thuộc tính phần trăm giảm giá Discount) cho giao dịch đó. Hãy so sánh điều này với thông tin lưu trong mục bút toán kép. Mục bút toán kép thậm chí không cho biết có bao nhiêu mặt hàng trong hóa đơn, cũng chẳng cho biết tí gì về các mặt hàng đó.

Hệ cơ sở dữ liệu kế toán không những lưu nhiều thuộc tính hơn hệ bút toán kép, mà còn lưu hiệu quả hơn. Một đặc trưng chính của phần mềm cơ sở dữ liệu quan hệ chẳng hạn Microsoft Access là cho phép các thiết kế bảng giảm bớt hay loại bỏ việc lưu thông tin thừa.Với cơ sở dữ liệu thông tin mua bán ở Hình 2.1, hãy xét những gì được lưu trong mỗi bảng, các bảng liên kết với nhau ra sao, và làm sao trích thông tin từ hệ thống mua bán này.

Khóa chính của tblInvoice là trường InvoiceID. Những thuộc tính bán hàng khác được lưu trong bảng này là thời điểm tạo hóa đơn InvoiceDate, thời điểm khách hàng đặt mua OrderDate, mã đơn mua hàng của khách hàng CustomerPO, và mã tình trạng thuế TaxStatusID (sỉ hay lẻ). Các trường khác trong tblInvoice là những trường khóa ngoại. Access, như nhiều gói phần mềm cơ sở dữ liệu quan hệ khác, sẽ dùng liên kết giữa trường khóa chính và trường khóa ngoại tương ứng trong các bảng khác để duy trì mối liên kết giữa các thuộc tính với nhau. Các khóa ngoại ở Hình 2.1 thể hiện liên kết từ tblInvoice đến những bảng khác chứa thông tin mua bán.

Các liên kết khóa ngoại giúp kế toán viên tránh việc ghi thông tin nhiều lần. Chẳng hạn, trường khóa ngoại đầu tiên trong tblInvoice là CustomerID, liên kết tblInvoice với tblCustomer. Thay vì lưu tên khách hàng, địa chỉ, và thông tin khác vào trong tblInvoice mỗi khi tạo một hóa đơn mới, thiết kế cơ sở dữ liệu này giúp bạn lưu một lần thông tin của từng khách hàng và liên kết nó với từng giao dịch mua bán bằng cách chỉ cần thêm một trường trong tblInvoice, là CustomerID. Một khóa ngoại khác trong tblInvoice là EmployeeID. EmployeeID liên kết từng giao dịch mua bán với một nhân viên cụ thể trong tblEmployee. Khóa ngoại ShipperID trỏ đến một công ty vận chuyển cụ thể, thông tin về công ty đó được lưu trong bảng tblShippers.

Ngoài việc liên kết bảng, khóa ngoại còn có thể thực hiện chức năng kiểm soát lỗi. Chẳng hạn, tblStates chứa thuế suất ở mỗi bang. Nếu thuế suất được nhập trực tiếp vào tblInvoice, mỗi lần nhập thì nhân viên phải xác định bang của khách hàng rồi tra vào biểu thuế bán hàng để biết được thuế suất đúng. Việc dùng khóa ngoại - CustState trong tblCustomer và CustomerID trong tblInvoice - sẽ loại bỏ khả năng phá hỏng cơ sở dữ liệu mua bán do dữ liệu sai.

Các bảng tblInvoicetblInvoiceLine nối với nhau qua khóa InvoiceID. Bảng tblInvoiceLine liên kết với bảng tồn kho tblInventory qua cặp khóa InventoryID ở cả hai bảng. Bạn có thể đã biết trước đây khi làm việc với Microsoft Access, cách duy nhất liên kết hai bảng có mối quan hệ nhiều-nhiều là thông qua một bảng-quan-hệ (relationship table). Trong một giao dịch mua bán, mỗi hóa đơn có thể có nhiều mặt hàng trong kho. Tương tự, từng mặt hàng trong kho có thể xuất hiện trên nhiều hóa đơn khác nhau. Trong hệ thống mua bán này, tblInvoiceLine là bảng-quan-hệ nhằm mô hình mối quan hệ nhiều-nhiều giữa tblInvoicetblInventory. Khóa chính phức hợp của nó gồm 2 trường liên kết với các khóa chính thuộc 2 bảng tham gia vào mối quan hệ này.

Để ý rằng hệ cơ sở dữ liệu chỉ ghi nhận một vài hạng mục mà hệ bút toán kép ghi nhận. Hệ cơ sở dữ liệu ghi trực tiếp thời điểm mua bán, mã khách hàng, và bản chất giao dịch mua bán. Hệ cơ sở dữ liệu không ghi trực tiếp giao dịch là khoản nợ phải thu. Vì giao dịch mua bán cấu thành vế trái của tài khoản nợ, việc lưu thông tin vào các bảng ở Hình 2.1 là đủ đối với hệ cơ sở dữ liệu kế toán.

Để tính trị giá hóa đơn - trị giá mà hệ bút toán kép ghi 2 lần trong mục bút toán - kế toán viên cơ sở dữ liệu sẽ thi hành một truy vấn liên kết tblInvoice với tblInvoiceLine và với tblStates. Truy vấn nhận về số lượng Quantity và đơn giá UnitPrice ứng với từng InventoryID trong tblInvoiceLine. Truy vấn còn nhận về thuế suất StateTaxRate từ tblStates. Rồi truy vấn nhân Quantity với UnitPrice và với (1 - Discount) cho từng InventoryID, giá trị này thường được gọi là trị giá trên dòng (line extension), rồi cộng các trị giá trên dòng lại với nhau. Sau đó truy vấn nhân tổng các trị giá trên dòng với StateTaxRate ứng với bang của khách hàng từ tblStates. Cuối cùng thì truy vấn cộng các trị giá trên dòng với tiền thuế mua hàng để được trị giá hóa đơn.

Mặc dù lý thuyết cơ sở dữ liệu chống việc lưu trường tính toán vào cơ sở dữ liệu quan hệ, cơ sở dữ liệu kế toán thỉnh thoảng lưu kết quả trung gian chẳng hạn trị giá hóa đơn. Kế toán viên cố tình vi phạm các qui tắc cơ sở dữ liệu nghiêm ngặt nhằm tăng hiệu quả của những cơ sở dữ liệu có số lượng giao dịch lớn. Ngoài ra, giá trị trung gian còn phục vụ cho việc kiểm soát nội bộ qua việc duy trì kết quả tính toán dựa trên thông tin có trong cơ sở dữ liệu vào thời điểm xử lý giao dịch. Tuy nhiên, kế toán viên sẽ cố gắng tránh càng nhiều càng tốt việc lưu trữ trường tính toán.

Hệ cơ sở dữ liệu kế toán có thể làm tất cả những gì mà hệ bút toán kép làm và nhiều hơn thế. Kế toán viên có thể dùng các bảng cơ sở dữ liệu ở Hình 2.1 để tính trị giá hóa đơn đồng thời phát sinh những ghi chép về nợ phải thu và số liệu báo cáo tài chính giống như bút toán và sổ cái đã cung cấp. Tuy nhiên, sức mạnh thật sự của việc dùng cơ sở dữ liệu quan hệ để lưu thông tin kế toán là khi người quản lý cần thông tin mà họ không biết có cần hay không vào thời điểm xây dựng hệ thống. Chẳng hạn, nếu người quản lý muốn biết số lượng mặt hàng màu xanh trong kho đã bán ra vào tháng 3 năm ngoái, bút toán và sổ cái trở nên vô dụng trong trường hợp này. Tuy nhiên, nhờ dùng cơ sở dữ liệu kế toán, kết toán viên có thể nhanh chóng trả lời cho người quản lý số lượng cũng như số tiền. Hệ cơ sở dữ liệu còn có thể phát sinh số lượng cũng như số tiền tính theo khách hàng và vị trí địa lý.

THỬ NGHIỆM

Hãy nghiên cứu Hình 2.1 và nhận diện các sự kiện thú vị về hoạt động mua bán hàng và những hoạt động liên quan đến mua bán của công ty mà bạn có thể phát hiện hay tính được bằng cách tìm kiếm trong các bảng cơ sở dữ liệu và kết hợp những thuộc tính thông tin mà chúng chứa.

Như bạn có thể thấy, với từng giao dịch, cơ sở dữ liệu quan hệ có khả năng ghi nhận thông tin nhiều hơn hệ bút toán kép truyền thống. Hệ cơ sở dữ liệu kế toán còn cung cấp mạng lưới thông tin linh hoạt, liên kết các biến cố kinh tế của công ty với nhau. Trong 2 phần tiếp theo, ta sẽ thảo luận một số ưu nhược điểm của việc dùng hệ quản trị cơ sở dữ liệu trong các ứng dụng kế toán.

Không có nhận xét nào:

Đăng nhận xét