Khóa (Key) là gì trong appsheet?

 


Appsheet là một nền tảng cho phép bạn tạo các ứng dụng di động từ các bảng tính hoặc cơ sở dữ liệu. Để tạo một ứng dụng trên appsheet, bạn cần có ít nhất một bảng dữ liệu chứa các thông tin cần thiết cho ứng dụng của bạn.
{tocify} $title={Mục lục}

Một khóa (key) là một cột trong bảng dữ liệu mà mỗi giá trị của nó là duy nhất và không thể trùng lặp. Khóa được sử dụng để xác định một cách duy nhất mỗi hàng trong bảng dữ liệu và cho phép bạn thực hiện các thao tác như thêm, sửa, xóa hay liên kết các bảng với nhau.

Khóa còn được gọi là ID (identifier) hoặc mã số. Khóa có thể là một số, một chữ cái, một từ hay một ký tự đặc biệt. Tuy nhiên, không phải loại data nào cũng có thể được sử dụng làm khóa. Các loại data không nên được sử dụng làm khóa là:

  • Data có thể thay đổi theo thời gian, ví dụ như ngày tháng, giờ, giá tiền…

  • Data có thể bị trùng lặp hoặc không duy nhất, ví dụ như tên, email, số điện thoại…

  • Data có độ dài quá lớn hoặc quá nhỏ, ví dụ như một đoạn văn bản, một ký tự…

Ví dụ, nếu bạn muốn tạo một ứng dụng quản lý khách hàng, bạn có thể có một bảng dữ liệu như sau:

Mã khách hàng

Tên khách hàng

Số điện thoại

Email

KH001

Nguyễn Văn A

0987654321

nguyenvana@gmail.com

KH002

Trần Thị B

0912345678

tranthib@gmail.com

KH003

Lê Văn C

0965432198

levan@gmail.com

KH004

Phạm Thị D

0943216785

phamthid@gmail.com

KH005

Hoàng Văn E

0976543219

hoangvan@gmail.com

Trong trường hợp này, bạn có thể chọn cột Mã khách hàng làm khóa cho bảng dữ liệu, vì mỗi mã khách hàng là duy nhất và không bị lặp lại. Bạn không nên chọn cột Tên khách hàng hay Email làm khóa, vì có thể có nhiều khách hàng có cùng tên hay email.

Để thiết lập khóa cho một cột trong appsheet, bạn cần vào phần Data > Columns > chọn bảng dữ liệu > chọn cột > chọn Key > Yes.

Sau khi thiết lập khóa cho một cột, bạn có thể sử dụng các tính năng của appsheet như tạo biểu mẫu nhập liệu, tạo biểu đồ thống kê, tạo quan hệ giữa các bảng hay tạo công thức tính toán.

Các loại khóa trong appsheet

Appsheet hỗ trợ ba loại khóa. Từ tốt nhất đến xấu nhất, các loại khóa này là:

  • Khóa tự nhiên (Natural keys)

  • Khóa do hệ thống tạo ra (System-generated keys)

  • Khóa dựa trên số thứ tự hàng (Row number keys) (không khuyến khích)

Khóa tự nhiên (Natural keys)

Nhiều bảng dữ liệu có một khóa tự nhiên, là một trường đơn hoặc một kết hợp của nhiều trường mà duy nhất xác định mỗi hàng trong bảng.

Khóa tự nhiên đơn cột (Natural single-column keys)

Bảng dữ liệu của bạn có thể có một trường chứa một giá trị duy nhất xác định mỗi hàng. Ví dụ, một bảng Nhân viên có thể có một trường Mã nhân viên chứa một mã nhân viên duy nhất. Khi có một trường như vậy, nó là một khóa lý tưởng.

Ví dụ:

Mã nhân viên

Tên nhân viên

Chức vụ

Lương

NV001

Nguyễn Văn A

Giám đốc

20 triệu

NV002

Trần Thị B

Kế toán

10 triệu

NV003

Lê Văn C

Nhân viên văn phòng

8 triệu

NV004

Phạm Thị D

Nhân viên bán hàng

7 triệu

NV005

Hoàng Văn E

Nhân viên kho

6 triệu

Trong bảng này, cột Mã nhân viên là một khóa tự nhiên đơn cột, vì nó chứa các giá trị duy nhất và không thay đổi theo thời gian.

Khóa do hệ thống tạo ra (System-generated keys)

Một số bảng dữ liệu không có khóa tự nhiên. Thay vào đó, bạn muốn hệ thống tạo ra một khóa duy nhất cho mỗi hàng mới.

Khóa ID hàng (Row ID key)

Một cách đơn giản để tạo ra một khóa do hệ thống tạo ra là sử dụng hàm UNIQUEID() trong thuộc tính Initial value của cột khóa. Hàm này sẽ tạo ra một giá trị văn bản duy nhất gồm 8 ký tự chữ và số cho mỗi hàng mới.

Ví dụ:

Mã sản phẩm

Tên sản phẩm

Giá tiền

7F8G9H0J

Bút bi xanh

5.000

K3L4M5N6

