模糊想法, 请忽略.
基于行的数据库可以通过一对多关系的表很容易地表示树形结构的对象. 但是, 基于列的数据库, 如何表示呢?
假设有一个对象实例, 它的某个字段是其它类型对象的列表. 这时, 如何用列的实例表示这个对象?
首先, 基于列的数据库, 任何对象的实例都可以用一个id列表, 该id一般设计为整数.
列实例(称为字段)不直接声明自己属于哪一个对象, 通过单独的存储对象和列实例的关系来表示原始对象(raw), 这种对象的每一个字段都是原始数据类型.
如果对象的某个字段是其它对象的列表, 如何表示?
这里使用对象与对象的关系表来存储.
* 对象定义, row<name>
* 列定义, column<name, type>
* 对象表<id>
* 字段表<id, value>
* 对象与字段关系表<oid, fid>
* 对象与对象关系表<oid, oid>
对象查询操作语言:
select column/object
where <condition>
struct row{ int id; char name[256]; }; struct column{ int id; int type; char name[256]; }; struct object{ int id; int row_id; }; struct field{ int id; int col_id; struct{ int len; union{ double number; char *bytes; }; }value; }; struct of_item{ int oid; int fid; }; struct oo_item{ int id1; int id2; };