Skip to main content

Dataset Guide

The company story introduces orders, deliveries, invoices, and payments. The dataset stores information about those familiar business events in tables. Read this introduction before opening a file and keep it nearby during your first exercise.

Start with One Record​

A record is one stored row describing something. A customer record describes a customer. A sales-order record describes an order. A shipment record describes a shipment. The row's meaning determines which questions it can answer.

A table groups records of the same kind. The customer table therefore contains customer rows, while the sales-order table contains order rows. Columns hold the attributes of each record, such as an order date or a customer identifier.

The technical table names are Customer, SalesOrder, and Shipment. Names help you locate the records, but start by saying what one row represents. Analysts call this the table's grain.

Read the Document Header and Its Lines​

Many business documents have information about the whole document and information about individual items on it. An order's customer, date, and overall amount belong to its header. The products, quantities, and line amounts belong to its lines.

The dataset stores those two levels separately. SalesOrder holds one header per order, while SalesOrderLine holds the individual ordered lines. Each line carries the identifier of its parent order.

Begin with order SO-2024-000011: SalesOrderID 11 has two lines and an order total of 11,397.78. Read the header and its lines together to distinguish the whole order from the products it contains.

If you display the header beside each line, the order number and total appear twice. There are still two lines belonging to one order. Summing the repeated header total would count the order twice.

Before calculating, decide whether you are counting orders, lines, or another event. Use header amounts at header grain and line amounts at line grain. Keep the original level visible when combining information.

Connect Records Through Their Keys​

An identifier, often called a key, distinguishes a record. The order's SalesOrderID identifies its header and connects each line to its parent order. The identifier is a link, not a quantity to add.

Other relationships connect different stages of work. A goods invoice line can identify the shipment line it bills. A cash application identifies the invoice to which received money was allocated. Those relationships let you ask specific questions about fulfillment and settlement.

A relationship does not always mean one row matches one other row. An order can have several lines and shipments, just as an invoice can have several cash applications. Combining these records without considering their grain can repeat quantities or amounts.

Business diagrams help you understand the purpose of a relationship. For exact columns, consult Schema Reference. An arrow between activities does not by itself specify a database join.

Follow a Small Goods-Sale Trace​

Begin with an order line and ask what happened to the requested goods. Find its shipment evidence, then the goods invoice line linked to that shipment. Finally, examine the invoice's cash applications.

QuestionRecords to inspect
What was ordered?Order header and ordered line
What left inventory?Shipment header and shipped line
What was billed?Invoice header and billed line
What settled the invoice?Cash applications and their receipts
What accounting was posted?General-ledger entries for the relevant events

Keep the dates as well as the identifiers. A shipment and invoice can be related while belonging to different dates. A later cash application may explain eventual settlement without reducing the invoice balance at an earlier cutoff.

You do not need the whole database for this first trace. Add records because they answer a question, rather than joining every available table.

Classify the Posting Route​

Classify the selected event at its current step, rather than assigning a permanent accounting category to its table.

Posting routeExample and evidence needed
No accounting effect at this stepEntering a sales order records a commitment. Shipment and invoicing require their own event evidence.
Operational evidence for a later postingApproved time and labor allocations support payroll or billing. Their approval does not independently recognize revenue or wages.
Accounting event carried through a linked journal or other sourceA fixed-asset financing event identifies a journal. Retrieve that journal's complete voucher before explaining its effect.
Direct posting source, including a summaryAn invoice, cash application, or PayrollSummary identifies posted ledger rows. Confirm the source type, identifier, date, and grain.

Finding no ledger rows under a table's name does not establish that its event has no accounting effect. The Posting Reference follows two events through their stored journal links. Use that reference to distinguish a new posting from support for an existing posting.

Distinguish Plans, Events, and Accounting​

Some records describe expectations or setup. An item record describes a product, a forecast describes expected demand, and a purchase order records a supplier commitment. These provide context without necessarily creating an accounting entry.

Other records describe execution or settlement: goods arrive, products ship, payroll is posted, or an invoice is settled. Each event has its own accounting treatment in this model.

The general ledger, stored in GLEntry, holds the posted debit and credit detail. Source fields identify the event behind a posting. The Posting Reference explains those mappings, including cases where a source-type label differs from the table name.

