Trong lĩnh vực khoa học máy tính, thuật ngữ bản ghi (hoặc mẫu tin, cấu trúc, struct, hay dữ liệu phức hợp, tiếng Anh là record) đề cập đến một dạng cấu trúc dữ liệu cơ bản. Trong cơ sở dữ liệu hoặc bảng tính, bản ghi thường được gọi là một 'hàng'.
Bản ghi là một tập hợp các trường, có thể có các loại dữ liệu khác nhau, thường được tổ chức theo số lượng và thứ tự cố định. Các trường trong bản ghi cũng có thể được gọi là thành viên, đặc biệt trong lập trình hướng đối tượng; hoặc được gọi là các phần tử, mặc dù thuật ngữ này có thể gây nhầm lẫn với các phần tử trong tập hợp.
Chẳng hạn, một ngày có thể được lưu trữ dưới dạng bản ghi với trường năm dưới dạng số, trường tháng dưới dạng chuỗi, và trường ngày trong tháng. Một hồ sơ nhân sự có thể chứa tên, mức lương và cấp bậc. Ví dụ về bản ghi hình tròn có thể bao gồm tâm và bán kính - và tâm của đường tròn có thể được biểu diễn dưới dạng bản ghi điểm với các tọa độ x và y.
Các bản ghi khác với các mảng ở chỗ số lượng trường trong bản ghi thường được cố định, mỗi trường có tên riêng và có thể chứa các loại dữ liệu khác nhau.
Kiểu bản ghi là kiểu dữ liệu mô tả các giá trị và biến trong đó. Hầu hết các ngôn ngữ lập trình hiện đại cho phép tạo ra các loại bản ghi mới. Định nghĩa loại bản ghi bao gồm việc chỉ định kiểu dữ liệu cho từng trường và gán cho chúng một mã định danh (tên hoặc nhãn) để truy cập. Trong lý thuyết loại, các loại sản phẩm (không có tên trường) thường được ưa chuộng vì tính đơn giản của chúng, nhưng các loại bản ghi cũng được nghiên cứu qua các ngôn ngữ như System F-sub. Vì các bản ghi lý thuyết loại có thể chứa các trường phân loại lớp thứ nhất ngoài dữ liệu, chúng có thể hỗ trợ nhiều tính năng của lập trình hướng đối tượng.
Bản ghi có thể được lưu trữ trong bất kỳ phương tiện nào, từ bộ nhớ chính đến thiết bị lưu trữ lớn như băng từ hoặc đĩa cứng. Chúng là thành phần cơ bản của hầu hết các cấu trúc dữ liệu, đặc biệt là cấu trúc dữ liệu liên kết. Nhiều tệp máy tính được tổ chức dưới dạng các mảng của các bản ghi logic, thường được nhóm lại thành các bản ghi vật lý lớn hơn hoặc các khối để tối ưu hóa hiệu suất.
Các tham số của hàm hoặc thủ tục thường được coi là các trường trong một biến bản ghi; và các đối số truyền vào hàm có thể được coi là một giá trị bản ghi được gán cho biến đó trong thời điểm gọi. Thêm vào đó, trong ngăn xếp cuộc gọi được sử dụng để thực hiện các cuộc gọi thủ tục, mỗi mục nhập là một bản ghi kích hoạt hoặc khung cuộc gọi, chứa các tham số thủ tục, biến cục bộ, địa chỉ trả về và các trường cục bộ khác.
Trong ngôn ngữ lập trình hướng đối tượng, một đối tượng cơ bản là một bản ghi chứa các phương thức chuyên biệt để xử lý bản ghi đó; các loại đối tượng là các dạng chi tiết của các loại bản ghi. Thực tế, trong nhiều ngôn ngữ hướng đối tượng, bản ghi chỉ là một trường hợp đặc biệt của đối tượng và được gọi là cấu trúc dữ liệu đơn giản (PODS), để phân biệt với các đối tượng sử dụng các tính năng hướng đối tượng (OO).
Một bản ghi có thể được xem như là một phiên bản tương tự của bộ (tuple) trong toán học, mặc dù một bộ có thể hoặc không thể được coi là bản ghi và ngược lại, tùy thuộc vào quy ước và ngôn ngữ lập trình cụ thể. Tương tự, một loại bản ghi có thể được coi là một dạng tương đương với tích Descartes của hai hoặc nhiều tập hợp toán học hoặc là sự triển khai của một loại tích trừu tượng trong một ngôn ngữ cụ thể.
