|  | -- Copyright (C) 2007 ETH Zurich
 | 
  
    |  | --
 | 
  
    |  | -- This file is part of Fosstrak (www.fosstrak.org).
 | 
  
    |  | --
 | 
  
    |  | -- Fosstrak is free software; you can redistribute it and/or
 | 
  
    |  | -- modify it under the terms of the GNU Lesser General Public
 | 
  
    |  | -- License version 2.1, as published by the Free Software Foundation.
 | 
  
    |  | --
 | 
  
    |  | -- Fosstrak is distributed in the hope that it will be useful,
 | 
  
    |  | -- but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
  
    |  | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 | 
  
    |  | -- Lesser General Public License for more details.
 | 
  
    |  | --
 | 
  
    |  | -- You should have received a copy of the GNU Lesser General Public
 | 
  
    |  | -- License along with Fosstrak; if not, write to the Free
 | 
  
    |  | -- Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 | 
  
    |  | -- Boston, MA  02110-1301  USA
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- This is the EPCIS database schema file for the creation of the
 | 
  
    |  | -- tables in MySQL. Note: this schema is MySQL specific!
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | BEGIN;
 | 
  
    |  | 
 | 
  
    |  | SET storage_engine=INNODB;
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Vocabularies
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizLoc` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizLoc_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_BizLoc`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizStep` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizStep_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_BizStep`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizTransType` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizTransType_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_BizTransType`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizTrans` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_BizTrans_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_BizTrans`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_Disposition` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_Disposition_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_Disposition`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_ReadPoint` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_ReadPoint_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_ReadPoint`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_EPCClass` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_EPCClass_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_EPCClass`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Non-Standard Masterdata Vocabularies
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_Any` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `uri` varchar(1023) NOT NULL,
 | 
  
    |  | `vtype` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `voc_Any_attr` (
 | 
  
    |  | `id` bigint NOT NULL REFERENCES `voc_Any`(`id`),
 | 
  
    |  | `attribute` varchar(1023) NOT NULL,
 | 
  
    |  | `value` varchar(1023) NOT NULL
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Business Transactions
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `BizTransaction` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `bizTrans` bigint NOT NULL REFERENCES `voc_BizTrans` (`id`),
 | 
  
    |  | `type` bigint REFERENCES `voc_BizTransType` (`id`)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Aggregation Events
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_AggregationEvent` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `eventTime` timestamp NOT NULL,
 | 
  
    |  | `eventTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `recordTime` timestamp NOT NULL,
 | 
  
    |  | `recordTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `eventTimeZoneOffset` varchar(8) NOT NULL,
 | 
  
    |  | `parentID` varchar(1023) DEFAULT NULL, -- varchar(1023) good choice?
 | 
  
    |  | `action` varchar(8) NOT NULL CHECK (`action` IN ('ADD','OBSERVE','DELETE')),
 | 
  
    |  | `bizStep` bigint DEFAULT NULL REFERENCES `voc_BizStep` (`id`),
 | 
  
    |  | `disposition` bigint DEFAULT NULL REFERENCES `voc_Disposition`(`id`),
 | 
  
    |  | `readPoint` bigint DEFAULT NULL REFERENCES `voc_ReadPoint`(`id`),
 | 
  
    |  | `bizLocation` bigint DEFAULT NULL REFERENCES `voc_BizLoc`(`id`)
 | 
  
    |  | -- `bizTransaction` bigint DEFAULT NULL REFERENCES `voc_BizTrans`(`id`) 
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_AggregationEvent_EPCs` (
 | 
  
    |  | -- This EPC list is called childEPCs (or childEPCList) in the standard,
 | 
  
    |  | -- for uniform access `child` has been ommitted from the table name.
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_AggregationEvent`,
 | 
  
    |  | `epc` varchar(1023) NOT NULL,
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_AggregationEvent_bizTrans` ( 
 | 
  
    |  | -- bizTrans 0..* associated with event
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_AggregationEvent` (`id`),
 | 
  
    |  | `bizTrans_id` bigint NOT NULL REFERENCES `BizTransaction` (`id`),
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_AggregationEvent_extensions` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment,
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_AggregationEvent` (`id`),
 | 
  
    |  | `fieldname` varchar(128) NOT NULL,
 | 
  
    |  | `prefix` varchar(32) NOT NULL,
 | 
  
    |  | `intValue` integer,
 | 
  
    |  | `floatValue` float,
 | 
  
    |  | `dateValue` timestamp NULL DEFAULT NULL,
 | 
  
    |  | `strValue` varchar(1024),
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Object Events
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_ObjectEvent` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment -> cross platform sequence???
 | 
  
    |  | `eventTime` timestamp NOT NULL,
 | 
  
    |  | `eventTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `recordTime` timestamp NOT NULL,
 | 
  
    |  | `recordTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `eventTimeZoneOffset` varchar(8) NOT NULL,
 | 
  
    |  | `action` varchar(8) NOT NULL CHECK (`action` IN ('ADD','OBSERVE','DELETE')),
 | 
  
    |  | `bizStep` bigint DEFAULT NULL REFERENCES `voc_BizStep` (`id`),
 | 
  
    |  | `disposition` bigint DEFAULT NULL REFERENCES `voc_Disposition` (`id`),
 | 
  
    |  | `readPoint` bigint DEFAULT NULL REFERENCES `voc_ReadPoint` (`id`),
 | 
  
    |  | `bizLocation` bigint DEFAULT NULL REFERENCES `voc_BizLoc` (`id`)
 | 
  
    |  | -- `bizTransaction` bigint DEFAULT NULL REFERENCES `voc_BizTrans` (`id`)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_ObjectEvent_EPCs` (
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_ObjectEvent`,
 | 
  
    |  | `epc` varchar(1023) NOT NULL,
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_ObjectEvent_bizTrans` ( 
 | 
  
    |  | -- bizTrans 0..* associated with event
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_ObjectEvent` (`id`),
 | 
  
    |  | `bizTrans_id` bigint NOT NULL REFERENCES `BizTransaction` (`id`),
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_ObjectEvent_extensions` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment,
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_ObjectEvent` (`id`),
 | 
  
    |  | `fieldname` varchar(128) NOT NULL,
 | 
  
    |  | `prefix` varchar(32) NOT NULL,
 | 
  
    |  | `intValue` integer,
 | 
  
    |  | `floatValue` float,
 | 
  
    |  | `dateValue` timestamp NULL DEFAULT NULL,
 | 
  
    |  | `strValue` varchar(1024),
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Quantity Events
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_QuantityEvent` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `eventTime` timestamp NOT NULL,
 | 
  
    |  | `eventTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `recordTime` timestamp NOT NULL,
 | 
  
    |  | `recordTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `eventTimeZoneOffset` varchar(8) NOT NULL,
 | 
  
    |  | `epcClass` bigint NOT NULL REFERENCES `voc_EPCClass` (`id`),
 | 
  
    |  | `quantity` bigint NOT NULL,
 | 
  
    |  | `bizStep` bigint DEFAULT NULL REFERENCES `voc_BizStep` (`id`),
 | 
  
    |  | `disposition` bigint DEFAULT NULL REFERENCES `voc_Disposition` (`id`),
 | 
  
    |  | `readPoint` bigint DEFAULT NULL REFERENCES `voc_ReadPoint` (`id`),
 | 
  
    |  | `bizLocation` bigint DEFAULT NULL REFERENCES `voc_BizLoc` (`id`)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_QuantityEvent_bizTrans` ( 
 | 
  
    |  | -- bizTrans 0..* associated with event
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_QuantityEvent` (`id`),
 | 
  
    |  | `bizTrans_id` bigint NOT NULL REFERENCES `BizTransaction` (`id`),
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_QuantityEvent_extensions` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment,
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_QuantityEvent` (`id`),
 | 
  
    |  | `fieldname` varchar(128) NOT NULL,
 | 
  
    |  | `prefix` varchar(32) NOT NULL,
 | 
  
    |  | `intValue` integer,
 | 
  
    |  | `floatValue` float,
 | 
  
    |  | `dateValue` timestamp NULL DEFAULT NULL,
 | 
  
    |  | `strValue` varchar(1024),
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Transaction Events
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_TransactionEvent` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment, -- id auto_increment
 | 
  
    |  | `eventTime` timestamp NOT NULL,
 | 
  
    |  | `eventTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `recordTime` timestamp NOT NULL,
 | 
  
    |  | `recordTimeMs` bigint(20) NOT NULL,
 | 
  
    |  | `eventTimeZoneOffset` varchar(8) NOT NULL,
 | 
  
    |  | `parentID` varchar(1023) DEFAULT NULL,
 | 
  
    |  | `action` varchar(8) NOT NULL CHECK (`action` IN ('ADD','OBSERVE','DELETE')),
 | 
  
    |  | `bizStep` bigint DEFAULT NULL REFERENCES `voc_BizStep` (`id`),
 | 
  
    |  | `disposition` bigint DEFAULT NULL REFERENCES `voc_Disposition` (`id`),
 | 
  
    |  | `readPoint` bigint DEFAULT NULL REFERENCES `voc_ReadPoint` (`id`),
 | 
  
    |  | `bizLocation` bigint DEFAULT NULL REFERENCES `voc_BizLoc` (`id`)
 | 
  
    |  | -- `bizTransaction` bigint DEFAULT NULL REFERENCES `voc_BizTrans` (`id`)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_TransactionEvent_EPCs` (
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_TransactionEvent`,
 | 
  
    |  | `epc` varchar(1023) NOT NULL,
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_TransactionEvent_bizTrans` ( 
 | 
  
    |  | -- bizTrans 1..* associated with event, at least one not yet enforced in DB
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_TransactionEvent` (`id`),
 | 
  
    |  | `bizTrans_id` bigint NOT NULL REFERENCES `BizTransaction` (`id`),
 | 
  
    |  | `idx` int NOT NULL,
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE `event_TransactionEvent_extensions` (
 | 
  
    |  | `id` bigint PRIMARY KEY auto_increment,
 | 
  
    |  | `event_id` bigint NOT NULL REFERENCES `event_TransactionEvent` (`id`),
 | 
  
    |  | `fieldname` varchar(128) NOT NULL,
 | 
  
    |  | `prefix` varchar(32) NOT NULL,
 | 
  
    |  | `intValue` integer,
 | 
  
    |  | `floatValue` float,
 | 
  
    |  | `dateValue` timestamp NULL DEFAULT NULL,
 | 
  
    |  | `strValue` varchar(1024),
 | 
  
    |  | INDEX (event_id)
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | -- Subscriptions
 | 
  
    |  | -- ---------------------------------------------
 | 
  
    |  | 
 | 
  
    |  | CREATE TABLE subscription (
 | 
  
    |  | subscriptionid varchar(767) NOT NULL PRIMARY KEY,
 | 
  
    |  | params blob,
 | 
  
    |  | dest varchar(1023),
 | 
  
    |  | sched blob,
 | 
  
    |  | trigg varchar(1023),
 | 
  
    |  | initialrecordingtime timestamp,
 | 
  
    |  | exportifempty boolean,
 | 
  
    |  | queryname varchar(1023),
 | 
  
    |  | lastexecuted timestamp
 | 
  
    |  | );
 | 
  
    |  | 
 | 
  
    |  | 
 | 
  
    |  | COMMIT;
 | 
  
    |  | 
 |