Start with the event, then inspect its accounting. Trying to interpret a ledger total without knowing its sources can mix ordinary activity, estimates, settlement, and annual closing entries.

Find the Next Group of Records​

The same approach extends beyond sales:

  • Purchasing: distinguish the request, supplier commitment, receipt, invoice, and payment.
  • Manufacturing: follow a work order into material issues, completions, and close.
  • Design services: connect an engagement with approved time and monthly billing.
  • Payroll: separate approved time, the payroll register, employee payments, and remittances.
  • Finance: follow journal headers into posted detail and relevant settlement support.

The optional reference below retains the full inventory and technical navigation paths. You can return to it after identifying the business question and the document you need.

Check Your Understanding​

An order header appears beside each of its lines. Can you sum the repeated order total?

No. The display repeats header information to provide context for each line. Aggregate at the grain appropriate to your question, keeping one header amount per order or using the relevant line amounts.

Next Steps​

Continue to Meet the Records, the first guided tutorial. You will find a customer, read an order, and then build a source-to-ledger trace one step at a time.

Optional Reference​

Expand the reference that answers your current question. Use these summaries to locate related records, the schema to confirm their keys, and the posting reference to establish accounting rules.

Look up the table inventory and document structure

What the Dataset Contains​

The database contains 82 user tables across nine areas. Use the groups below to locate the records needed for your question.

The main operating window is 2024–2026. Supplier disbursements continue into early 2027 to settle prior obligations. State the reporting date and whether subsequent settlement is included when interpreting balances or payment timing.

AreaWhat it coversCount
Accounting coreChart of accounts, journals, and posted ledger detail3
Fixed assets and financingAsset register, asset lifecycle events, debt agreements, and payment schedules4
Order-to-cashCustomers, pricing, goods and service orders, approved service billing, shipments, invoices, commissions, cash, returns, credits, and refunds27
Procure-to-payRequisitions, purchase orders, receipts, supplier invoices, and disbursements9
ManufacturingBOMs, routings, work centers, work orders, issues, completions, and close14
Payroll and timeShifts, rosters, absences, overtime approvals, punches, approved daily time, payroll, and remittances14
Master dataItem, warehouse, and employee records3
Organizational planningCost centers, budget summary, and budget detail3
Demand planning and MRPForecasting, inventory policy, recommendations, MRP, and rough-cut capacity5
TotalPublished user tables82

Most classes use these ready-to-use files:

  • CharlesRiver.sqlite
  • CharlesRiver.xlsx
  • CharlesRiver_csv.zip

Download them from Downloads or use the copies already shared for your course.

How the Data Is Organized​

Students usually understand the model fastest when they read it in layers:

LayerWhat belongs hereWhat it adds
Business master dataCustomer, Supplier, Item, Employee, Warehouse, CostCenterDefines who, what, and where
Planning and setupBOMs, routings, shifts, rosters, forecasts, inventory policiesExplains what should happen before execution starts
Business documents and operational eventsOrders, service engagements, approved service time, shipments, receipts, invoices, work orders, labor records, payroll recordsDistinguishes commitments, approved work, execution, and settlement through event, status, and date evidence
Ledger and controlJournalEntry, GLEntry, budgets, remittancesShows the accounting effect and reporting layer

An approved order or released work order alone does not prove shipment, completed production, or accounting recognition. Inspect the relevant downstream event, status, and date before making that claim.

Many document families also use a header-line pattern:

Header tableLine tableMeaning
SalesOrderSalesOrderLineOne customer order can contain many goods lines or service lines
ShipmentShipmentLineOne shipment can contain many shipped lines
SalesInvoiceSalesInvoiceLineOne invoice can contain many shipment-based lines or service-billing lines
PurchaseOrderPurchaseOrderLineOne PO can contain many ordered lines
GoodsReceiptGoodsReceiptLineOne receipt can contain many received lines
PurchaseInvoicePurchaseInvoiceLineOne supplier invoice can contain many billed lines
MaterialIssueMaterialIssueLineOne material issue can contain many component lines
ProductionCompletionProductionCompletionLineOne production completion can contain one or more completion lines
PayrollRegisterPayrollRegisterLineOne payroll register can contain many earnings and deduction lines
Look up identifiers and navigation paths

The Most Important Keys​

You do not need every key on day one. Start with the keys that anchor document chains:

