I would have, in Propel schema format (you really should use an ORM for any decent-sized project, it will make your job a heck of a lot easier):
Code:
<database name="loans">
<table name="loan">
<column name="loan_id" type="integer" required="true"
primaryKey="true" autoIncrement="true" />
<column name="group_id" type="integer" required="true" />
<foreign-key foreignTable="group">
<reference local="group_id" remote="group_id" />
</foreign-key>
<column name="date" type="date" required="true" />
</table>
<table name="group">
<column name="group_id" type="integer" required="true"
primaryKey="true" autoIncrement="true" />
<column name="name" type="varchar" size="255"
required="true" />
</table>
<table name="item">
<column name="item_id" type="integer" required="true"
primaryKey="true" autoIncrement="true" />
<column name="loan_id" type="integer" required="true" />
<foreign-key foreignTable="loan">
<reference local="loan_id" remote="loan_id" />
</foreign-key>
<column name="name" type="varchar" size="255"
required="true" />
<column name="quantity" type="integer" required="true" />
</table>
</database>
If there are no more details to be stored about the group, you might want to consider removing the group table entirely and just storing the group name directly in the loan table:
Code:
<database name="loans">
<table name="loan">
<column name="loan_id" type="integer" required="true"
primaryKey="true" autoIncrement="true" />
<column name="group" type="varchar" size="255"
required="true" />
<column name="date" type="date" required="true" />
</table>
<table name="item">
<column name="item_id" type="integer" required="true"
primaryKey="true" autoIncrement="true" />
<column name="loan_id" type="integer" required="true" />
<foreign-key foreignTable="loan">
<reference local="loan_id" remote="loan_id" />
</foreign-key>
<column name="name" type="varchar" size="255"
required="true" />
<column name="quantity" type="integer" required="true" />
</table>
</database>
Bookmarks