DATABASE VÀ REFERENCE LÀ GÌ?
Bài 04: Ref và update dữ liệu cho các bảngTrong lĩnh vực công nghệ thông tin, "database" (cơ sở dữ liệu) là một tập hợp các dữ liệu được tổ chức theo một cấu trúc nhất định, cho phép truy cập và quản lý các thông tin một cách hiệu quả.
Trong Appsheet, kiểu dữ liệu "ref" (reference) cho phép bạn tạo mối quan hệ giữa các bảng khác nhau bằng cách chỉ định một cột trong bảng này chứa một giá trị tương ứng với một hàng trong bảng khác.
Để sử dụng kiểu dữ liệu "ref", bạn cần phải tạo mối quan hệ giữa các bảng trước khi sử dụng nó trong bảng khác.
Khi sử dụng kiểu dữ liệu "ref", bạn cũng có thể sử dụng các hàm liên quan đến quan hệ (ví dụ: RELATED) để truy xuất dữ liệu từ bảng liên quan.
Để update các thông tin từ bảng con, bạn có thể tạo một cột là "update" sau đó tạo một action là update và set value cho cột "update" này bằng =now(). Việc này sẽ tự động update tất cả các dòng khi cột "update" thay đổi.
Khi muốn sử dụng thông tin có sẵn từ bảng cha, bạn chỉ cần viết hàm như sau: [key_id].[Cột của bảng cha cần lấy].
💡 Kiểu liên kết trong Appsheet giữa các bảng là kiểu liên kết 1-n hoặc 1-, tức là liên kết một nhiều. Điều này có nghĩa là một hàng trong bảng này có thể liên kết với nhiều hàng trong bảng khác.*
Ví dụ, trong ví dụ trên, bạn có thể thấy rằng một khách hàng có thể có nhiều đơn hàng. Bảng "Khách hàng" và bảng "Đơn hàng" liên kết với nhau bằng cột "kh_id", cột này được gọi là khóa ngoại hoặc foreign key. Khóa ngoại là một cột trong bảng con (ở trong ví dụ là bảng "Đơn hàng") mà chứa giá trị khóa chính của bảng cha (ở trong ví dụ là bảng "Khách hàng"). Nó được sử dụng để liên kết các bảng với nhau và cho phép dữ liệu được quản lý một cách hợp lý.
Ví dụ, nếu một khách hàng bị xóa khỏi bảng "Khách hàng", tất cả các đơn hàng liên kết với khách hàng đó sẽ được xóa theo.
CÁCH LIÊN KẾT TRONG APPSHEET
Khi liên kết từ bảng này với bảng khác ta sẽ dùng kiểu dữ liệu ref
⇒ Trong phần liên kết sẽ có một tùy chọn ***Is a part of?***
Tùy chọn này cho phép người dùng xóa các dòng dữ liệu liên quan hay không.
Ví dụ ở bảng trên (bảng 01), nếu chúng ta chọn vào tùy chọn Is a part of? Thì khi xóa khách hàng KH02 ở table “Khách hàng” thì toàn bộ đơn hàng của khách hàng KH02 ở table “Đơn hàng” sẽ bị xóa theo và không thể khôi phục lại.
❓ Hãy suy nghĩ về việc lưu trữ thông tin ở mục Khách hàng và Đơn hàng, vậy nếu chúng ta liên kết khách hàng và đơn hàng qua ID, vậy nếu muốn sử dụng thông tin từ khách hàng đó như địa chỉ giao hàng, người liên hệ thì chúng ta sẽ làm như thế nào?
Khi muốn sử dụng thông tin có sẵn từ bảng cha, chúng ta chỉ cần viết hàm như sau:
[key_id].[Cột của bảng cha cần lấy]
Ví dụ. Muốn lấy “ten” ở bảng cha ta chỉ cần gõ [kh_id].[ten]
Vậy khi cần update dữ liệu cần update từ nhiều cấp ta dùng công thức sau [bang_1_id].[bang_2_id].[bang_3_id]
⚠️ Khi update một dòng ở bảng cha, các dòng ở bảng con sẽ không tự động thay đổi.
Cách update các thông tin từ bảng con:
💡 Nguyên tắc update trong Appsheet, trong formula nếu một cột thay đổi thì tất cả các cột đều thay đổi.
Để update một dòng dữ liệu chúng ta chỉ cần tạo thêm một cột là ***update*** sau đó tạo một action là update và set value cho cột update này bằng =now()
⇒ Vậy khi cột này update thì tất cả các dòng dữ liệu sẽ được update.
Để update từ bảng khác tới bảng đơn hàng chúng ta sử dụng thêm một action đó là excute an action on a set of rows. Action này sẽ thực hiện một loạt các action trên các dòng được chỉ định
Trong việc update dữ liệu, để update dữ liệu nhanh nhất chúng ta có thể gắn action này ở form.
Tuy vậy việc gắn action ở form này sẽ không chạy khi chúng ta deleted dòng vì vậy cần tạo một automation để update khi xóa dữ liệu.