KeyUse it to connect
CustomerIDCustomer to orders, invoices, receipts, returns, credits, and refunds
SalesOrderIDSales order header to goods fulfillment and service-billing branches
SalesOrderLineIDOrder lines to shipment lines, service engagements, and invoice lines
ServiceEngagementIDOne service engagement across staffing, approved time, and billing
ServiceEngagementAssignmentIDOne employee assignment across approved service-time rows
ServiceBillingLineIDOne billed-hours record back to its engagement and invoice line
SalesCommissionAccrualIDAn invoice-line commission to later credit adjustments and payment detail
ShipmentLineIDShipped lines to billed lines and returned lines
SupplierIDSupplier to purchase orders, invoices, and payments
PurchaseOrderIDPurchase order header to receipts and invoices
POLineIDPurchase order lines to receipt lines and invoice lines
GoodsReceiptLineIDInventory receipt lines to supplier invoice lines
AccrualJournalEntryIDAccrued service invoice lines back to the original accrual journal
WorkOrderIDWork-order activity across issue, completion, close, and direct labor
WorkOrderOperationIDOperation-level schedules and labor to one work-order operation
EmployeeShiftRosterIDPlanned roster rows to absences, overtime approvals, punches, and approved daily time
TimeClockEntryIDApproved daily time to labor entries and attendance exceptions
PayrollPeriodIDLabor entries, payroll registers, and liability remittances to a pay period
PayrollRegisterIDPayroll header to line detail and net-pay settlement
SupplyPlanRecommendationIDPlanning recommendations to requisitions, work orders, MRP rows, and rough-cut capacity rows
ItemIDProduct-level analysis across sales, purchasing, manufacturing, and planning
AccountIDGLEntry, Budget, and BudgetLine to the chart of accounts
CostCenterIDOperating activity, labor, budgets, and reporting by organization unit
FixedAssetIDAsset register to lifecycle events and financing agreements
DebtAgreementIDFinancing agreement to scheduled principal and interest payments

For exact field-level lookup, go to Schema Reference.

Core Navigation Paths​

These are the fastest ways to move through the model.

Read the paths as navigation sequences. Before combining amounts, use the Schema Reference to confirm the relationships and row grains of the line tables and stored bridge keys in the join.

O2C path​

The customer-demand flow splits into a goods path and a design-services path.

Goods path:

Customer -> SalesOrder -> SalesOrderLine -> Shipment -> ShipmentLine -> SalesInvoice -> SalesInvoiceLine

Design-services path:

Customer -> SalesOrder -> SalesOrderLine -> ServiceEngagement -> ServiceEngagementAssignment -> ServiceTimeEntry -> ServiceBillingLine -> SalesInvoiceLine

Cash settlement is tracked through:

CashReceipt -> CashReceiptApplication -> SalesInvoice

Returns branch from the billed shipment path:

SalesInvoiceLine -> SalesReturn -> SalesReturnLine -> CreditMemo -> CreditMemoLine -> CustomerRefund

Commercial pricing is resolved before shipment and billing through:

Customer -> PriceList -> PriceListLine -> SalesOrderLine <- PromotionProgram and PriceOverrideApproval

Sales commissions follow the invoice-line revenue path:

SalesCommissionRate -> SalesCommissionAccrual -> SalesCommissionAdjustment or SalesCommissionPaymentLine -> SalesCommissionPayment

Commission accruals reference SalesInvoiceLine, while return-related adjustments reference CreditMemoLine. Payment detail preserves the accrual or adjustment source being settled.

P2P path​

Supplier -> PurchaseRequisition -> PurchaseOrder -> PurchaseOrderLine -> GoodsReceipt -> GoodsReceiptLine -> PurchaseInvoice -> PurchaseInvoiceLine -> DisbursementPayment

The accrued-service branch is:

JournalEntry (Accrual) -> PurchaseInvoiceLine.AccrualJournalEntryID -> PurchaseInvoice -> DisbursementPayment

Manufacturing path​

Item -> BillOfMaterial -> BillOfMaterialLine -> WorkOrder -> WorkOrderOperation -> WorkOrderOperationSchedule -> MaterialIssue -> MaterialIssueLine -> ProductionCompletion -> ProductionCompletionLine -> WorkOrderClose

Manufacturing also depends on:

  • P2P for raw materials and packaging
  • time and payroll for labor support
  • O2C for finished-goods demand and shipment

