Bảng và Trường
Bảng là nền tảng của không gian làm việc Lotics. Mỗi bảng định nghĩa schema với các trường có kiểu dữ liệu, lưu trữ bản ghi (các dòng dữ liệu), và hỗ trợ nhiều chế độ xem: các góc nhìn được lọc và sắp xếp trên cùng một dữ liệu gốc. Mọi người làm việc trên cùng một bản ghi, nên không có bản riêng nào phải đối chiếu.
Cấu trúc Bảng
Một không gian làm việc Lotics chứa các bảng, và mỗi bảng có ba tầng:
- Trường định nghĩa schema — dữ liệu nào có thể lưu trữ và theo định dạng nào.
- Bản ghi chứa dữ liệu thực tế — mỗi dòng là một thực thể.
- Chế độ xem cung cấp các góc nhìn khác nhau trên dữ liệu — hiển thị bản ghi nào, theo thứ tự nào, với trường nào hiện.
Sự tách biệt này có nghĩa là bạn định nghĩa mô hình dữ liệu một lần và tạo bao nhiêu chế độ xem tùy ý theo nhu cầu của đội. Trường có kiểu dữ liệu và được xác thực. Khi bạn thêm trường Số, chỉ chấp nhận giá trị số. Khi bạn thêm trường Chọn, giá trị phải từ danh sách tùy chọn đã định nghĩa.
Bảng có thể chứa hàng chục ngàn bản ghi và vẫn hoạt động mượt mà. Query engine hỗ trợ lọc, sắp xếp và phân trang phía server, nên chế độ xem tải nhanh ngay cả trên tập dữ liệu lớn.
Các kiểu Trường
Lotics hỗ trợ 12 kiểu trường bao phủ toàn bộ phạm vi dữ liệu vận hành. Chọn đúng kiểu trường rất quan trọng cho các tính năng kế tiếp: trường Số cho phép tổng hợp rollup, và trường Liên kết bản ghi cho phép tra cứu và tổng hợp liên bảng.
| # | Kiểu trường | Kiểu nội bộ | Biến thể / Định dạng | Định dạng giá trị | Trường hợp sử dụng |
|---|---|---|---|---|---|
| 1 | Văn bản | text | Văn bản thường, URL/liên kết, Markdown | string | Tên, mô tả, ghi chú, URL, nội dung định dạng |
| 2 | Số | number | Số, Tiền tệ (mã ISO 4217), Phần trăm | number | Số lượng, giá cả, tỷ suất lợi nhuận, tỷ lệ hoàn thành |
| 3 | Ngày | date | Ngày, Ngày giờ, Khoảng ngày, Khoảng ngày giờ | string (ISO 8601) | Thời hạn, ngày giao hàng, lập lịch, theo dõi khoảng thời gian |
| 4 | Đúng/Sai | boolean | Checkbox đúng/sai | boolean | Cờ phê duyệt, trạng thái hoàn thành, bật/tắt hoạt động |
| 5 | Chọn | select | Chọn đơn, Chọn nhiều (multi: true) | string[] (khóa tùy chọn) | Trạng thái, ưu tiên, danh mục, thẻ |
| 6 | Thành viên | select_member | Một thành viên, Nhiều thành viên (multi: true) | string[] (ID thành viên) | Chủ sở hữu, người được gán, người kiểm duyệt |
| 7 | Liên kết bản ghi | select_record_link | Liên kết đến bảng khác, có thể đặt thành hai chiều | [{id, display}] | Vận chuyển-đến-khách hàng, hóa đơn-đến-đơn hàng |
| 8 | Tra cứu | lookup | Chỉ đọc, kéo giá trị từ bản ghi liên kết | unknown[] (mảng giá trị gốc) | Hiện tên khách hàng trên vận chuyển |
| 9 | Tổng hợp | rollup | Chỉ đọc, tổng hợp giá trị bản ghi liên kết | number | string | Tổng giá trị đơn hàng, thời gian giao hàng trung bình |
| 10 | Công thức | formula | Chỉ đọc, tính toán từ biểu thức | number | string | boolean | Biên lợi nhuận, số ngày đến hạn, nhãn có điều kiện |
| 11 | Tệp tin | files | Tài liệu, hình ảnh, PDF (nhiều tệp mỗi ô) | [{id, filename, mime_type}] | Hợp đồng, ảnh chụp, hóa đơn, chứng chỉ |
| 12 | Số tự tăng | autonumber | Chỉ đọc, tự tăng với tiền tố và số chữ số tùy chọn | string | Mã khách hàng, số phiếu, mã tham chiếu tuần tự |
Văn bản
Lưu trữ giá trị chuỗi. Ba định dạng hiển thị:
- Văn bản thường — mặc định, văn bản không định dạng.
- URL/liên kết — hiển thị dưới dạng liên kết có thể nhấn.
- Markdown — hỗ trợ nội dung định dạng (in đậm, danh sách, v.v.).
Có thể yêu cầu giá trị duy nhất giữa các bản ghi, ngăn trùng lặp.
Số
Lưu trữ giá trị số với định dạng hiển thị có thể cấu hình:
- Số — hiển thị số tiêu chuẩn.
- Tiền tệ — hiển thị với ký hiệu tiền tệ. Nhận mã tiền tệ ISO 4217 (ví dụ:
USD,VND,EUR). - Phần trăm — hiển thị dưới dạng giá trị phần trăm.
Ngày
Lưu trữ giá trị ngày và giờ dưới dạng chuỗi ISO 8601. Bốn định dạng:
- Ngày — chỉ ngày, ví dụ:
2024-01-15. - Ngày giờ — ngày và giờ, ví dụ:
2024-01-15T14:30. - Khoảng ngày — ngày bắt đầu và kết thúc, ví dụ:
2024-01-15/2024-01-20. - Khoảng ngày giờ — ngày giờ bắt đầu và kết thúc, ví dụ:
2024-01-15T09:00/2024-01-20T17:00.
Hỗ trợ cấu hình múi giờ sử dụng định danh múi giờ IANA (ví dụ: Asia/Ho_Chi_Minh, America/New_York).
Đúng/Sai
Checkbox đúng/sai. Nút bật/tắt đơn giản cho trạng thái nhị phân như cờ phê duyệt, trạng thái hoàn thành, hoặc bật/tắt hoạt động.
Chọn
Lựa chọn từ danh sách tùy chọn đã định nghĩa. Mỗi tùy chọn có:
- Một khóa (
opt_xxx) — định danh ổn định dùng trong lưu trữ dữ liệu. - Một tên — nhãn hiển thị mà người dùng thấy.
- Một màu — để phân biệt trực quan trong lưới.
Hai chế độ:
- Chọn đơn (mặc định) — chọn một tùy chọn mỗi lần.
- Chọn nhiều (
multi: true) — cho phép chọn nhiều tùy chọn.
Giá trị luôn được lưu dưới dạng mảng khóa tùy chọn, kể cả với chọn đơn. Giá trị chọn đơn có dạng ["opt_abc123"]. Không chọn gì là mảng rỗng [].
Thành viên
Gán thành viên trong không gian làm việc cho bản ghi. Hoạt động giống Chọn nhưng lấy từ danh sách thành viên không gian làm việc thay vì tùy chọn đã định nghĩa.
- Một thành viên (mặc định) — gán một người.
- Nhiều thành viên (
multi: true) — gán nhiều người.
Giá trị là mảng ID thành viên không gian làm việc.
Liên kết bản ghi
Liên kết đến bản ghi trong bảng khác, tạo đồ thị quan hệ trong không gian làm việc. Các hành vi chính:
- Hai chiều — tùy chọn. Bật đồng bộ hai chiều khi tạo trường thì Bảng Y có thêm trường ghép nối hiển thị liên kết ngược; không bật thì liên kết là một chiều.
- Trường hiển thị — cấu hình trường nào từ bảng liên kết được hiển thị cạnh liên kết.
Giá trị là mảng đối tượng {id, display}, trong đó display được tự động tính từ trường hiển thị của bản ghi liên kết.
Tra cứu
Trường tính toán chỉ đọc, kéo giá trị từ bản ghi liên kết qua trường Liên kết bản ghi. Nếu bảng Vận chuyển liên kết đến bảng Khách hàng, trường tra cứu trên Vận chuyển có thể hiển thị email, số điện thoại hoặc bất kỳ trường nào khác của khách hàng — mà không trùng lặp dữ liệu.
- Trả về mảng giá trị gốc với một phần tử cho mỗi bản ghi liên kết.
- Mỗi phần tử giữ nguyên kiểu của trường nguồn: tra cứu văn bản trả về
["Alice", "Bob"], tra cứu số trả về[100, 200]. - Cập nhật tự động khi dữ liệu nguồn thay đổi.
Tổng hợp
Trường tính toán chỉ đọc, tổng hợp giá trị từ các bản ghi liên kết. Nếu bảng Đơn hàng liên kết đến Dòng đơn hàng, tổng hợp trên Đơn hàng có thể tính tổng giá trị đơn (sum), số lượng mục (filled), hoặc dòng đơn lớn nhất (max).
Các phép toán khả dụng theo kiểu trường:
| Kiểu trường nguồn | Phép toán tổng hợp |
|---|---|
| Văn bản, Chọn, Thành viên, Tệp tin, Số tự tăng | empty, filled, percent_empty, percent_filled, unique, percent_unique |
| Liên kết bản ghi | empty, filled, percent_empty, percent_filled |
| Số | sáu phép toán đếm ở trên, cộng thêm sum, avg, median, min, max, range |
| Ngày | sáu phép toán đếm ở trên, cộng thêm earliest, latest, date_range |
| Đúng/Sai | checked, unchecked, percent_checked, percent_unchecked -- và không có phép nào khác |
| Công thức, Tổng hợp | tùy theo kiểu kết quả nó tính ra: nhóm số, nhóm ngày, hoặc nhóm đúng/sai |
| Tra cứu, Nút | không có -- hai kiểu này không thể làm nguồn tổng hợp |
Tổng hợp có thể lọc bản ghi liên kết trước khi tính. Bộ lọc sử dụng cùng hệ thống điều kiện với bộ lọc chế độ xem, nên bạn có thể chỉ tổng hợp các dòng đơn ở trạng thái hoặc khoảng ngày cụ thể.
Công thức
Trường tính toán chỉ đọc, đánh giá biểu thức tham chiếu các trường khác trong cùng bản ghi. Cú pháp biểu thức sử dụng tên trường trong ngoặc nhọn:
{Price} * {Quantity}
Hỗ trợ số học, xử lý chuỗi, tính toán ngày và logic có điều kiện. Các kiểu đầu ra:
- Số — kết quả số học như
{Revenue} - {Cost}. - Văn bản — phép toán chuỗi và nối chuỗi.
- Ngày và Ngày giờ — tính toán ngày.
- Đúng/Sai — biểu thức có điều kiện.
Kiểu đầu ra được tự động suy luận từ biểu thức và quyết định phép toán tổng hợp nào khả dụng khi công thức được dùng làm nguồn tổng hợp.
Lỗi tạo chuỗi chẩn đoán ngay trong ô, ví dụ #ERROR: {Total} is not a field on this table.
Tệp tin
Đính kèm tài liệu, hình ảnh, PDF và các tệp khác. Nhiều tệp mỗi ô. Mỗi tệp đính kèm lưu tên tệp, kiểu MIME và tham chiếu lưu trữ. Tệp được phục vụ qua một URL có xác thực và không hết hạn, nên bạn có thể lưu URL đó vào tài liệu hay bản ghi và nó vẫn dùng được.
Số tự tăng
Mã định danh tuần tự chỉ đọc, được cấp khi bản ghi được tạo và không sửa tay được. Bạn cấu hình tiền tố và số chữ số đệm số 0 (KH- với 3 chữ số cho ra KH-001), hoặc một mẫu với các thẻ thay thế -- HM-{YEAR}-{N:3} cho ra HM-2026-001. Đổi tiền tố hoặc số chữ số sẽ định dạng lại mọi giá trị đã có; đổi mẫu thì không, vì các thẻ ngày trong mẫu sẽ làm mất ngày tạo gốc.
Bản ghi
Bản ghi là các dòng dữ liệu riêng lẻ trong bảng. Dữ liệu mỗi bản ghi là đối tượng khóa-giá trị trong đó:
- Khóa là khóa trường (ví dụ:
fld_abc123) — định danh ổn định không bao giờ thay đổi ngay cả khi bạn đổi tên trường. - Giá trị tuân theo quy tắc của mỗi kiểu trường.
Ví dụ dữ liệu bản ghi:
| Trường | Khóa | Giá trị ví dụ |
|---|---|---|
| Tên công ty (văn bản) | fld_name | "Acme Corp" |
| Doanh thu (số, tiền tệ) | fld_revenue | 150000 |
| Đang hoạt động (đúng/sai) | fld_active | true |
| Trạng thái (chọn) | fld_status | ["opt_active"] |
| Được gán cho (thành viên) | fld_assigned | ["mbr_abc123"] |
| Khách hàng (liên kết bản ghi) | fld_customer | [{id: "rec_456", display: "Acme Corp"}] |
| Email khách hàng (tra cứu) | fld_email | ["[email protected]"] |
| Ngày thành lập (ngày) | fld_founded | "2024-01-15" |
| Thời hạn hợp đồng (khoảng ngày) | fld_period | "2024-01-15/2024-12-31" |
Bản ghi cũng theo dõi timestamp created_at và updated_at, và có thể được khóa. Khóa áp cho cả bản ghi chứ không cho từng trường: ai xem được vẫn mở được, nhưng mỗi chỉnh sửa trở thành một yêu cầu thay đổi để người duyệt của bảng xét trước khi áp dụng.
Trường tính toán
Ba kiểu trường — Tra cứu, Tổng hợp, và Công thức — được tính toán tự động. Chúng chỉ đọc: bạn không bao giờ nhập giá trị thủ công. Thay vào đó, chúng lấy giá trị từ bản ghi liên kết, phép tổng hợp hoặc biểu thức.
Lan truyền phụ thuộc: Trường tính toán tạo thành đồ thị phụ thuộc. Khi bản ghi nguồn thay đổi, mọi trường tính toán phụ thuộc vào nó sẽ tính lại. Quá trình lan truyền này tự động:
- Thay đổi số tiền trên dòng đơn hàng...
- Cập nhật trường tra cứu hiển thị số tiền đó trên đơn hàng cha...
- Cập nhật trường tổng hợp tính tổng tất cả số tiền dòng...
- Cập nhật trường công thức tính biên lợi nhuận...
- Giá trị đã lưu là thứ mọi lần đọc sau đó trả về — không client nào phải tính lại.
Giá trị trường tính toán được lưu trữ tại thời điểm ghi (không tính khi đọc), nên truy vấn và bộ lọc trên trường tính toán rất nhanh.
Liên kết bản ghi
Trường Liên kết bản ghi kết nối dữ liệu giữa các bảng. Bản ghi vận chuyển liên kết đến bản ghi khách hàng, liên kết đến bản ghi hóa đơn, liên kết đến bản ghi thanh toán.
Các hành vi chính:
- Nền tảng cho trường tính toán — trường Tra cứu và Tổng hợp duyệt qua các liên kết này để kéo và tổng hợp dữ liệu. Không có liên kết, các trường tính toán này không có gì để duyệt qua.
- Truy cập quy trình liên bảng — quy trình được kích hoạt bởi thay đổi trạng thái vận chuyển có thể đọc bản ghi khách hàng liên kết để lấy địa chỉ email, rồi đọc bản ghi hóa đơn liên kết để đính kèm PDF.
Chế độ xem
Mỗi bảng hỗ trợ nhiều chế độ xem với cấu hình độc lập. Tất cả chế độ xem chia sẻ cùng dữ liệu gốc — thay đổi trong một chế độ xem xuất hiện trên tất cả các chế độ xem khác.
Cấu hình chế độ xem
| Tính năng | Mô tả |
|---|---|
| Bộ lọc | Cấu trúc cây với nhóm AND/OR và điều kiện theo trường. Mỗi kiểu trường có bộ toán tử riêng (bằng, chứa, lớn hơn, rỗng, v.v.). |
| Sắp xếp | Sắp xếp nhiều trường. Mỗi quy tắc sắp xếp chỉ định trường, hướng (tăng dần/giảm dần) và vị trí giá trị rỗng có thể cấu hình (rỗng đầu hoặc cuối). |
| Cấu hình trường | Hiển thị/ẩn trường, chiều rộng cột và thứ tự hiển thị. Mỗi chế độ xem có thể hiện các trường khác nhau theo sắp xếp khác nhau. |
| Cột cố định | Ghim cột từ phía trái lưới. Cột cố định vẫn hiển thị khi cuộn ngang. |
| Quy tắc màu | Tô màu dòng có điều kiện dựa trên giá trị trường. Định nghĩa ở cấp bảng và áp dụng trên tất cả chế độ xem. |
| Hàng tổng kết | Phép tổng hợp hiển thị ở cuối chế độ xem — đếm, tổng, trung bình, min, max, v.v. Cấu hình theo trường. |
Cách các đội khác nhau sử dụng chế độ xem
Quản lý vận hành thấy tất cả vận chuyển sắp xếp theo thời hạn với mục quá hạn được tô đỏ. Đội kinh doanh chỉ thấy deal được gán cho họ. Đội tài chính thấy hóa đơn lọc theo trạng thái chưa thanh toán.
Dữ liệu dùng chung và độ mới
Nhiều thành viên cùng làm việc trên một bảng. Không có nút lưu — chỉnh sửa được ghi ngay khi bạn thực hiện, và không ai giữ một bản riêng để đối chiếu về sau. Trường tính toán được tính khi ghi, nên thay đổi ở giá trị nguồn đã lan qua toàn bộ đồ thị phụ thuộc trước khi có ai đọc tới.
Màn hình làm mới khi bạn quay lại ứng dụng, khi kết nối được nối lại, và sau mỗi thao tác làm thay đổi dữ liệu — nên thứ bạn thấy phản ánh đúng những gì bạn và các tự động hóa vừa ghi. Chỉnh sửa của đồng nghiệp tự hiện lên trong màn hình đang mở, không cần làm mới. Với đội vận hành, khác biệt đáng quan tâm nằm ở đây: dữ liệu là dùng chung và chỉ có một nguồn, nên một màn hình để mở ở góc phòng vẫn bám sát những bản ghi nó đang hiển thị.
Câu hỏi thường gặp
Một bảng có thể có bao nhiêu trường?
Không có giới hạn cứng về số trường mỗi bảng. Trong thực tế, bảng hoạt động tốt với hơn 100 trường. Nếu bảng vượt quá mức đó, hãy cân nhắc tách thành các bảng liên kết để tổ chức tốt hơn.
Tôi có thể thay đổi kiểu trường sau khi đã có dữ liệu không?
Có. Lotics hỗ trợ chuyển đổi kiểu trường cho các kiểu tương thích — ví dụ, chuyển trường Văn bản sang Chọn. Dữ liệu được bảo toàn và chuyển đổi khi có thể; giá trị nào kiểu đích không chứa được thì bị xóa. Số tự tăng là ngoại lệ: không chuyển được vào hay ra khỏi kiểu này.
Điều gì xảy ra với trường tính toán khi tôi xóa bản ghi liên kết?
Khi bản ghi liên kết bị xóa, trường tra cứu tham chiếu đến nó trả về giá trị rỗng, và trường tổng hợp tính lại loại trừ bản ghi đã xóa. Tham chiếu liên kết tự động bị gỡ khỏi cả hai phía quan hệ. Trường công thức phụ thuộc vào tra cứu hoặc tổng hợp cũng tính lại.
Các chế độ xem khác nhau có thể có quyền lọc khác nhau không?
Chế độ xem kiểm soát bản ghi nào hiển thị qua bộ lọc, nhưng không thực thi quyền truy cập -- thành viên luôn có thể tự tạo một chế độ xem không lọc. Quyền truy cập được thực thi ở nơi khác: chia sẻ bảng quyết định ai vào được bảng, và quy tắc hiển thị cấp hàng của bảng được áp cho mọi truy vấn, nên bản ghi ngoài phạm vi của một thành viên vẫn bị ẩn dù họ tạo chế độ xem nào.
Trường tính toán xử lý phụ thuộc vòng tròn như thế nào?
Vòng tròn được phát hiện khi tính giá trị chứ không phải khi cấu hình trường: ô hiển thị chuỗi chẩn đoán #ERROR: Circular dependency detected for formula "…", nêu tên công thức nằm trong vòng lặp.
Sự khác biệt giữa Chọn đơn và Chọn nhiều là gì?
Chúng là cùng kiểu trường (select) với nút chuyển đổi cấu hình. Khi multi là false (mặc định), người dùng chọn một tùy chọn. Khi multi là true, người dùng có thể chọn nhiều tùy chọn. Trong cả hai trường hợp, giá trị lưu trữ luôn là mảng khóa tùy chọn — chọn đơn chỉ yêu cầu mảng chứa tối đa một khóa.
Trường ghép nối Liên kết bản ghi hoạt động thế nào?
Khi bạn tạo trường Liên kết bản ghi trong Bảng A trỏ đến Bảng B, bật đồng bộ hai chiều sẽ cho Bảng B một trường ghép nối trỏ ngược về Bảng A. Khi đó liên kết bản ghi theo một hướng tự động cập nhật hướng còn lại, và xóa liên kết từ bất kỳ phía nào sẽ gỡ khỏi cả hai. Khóa trường ghép nối được lưu trong thuộc tính paired_field_key. Không bật đồng bộ hai chiều thì liên kết là một chiều và Bảng B không có gì thêm.