Bút chì đen

3.000

P1Q2R3S4

Bút lông đỏ

7.000

W5X6Y7Z8

Bút mực tím

10.000

C9D0E1F2

Bút chì màu

15.000

Trong bảng này, cột Mã sản phẩm là một khóa do hệ thống tạo ra bằng hàm UNIQUEID(). Cột này có Initial value là =UNIQUEID(), tức là tạo ra một giá trị văn bản duy nhất cho mỗi hàng mới.

Khóa tuần tự (Sequential keys)

Một số người dùng muốn có các khóa do hệ thống tạo ra theo thứ tự, ví dụ như 1, 2, 3… hoặc 1000, 1001, 1002… Các khóa tuần tự có thể phản ánh chính xác thứ tự mà các hàng được người dùng tạo ra lần đầu tiên. Tuy nhiên, appsheet hiện không hỗ trợ các khóa tuần tự vì các lý do sau:

  • Các khóa tuần tự có thể gây ra xung đột khi hai hoặc nhiều người dùng thêm hàng cùng lúc.

  • Các khóa tuần tự có thể gây ra lỗi khi người dùng thêm hàng khi ngoại tuyến.

Khóa ngẫu nhiên (Random keys)

Một phương án thay thế cho các khóa do hệ thống tạo ra theo thứ tự, là các khóa do hệ thống tạo ra ngẫu nhiên.

Appsheet hiện hỗ trợ hai cơ chế để tạo ra các khóa ngẫu nhiên:

  • Hàm UNIQUEID() tạo ra một giá trị văn bản duy nhất gồm 8 ký tự chữ và số.

  • Hàm RANDBETWEEN(lower-bound, upper-bound) tạo ra một giá trị số ngẫu nhiên giữa lower-bound và upper-bound.

Khóa dựa trên số thứ tự hàng (Row number keys) (không khuyến khích)

Nếu bạn không chỉ định một khóa, và appsheet không thể tự động tìm được một khóa tốt, appsheet sẽ mặc định sử dụng số thứ tự hàng trong bảng tính làm khóa (ví dụ _RowNumber). Số thứ tự hàng không phải là một khóa tốt. Nếu các hàng bị di chuyển hoặc xóa, hoặc nếu người dùng thêm hoặc xóa hàng đồng thời, số thứ tự hàng cho mỗi hàng sẽ thay đổi và không có cách nào cho appsheet để xác định duy nhất hàng. Trình biên tập sẽ cho cảnh báo nếu số thứ tự hàng được chọn làm khóa.

Tại sao không sử dụng công thức bảng tính?

Trong bảng tính, đôi khi bạn muốn có một cột ID được tính toán bằng công thức bảng tính. Ví dụ, công thức bảng tính có thể tăng giá trị trong hàng trước đó. Điều này không hoạt động cho các khóa bảng dữ liệu trong appsheet vì hai lý do. Thứ nhất, các khóa phải duy nhất và không đổi theo thời gian, nhưng điều đó không thể đảm bảo với công thức bảng tính. Thứ hai, phải có thể tính toán công thức khi ứng dụng hoạt động ngoại tuyến, nhưng điều đó không thể với công thức bảng tính.

Chọn khóa tự động

Khi bạn kết nối bảng dữ liệu với appsheet, appsheet sẽ cố gắng tìm một cột phù hợp để làm khóa. Appsheet sẽ ưu tiên các cột có các điều kiện sau:

  • Có giá trị duy nhất cho mỗi hàng

  • Không có giá trị rỗng

  • Không có công thức bảng tính

  • Không có app formula

  • Không có initial value

  • Có loại data là Text, Number, DateTime hoặc Time

Nếu appsheet không tìm được cột nào thỏa mãn các điều kiện trên, nó sẽ chọn cột đầu tiên trong bảng làm khóa và hiển thị cảnh báo.

Các loại cột không thể được sử dụng làm khóa

Các loại cột sau không thể được sử dụng làm khóa trong bảng dữ liệu của bạn:

  • Các loại cột thay đổi, bao gồm:

  • ChangeCounter

  • ChangeLocation

  • ChangeTimestamp

  • Color

  • List

  • Progress

  • Show

Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về khóa trong appsheet, cách chọn loại data cho khóa và cách sử dụng nó.

Nếu bạn muốn tìm hiểu về Appsheet và cách sử dụng Appsheet có thể tham gia nhóm Google Appsheet ở Facebook với link như sau: https://www.facebook.com/groups/googleappsheet 

Nếu bạn có thắc mắc hay góp ý gì, hãy để lại bình luận phía dưới. Cảm ơn bạn đã đọc! 

Nếu bạn muốn tìm một khóa học về Appsheet có thể tham khảo khóa học sau trên Unica.

Hòa Data

Chào các bạn, tôi là Hòa - chuyên gia phân tích dữ liệu, nhà phát triển ứng dụng AppSheet. Tôi rất mong được cùng hợp tác và phát triển với các doanh nghiệp để mang đến những giải pháp tối ưu nhất.

Đăng nhận xét

Mới hơn Cũ hơn