The RDB DAS provides the ability to work with single-column keys as well as compound keys. Keys must be identified to the DAS for two purposes: flushing changes to the database and defining a relationship. In either case, the keys can be single-colomn or compound.
We'll start with the first purpose: flushing changes to the database (also called "apply changes processing"). As part of change summary processing, the DAS will generate a set of INSERT, UPDATE and DELETE statements for execution against the database and these statements require a primary key. So, although the primary key definition is not required for reading data, it is required for writeing data via apply changes processing.
The primary key for a table can be identified to the DAS via configuration (typically via a configuration xml file). The follwing is an example config file that defines a compound primary key:
<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Table tableName="ORDERDETAILS">
<Column columnName="ORDERID" primaryKey="true"/>
<Column columnName="PRODUCTID" primaryKey="true"/>
</Table>
<Table tableName="ANORDER">
<Column columnName="ID" primaryKey="true"/>
</Table>
<Relationship name="ORDERDETAILS" primaryKeyTable="ANORDER"
foreignKeyTable="ORDERDETAILS" many="true">
<KeyPair primaryKeyColumn="ID" foreignKeyColumn="ORDERID"/>
</Relationship>
</Config>To be continued ...