(Relation|Table) - Tabular data

> (Data|State) Management and Processing > (Data Type|Data Structure) > (Relation|Table) - Tabular data

1 - About

A Relation is a logical data structure composed of

The following data structure are a relation:

  • a table (store data)
  • a query (does not store data)

It also model either:

but not both.

In the SQL Iso, a relation is a collection of zero or more rows where each row is a sequence of one or more column values.

A relation is a bag (multiset) of tuple (ie data with possible different sql data type by column). It's not precisely a set because a set does not allow duplicate whereas a multiset (bag) does.


3 - Implementation

3.1 - JDBC Rowset

3.2 - Swing JTable

3.3 - Guava Table

3.4 - Spark Data Frame

Spark DataFrame is a distributed collection of data organized into named columns


people.col("age").plus(10);  // in Java

3.5 - Data Frame Panda

Data Frame Panda (API) is a 2-dimensional labeled data structure with columns of potentially different types.

You can think of it like a spreadsheet or SQL table, or a dict of Series objects.

DataFrame accepts many different kinds of input:

  • Dict of 1D ndarrays, lists, dicts, or Series
  • 2-D numpy.ndarray
  • Structured or record ndarray
  • A Series
  • Another DataFrame
  • sequence of (key, value) pairs
  • pandas.read_csv, pandas.read_table, pandas.read_clipboard (tab)

3.6 - R DataFrame

A data frame (doc), a matrix-like structure whose columns may be of differing types (numeric, logical, factor and character and so on).

A data frame is a collection of data organized into named columns from differents data type.

3.7 - Derby

In java\client\org\apache\derby\client\am\Cursor.java, they hold the data in byte array.

//-------------Structures for holding and scrolling the data -----------------
public byte[] dataBuffer_;
public ByteArrayOutputStream dataBufferStream_;
public int position_; // This is the read head
public int lastValidBytePosition_;
public boolean hasLobs_; // is there at least one LOB column?
// Current row positioning
protected int currentRowPosition_;
private int nextRowPosition_;
// Let's new up a 2-dimensional array based on fetch-size and reuse so that
protected int[] columnDataPosition_;
// This is the actual, computed lengths of varchar fields, not the max length from query descriptor or DA
protected int[] columnDataComputedLength_;
// populate this for


  • Types: org.apache.derby.iapi.types.DataType Interface. And see all SQL type implementation (SQLBinary, SQLBit, SQLBlob, … )
  • ResultSet Interface

3.8 - Java

4 - Documentation / Reference