Skip to content
Permalink
c61e66b5ea
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Latest commit c61e66b Oct 3, 2018 History
0 contributors

Users who have contributed to this file

224 lines (201 sloc) 6.69 KB
<?xml version="1.0" ?>
<!--
COmanage Match Database Schema
Portions licensed to the University Corporation for Advanced Internet
Development, Inc. ("UCAID") under one or more contributor license agreements.
See the NOTICE file distributed with this work for additional information
regarding copyright ownership.
UCAID licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
While this schema mostly works with database prefixes, foreign key constraints
must be specified in raw SQL, which needs the prefixed table name.
-->
<schema version="0.3">
<!--
XXX document datamodel
-->
<table name="meta">
<field name="id" type="I">
<key />
</field>
<field name="upgrade_version" type="C" size="16" />
</table>
<table name="matchgrids">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="description" type="C" size="128" />
<field name="table_name" type="C" size="128" />
<field name="status" type="C" size="2" />
<!-- XXX add this -->
<field name="referenceid_method" type="C" size="2" />
<field name="referenceid_start" type="I" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="matchgrids_i1">
<col>table_name</col>
<unique />
</index>
</table>
<table name="permissions">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<!-- We don't currently define username anywhere, ie: there is no users table -->
<field name="username" type="C" size="128" />
<!-- blank for superuser -->
<field name="matchgrid_id" type="I">
<constraint>REFERENCES matchgrids(id)</constraint>
</field>
<field name="permission" type="C" size="2" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="permissions_i1">
<col>username</col>
</index>
</table>
<table name="attribute_groups">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="matchgrid_id" type="I">
<constraint>REFERENCES matchgrids(id)</constraint>
</field>
<field name="name" type="C" size="32" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="attribute_groups_i1">
<col>matchgrid_id</col>
</index>
</table>
<table name="attributes">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="matchgrid_id" type="I">
<constraint>REFERENCES matchgrids(id)</constraint>
</field>
<!-- restrict to alphanum and use as column name -->
<field name="name" type="C" size="32" />
<field name="description" type="C" size="128" />
<!-- probably need some mechanism to map api_name to nested JSON representation or whatever -->
<field name="api_name" type="C" size="128" />
<field name="attribute_group_id" type="I">
<constraint>REFERENCES attribute_groups(id)</constraint>
</field>
<field name="alphanumeric" type="L" />
<field name="case_sensitive" type="L" />
<field name="invalidates" type="L" />
<field name="null_equivalents" type="L" />
<field name="required" type="L" />
<field name="search_distance" type="I" />
<field name="search_exact" type="L" />
<field name="search_substr_from" type="I" />
<field name="search_substr_for" type="I" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="attributes_i1">
<col>matchgrid_id</col>
</index>
</table>
<table name="rules">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="matchgrid_id" type="I">
<constraint>REFERENCES matchgrids(id)</constraint>
</field>
<!-- restrict to alphanum? not really a need to...
do we need both name AND description?
-->
<field name="name" type="C" size="32" />
<field name="description" type="C" size="128" />
<!-- C/anonical P/otential -->
<field name="confidence_mode" type="C" size="2" />
<!-- Order within confidence_mode -->
<field name="ordr" type="I" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="rules_i1">
<col>matchgrid_id</col>
</index>
</table>
<!-- If this were just a join table then by cake convention it should be called rules_attributes
-->
<table name="rule_attributes">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="rule_id" type="I">
<constraint>REFERENCES rules(id)</constraint>
</field>
<field name="attribute_id" type="I">
<constraint>REFERENCES attributes(id)</constraint>
</field>
<!-- E/xact S/ubstr D/istance -->
<field name="search_type" type="C" size="2" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="rule_attributes_i1">
<col>rule_id</col>
</index>
<!-- XXX do we really need this index? -->
<index name="rule_attributes_i1">
<col>attribute_id</col>
</index>
</table>
<table name="systems_of_record">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="matchgrid_id" type="I">
<constraint>REFERENCES matchgrids(id)</constraint>
</field>
<field name="label" type="C" size="80" />
<!-- I/nteractive E/xternal -->
<field name="resolution_mode" type="c" size="2" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="systems_of_record_i1">
<col>matchgrid_id</col>
</index>
</table>
<table name="api_users">
<field name="id" type="I">
<key />
<autoincrement />
</field>
<field name="matchgrid_id" type="I">
<constraint>REFERENCES matchgrids(id)</constraint>
</field>
<field name="system_of_record_id" type="I">
<constraint>REFERENCES systems_of_record(id)</constraint>
</field>
<field name="username" type="C" size="128" />
<field name="password" type="C" size="255" />
<field name="created" type="T" />
<field name="modified" type="T" />
<index name="api_users_i1">
<col>matchgrid_id</col>
</index>
<index name="api_users_i2">
<col>username</col>
</index>
</table>
</schema>