Demand-planning path​

Item -> InventoryPolicy -> DemandForecast -> SupplyPlanRecommendation -> MaterialRequirementPlan -> PurchaseRequisition or WorkOrder

Capacity tieout is tracked through:

SupplyPlanRecommendation -> RoughCutCapacityPlan -> WorkCenterCalendar

Fixed-asset and financing path​

PurchaseInvoiceLine -> FixedAssetEvent -> FixedAsset -> DebtAgreement -> DebtScheduleLine

Asset events and debt schedule lines link back to finance-controlled journals. Use the event type and stored invoice, disbursement, or journal keys to distinguish acquisition, payment, depreciation, and disposal.

Payroll and time path​

ShiftDefinition -> EmployeeShiftAssignment -> EmployeeShiftRoster -> TimeClockPunch -> TimeClockEntry -> LaborTimeEntry -> PayrollPeriod -> PayrollRegister -> PayrollRegisterLine -> PayrollPayment

Liability clearance is tracked through:

PayrollPeriod -> PayrollLiabilityRemittance

Ledger path​

GLEntry -> Account

Then use:

  • SourceDocumentType
  • SourceDocumentID
  • SourceLineID
  • VoucherType
  • VoucherNumber

to move back to the originating event.

Use the stored source type rather than assuming it always matches a table name. For example, payroll-register postings use PayrollSummary as their GLEntry.SourceDocumentType. The PayrollSummary register mapping explains its period/cost-center summary grain, constructed source identifier, and aggregate tie-out. Do not join that identifier directly to PayrollRegisterID.

Look up posting categories and tracing reminders

How Operational Activity Reaches the Ledger​

The most important mental rule is simple: planning and setup tables usually stay outside the posting flow, while execution and finance events often reach the ledger.

Type of activityUsually posts to GL?Examples
Master data and planningNoItem, Employee, Budget, BudgetLine, BOMs, routings, forecasts, inventory policies
Operational commitmentsNoSalesOrder, PurchaseRequisition, PurchaseOrder, WorkOrder
Operational execution with accounting effectYesShipment, SalesInvoice, GoodsReceipt, MaterialIssue, ProductionCompletion, PayrollRegister
Settlements and clearancesYesCashReceipt, CashReceiptApplication, DisbursementPayment, PayrollPayment, PayrollLiabilityRemittance, CustomerRefund
Finance-controlled entriesYesJournalEntry, WorkOrderClose, accruals, reclasses, year-end close

Use GLEntry Posting Reference when you want the exact posting rules behind one event.

Practical Starting Tips​

  • CashReceiptApplication is the authoritative invoice-settlement link in O2C.
  • ServiceBillingLine is the authoritative hours-to-invoice bridge for design-service billing.
  • For P2P traceability, start with PurchaseOrderLine.RequisitionID, PurchaseInvoiceLine.GoodsReceiptLineID, and PurchaseInvoiceLine.AccrualJournalEntryID.
  • For manufacturing, start from WorkOrderID and then move outward to issues, completions, close, and labor.
  • For time and attendance, start from EmployeeShiftRosterID, TimeClockEntryID, or ShiftDefinitionID.
  • For payroll, start from PayrollPeriodID or PayrollRegisterID and then move back to LaborTimeEntry and TimeClockEntry.
  • For raw multi-year income-statement analysis, exclude the year-end close entry types.
Look up accounting and process terminology

Glossary​

TermPlain-language meaning
O2COrder-to-cash. The sales cycle from customer order through billing, cash application, and possible return activity.
P2PProcure-to-pay. The purchasing cycle from requisition through supplier payment.
BOMBill of material. The standard list of components required to make a manufactured item.
WIPWork in process. Inventory value that has been issued into production but not yet completed into finished goods.
GLGeneral ledger. The accounting table used for reporting and control-account reconciliation.
GRNIGoods received not invoiced. A liability recorded when inventory is received before the supplier invoice is approved.
Control accountA GL account such as AR, AP, inventory, GRNI, customer deposits, WIP, or manufacturing clearing that summarizes detailed activity.
Manufacturing varianceThe difference between actual and standard manufacturing cost that is closed from work orders.
Contribution marginRevenue less variable product cost. In this dataset, fixed overhead is excluded from contribution-margin analysis.