(bug #3898) Followup : fixing Hold Policies implementation
[koha.git] / installer / data / mysql / kohastructure.sql
index 456b790..d41b5e6 100644 (file)
@@ -30,6 +30,7 @@ CREATE TABLE `accountlines` (
   `dispute` mediumtext,
   `accounttype` varchar(5) default NULL,
   `amountoutstanding` decimal(28,6) default NULL,
+  `lastincrement` decimal(28,6) default NULL,
   `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `notify_id` int(11) NOT NULL default 0,
   `notify_level` int(2) NOT NULL default 0,
@@ -123,7 +124,7 @@ CREATE TABLE `aqbookfund` (
 DROP TABLE IF EXISTS `aqbooksellers`;
 CREATE TABLE `aqbooksellers` (
   `id` int(11) NOT NULL auto_increment,
-  `name` mediumtext,
+  `name` mediumtext NOT NULL,
   `address1` mediumtext,
   `address2` mediumtext,
   `address3` mediumtext,
@@ -176,7 +177,7 @@ CREATE TABLE `aqbudget` (
   `startdate` date NOT NULL default 0,
   `enddate` date default NULL,
   `budgetamount` decimal(13,2) default NULL,
-  `aqbudgetid` tinyint(4) NOT NULL auto_increment,
+  `aqbudgetid` int(11) NOT NULL auto_increment,
   `branchcode` varchar(10) default NULL,
   PRIMARY KEY  (`aqbudgetid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -338,6 +339,7 @@ CREATE TABLE `authorised_values` (
   `category` varchar(10) NOT NULL default '',
   `authorised_value` varchar(80) NOT NULL default '',
   `lib` varchar(80) default NULL,
+  `imageurl` varchar(200) default NULL,
   PRIMARY KEY  (`id`),
   KEY `name` (`category`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -386,7 +388,7 @@ CREATE TABLE `biblioitems` (
   `volume` mediumtext,
   `number` mediumtext,
   `itemtype` varchar(10) default NULL,
-  `isbn` varchar(14) default NULL,
+  `isbn` varchar(30) default NULL,
   `issn` varchar(9) default NULL,
   `publicationyear` text,
   `publishercode` varchar(255) default NULL,
@@ -417,6 +419,7 @@ CREATE TABLE `biblioitems` (
   KEY `bibinoidx` (`biblioitemnumber`),
   KEY `bibnoidx` (`biblionumber`),
   KEY `isbn` (`isbn`),
+  KEY `issn` (`issn`),
   KEY `publishercode` (`publishercode`),
   CONSTRAINT `biblioitems_ibfk_1` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -484,6 +487,7 @@ CREATE TABLE `borrowers` (
   `altcontactaddress3` varchar(255) default NULL,
   `altcontactzipcode` varchar(50) default NULL,
   `altcontactphone` varchar(50) default NULL,
+  `smsalertnumber` varchar(50) default NULL,
   UNIQUE KEY `cardnumber` (`cardnumber`),
   PRIMARY KEY `borrowernumber` (`borrowernumber`),
   KEY `categorycode` (`categorycode`),
@@ -493,6 +497,41 @@ CREATE TABLE `borrowers` (
   CONSTRAINT `borrowers_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `borrower_attribute_types`
+--
+
+DROP TABLE IF EXISTS `borrower_attribute_types`;
+CREATE TABLE `borrower_attribute_types` (
+  `code` varchar(10) NOT NULL,
+  `description` varchar(255) NOT NULL,
+  `repeatable` tinyint(1) NOT NULL default 0,
+  `unique_id` tinyint(1) NOT NULL default 0,
+  `opac_display` tinyint(1) NOT NULL default 0,
+  `password_allowed` tinyint(1) NOT NULL default 0,
+  `staff_searchable` tinyint(1) NOT NULL default 0,
+  `authorised_value_category` varchar(10) default NULL,
+  PRIMARY KEY  (`code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `borrower_attributes`
+--
+
+DROP TABLE IF EXISTS `borrower_attributes`;
+CREATE TABLE `borrower_attributes` (
+  `borrowernumber` int(11) NOT NULL,
+  `code` varchar(10) NOT NULL,
+  `attribute` varchar(64) default NULL,
+  `password` varchar(64) default NULL,
+  KEY `borrowernumber` (`borrowernumber`),
+  KEY `code_attribute` (`code`, `attribute`),
+  CONSTRAINT `borrower_attributes_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
+    ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `borrower_attributes_ibfk_2` FOREIGN KEY (`code`) REFERENCES `borrower_attribute_types` (`code`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `branchcategories`
 --
@@ -597,15 +636,84 @@ CREATE TABLE `categories` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 --
--- Table structure for table `categorytable`
+-- Table structure for table `borrower_branch_circ_rules`
 --
 
-DROP TABLE IF EXISTS `categorytable`;
-CREATE TABLE `categorytable` (
-  `categorycode` varchar(5) NOT NULL default '',
-  `description` text,
-  `itemtypecodes` text,
-  PRIMARY KEY  (`categorycode`)
+DROP TABLE IF EXISTS `branch_borrower_circ_rules`;
+CREATE TABLE `branch_borrower_circ_rules` (
+  `branchcode` VARCHAR(10) NOT NULL,
+  `categorycode` VARCHAR(10) NOT NULL,
+  `maxissueqty` int(4) default NULL,
+  PRIMARY KEY (`categorycode`, `branchcode`),
+  CONSTRAINT `branch_borrower_circ_rules_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
+    ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `branch_borrower_circ_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `default_borrower_circ_rules`
+--
+
+DROP TABLE IF EXISTS `default_borrower_circ_rules`;
+CREATE TABLE `default_borrower_circ_rules` (
+  `categorycode` VARCHAR(10) NOT NULL,
+  `maxissueqty` int(4) default NULL,
+  PRIMARY KEY (`categorycode`),
+  CONSTRAINT `borrower_borrower_circ_rules_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `default_branch_circ_rules`
+--
+
+DROP TABLE IF EXISTS `default_branch_circ_rules`;
+CREATE TABLE `default_branch_circ_rules` (
+  `branchcode` VARCHAR(10) NOT NULL,
+  `maxissueqty` int(4) default NULL,
+  `holdallowed` int(1) default NULL,
+  PRIMARY KEY (`branchcode`),
+  CONSTRAINT `default_branch_circ_rules_ibfk_1` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `default_branch_item_rules`
+--
+
+CREATE TABLE `default_branch_item_rules` (
+  `itemtype` varchar(10) NOT NULL,
+  `holdallowed` tinyint(1) default NULL,
+  PRIMARY KEY  (`itemtype`),
+  CONSTRAINT `default_branch_item_rules_ibfk_1` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `branch_item_rules`
+--
+
+CREATE TABLE `branch_item_rules` (
+          `branchcode` varchar(10) NOT NULL,
+          `itemtype` varchar(10) NOT NULL,
+          `holdallowed` tinyint(1) default NULL,
+          PRIMARY KEY  (`itemtype`,`branchcode`),
+          KEY `branch_item_rules_ibfk_2` (`branchcode`),
+          CONSTRAINT `branch_item_rules_ibfk_1` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE,
+          CONSTRAINT `branch_item_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
+        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `default_circ_rules`
+--
+
+DROP TABLE IF EXISTS `default_circ_rules`;
+CREATE TABLE `default_circ_rules` (
+    `singleton` enum('singleton') NOT NULL default 'singleton',
+    `maxissueqty` int(4) default NULL,
+    `holdallowed` int(1) default NULL,
+    PRIMARY KEY (`singleton`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 --
@@ -656,6 +764,8 @@ CREATE TABLE `class_sources` (
 DROP TABLE IF EXISTS `currency`;
 CREATE TABLE `currency` (
   `currency` varchar(10) NOT NULL default '',
+  `symbol` varchar(5) default NULL,
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `rate` float(7,5) default NULL,
   PRIMARY KEY  (`currency`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -693,7 +803,7 @@ CREATE TABLE `deletedbiblioitems` (
   `volume` mediumtext,
   `number` mediumtext,
   `itemtype` varchar(10) default NULL,
-  `isbn` varchar(14) default NULL,
+  `isbn` varchar(30) default NULL,
   `issn` varchar(9) default NULL,
   `publicationyear` text,
   `publishercode` varchar(255) default NULL,
@@ -761,7 +871,7 @@ CREATE TABLE `deletedborrowers` (
   `B_phone` mediumtext,
   `dateofbirth` date default NULL,
   `branchcode` varchar(10) NOT NULL default '',
-  `categorycode` varchar(2) default NULL,
+  `categorycode` varchar(10) default NULL,
   `dateenrolled` date default NULL,
   `dateexpiry` date default NULL,
   `gonenoaddress` tinyint(1) default NULL,
@@ -783,6 +893,13 @@ CREATE TABLE `deletedborrowers` (
   `contactnote` varchar(255) default NULL,
   `sort1` varchar(80) default NULL,
   `sort2` varchar(80) default NULL,
+  `altcontactfirstname` varchar(255) default NULL,
+  `altcontactsurname` varchar(255) default NULL,
+  `altcontactaddress1` varchar(255) default NULL,
+  `altcontactaddress2` varchar(255) default NULL,
+  `altcontactaddress3` varchar(255) default NULL,
+  `altcontactzipcode` varchar(50) default NULL,
+  `altcontactphone` varchar(50) default NULL,
   KEY `borrowernumber` (`borrowernumber`),
   KEY `cardnumber` (`cardnumber`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -798,7 +915,7 @@ CREATE TABLE `deleteditems` (
   `biblioitemnumber` int(11) NOT NULL default 0,
   `barcode` varchar(20) default NULL,
   `dateaccessioned` date default NULL,
-  `booksellerid` varchar(10) default NULL,
+  `booksellerid` mediumtext default NULL,
   `homebranch` varchar(10) default NULL,
   `price` decimal(8,2) default NULL,
   `replacementprice` decimal(8,2) default NULL,
@@ -806,10 +923,10 @@ CREATE TABLE `deleteditems` (
   `datelastborrowed` date default NULL,
   `datelastseen` date default NULL,
   `stack` tinyint(1) default NULL,
-  `notforloan` tinyint(1) default NULL,
-  `damaged` tinyint(1) default NULL,
-  `itemlost` tinyint(1) default NULL,
-  `wthdrawn` tinyint(1) default NULL,
+  `notforloan` tinyint(1) NOT NULL default 0,
+  `damaged` tinyint(1) NOT NULL default 0,
+  `itemlost` tinyint(1) NOT NULL default 0,
+  `wthdrawn` tinyint(1) NOT NULL default 0,
   `itemcallnumber` varchar(30) default NULL,
   `issues` smallint(6) default NULL,
   `renewals` smallint(6) default NULL,
@@ -827,6 +944,9 @@ CREATE TABLE `deleteditems` (
   `materials` varchar(10) default NULL,
   `uri` varchar(255) default NULL,
   `itype` varchar(10) default NULL,
+  `more_subfields_xml` longtext default NULL,
+  `enumchron` varchar(80) default NULL,
+  `copynumber` varchar(32) default NULL,
   `marc` longblob,
   PRIMARY KEY  (`itemnumber`),
   KEY `delitembarcodeidx` (`barcode`),
@@ -847,6 +967,29 @@ CREATE TABLE `ethnicity` (
   PRIMARY KEY  (`code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `hold_fill_targets`
+--
+
+DROP TABLE IF EXISTS `hold_fill_targets`;
+CREATE TABLE hold_fill_targets (
+  `borrowernumber` int(11) NOT NULL,
+  `biblionumber` int(11) NOT NULL,
+  `itemnumber` int(11) NOT NULL,
+  `source_branchcode`  varchar(10) default NULL,
+  `item_level_request` tinyint(4) NOT NULL default 0,
+  PRIMARY KEY `itemnumber` (`itemnumber`),
+  KEY `bib_branch` (`biblionumber`, `source_branchcode`),
+  CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`) 
+    REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `hold_fill_targets_ibfk_2` FOREIGN KEY (`biblionumber`) 
+    REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `hold_fill_targets_ibfk_3` FOREIGN KEY (`itemnumber`) 
+    REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `hold_fill_targets_ibfk_4` FOREIGN KEY (`source_branchcode`) 
+    REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `import_batches`
 --
@@ -860,7 +1003,9 @@ CREATE TABLE `import_batches` (
   `num_biblios` int(11) NOT NULL default 0,
   `num_items` int(11) NOT NULL default 0,
   `upload_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
-  `overlay_action` enum('replace', 'create_new', 'use_template') NOT NULL default 'create_new',
+  `overlay_action` enum('replace', 'create_new', 'use_template', 'ignore') NOT NULL default 'create_new',
+  `nomatch_action` enum('create_new', 'ignore') NOT NULL default 'create_new',
+  `item_action` enum('always_add', 'add_only_for_matches', 'add_only_for_new', 'ignore') NOT NULL default 'always_add',
   `import_status` enum('staging', 'staged', 'importing', 'imported', 'reverting', 'reverted', 'cleaned') NOT NULL default 'staging',
   `batch_type` enum('batch', 'z3950') NOT NULL default 'batch',
   `file_name` varchar(100),
@@ -886,7 +1031,7 @@ CREATE TABLE `import_records` (
   `marcxml_old` longtext NOT NULL,
   `record_type` enum('biblio', 'auth', 'holdings') NOT NULL default 'biblio',
   `overlay_status` enum('no_match', 'auto_match', 'manual_match', 'match_applied') NOT NULL default 'no_match',
-  `status` enum('error', 'staged', 'imported', 'reverted', 'items_reverted') NOT NULL default 'staged',
+  `status` enum('error', 'staged', 'imported', 'reverted', 'items_reverted', 'ignored') NOT NULL default 'staged',
   `import_error` mediumtext,
   `encoding` varchar(40) NOT NULL default '',
   `z3950random` varchar(40) default NULL,
@@ -922,7 +1067,7 @@ CREATE TABLE `import_biblios` (
   `original_source` varchar(25) default NULL,
   `title` varchar(128) default NULL,
   `author` varchar(80) default NULL,
-  `isbn` varchar(14) default NULL,
+  `isbn` varchar(30) default NULL,
   `issn` varchar(9) default NULL,
   `has_items` tinyint(1) NOT NULL default 0,
   CONSTRAINT `import_biblios_ibfk_1` FOREIGN KEY (`import_record_id`) 
@@ -942,7 +1087,7 @@ CREATE TABLE `import_items` (
   `import_record_id` int(11) NOT NULL,
   `itemnumber` int(11) default NULL,
   `branchcode` varchar(10) default NULL,
-  `status` enum('error', 'staged', 'imported', 'reverted') NOT NULL default 'staged',
+  `status` enum('error', 'staged', 'imported', 'reverted', 'ignored') NOT NULL default 'staged',
   `marcxml` longtext NOT NULL,
   `import_error` mediumtext,
   PRIMARY KEY (`import_items_id`),
@@ -988,6 +1133,7 @@ CREATE TABLE `issuingrules` (
   `rentaldiscount` decimal(28,6) default NULL,
   `reservecharge` decimal(28,6) default NULL,
   `fine` decimal(28,6) default NULL,
+  `finedays` int(11) default NULL,
   `firstremind` int(11) default NULL,
   `chargeperiod` int(11) default NULL,
   `accountsent` int(11) default NULL,
@@ -1011,7 +1157,7 @@ CREATE TABLE `items` (
   `biblioitemnumber` int(11) NOT NULL default 0,
   `barcode` varchar(20) default NULL,
   `dateaccessioned` date default NULL,
-  `booksellerid` varchar(10) default NULL,
+  `booksellerid` mediumtext default NULL,
   `homebranch` varchar(10) default NULL,
   `price` decimal(8,2) default NULL,
   `replacementprice` decimal(8,2) default NULL,
@@ -1019,10 +1165,10 @@ CREATE TABLE `items` (
   `datelastborrowed` date default NULL,
   `datelastseen` date default NULL,
   `stack` tinyint(1) default NULL,
-  `notforloan` tinyint(1) default NULL,
-  `damaged` tinyint(1) default NULL,
-  `itemlost` tinyint(1) default NULL,
-  `wthdrawn` tinyint(1) default NULL,
+  `notforloan` tinyint(1) NOT NULL default 0,
+  `damaged` tinyint(1) NOT NULL default 0,
+  `itemlost` tinyint(1) NOT NULL default 0,
+  `wthdrawn` tinyint(1) NOT NULL default 0,
   `itemcallnumber` varchar(30) default NULL,
   `issues` smallint(6) default NULL,
   `renewals` smallint(6) default NULL,
@@ -1040,6 +1186,9 @@ CREATE TABLE `items` (
   `materials` varchar(10) default NULL,
   `uri` varchar(255) default NULL,
   `itype` varchar(10) default NULL,
+  `more_subfields_xml` longtext default NULL,
+  `enumchron` varchar(80) default NULL,
+  `copynumber` varchar(32) default NULL,
   PRIMARY KEY  (`itemnumber`),
   UNIQUE KEY `itembarcodeidx` (`barcode`),
   KEY `itembinoidx` (`biblioitemnumber`),
@@ -1094,7 +1243,7 @@ CREATE TABLE `labels_conf` (
   `itemtype` int(1) default '0',
   `barcode` int(1) default '0',
   `dewey` int(1) default '0',
-  `class` int(1) default NULL,
+  `classification` int(1) default NULL,
   `subclass` int(1) default '0',
   `itemcallnumber` int(1) default '0',
   `author` int(1) default '0',
@@ -1102,6 +1251,7 @@ CREATE TABLE `labels_conf` (
   `isbn` int(1) default '0',
   `startlabel` int(2) NOT NULL default '1',
   `printingtype` char(32) default 'BAR',
+  `formatstring` varchar(64) default NULL,
   `layoutname` char(20) NOT NULL default 'TEST',
   `guidebox` int(1) default '0',
   `active` tinyint(1) default '1',
@@ -1112,6 +1262,18 @@ CREATE TABLE `labels_conf` (
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `labels_profile`
+--
+
+DROP TABLE IF EXISTS `labels_profile`;
+CREATE TABLE `labels_profile` (
+  `tmpl_id` int(4) NOT NULL,
+  `prof_id` int(4) NOT NULL,
+  UNIQUE KEY `tmpl_id` (`tmpl_id`),
+  UNIQUE KEY `prof_id` (`prof_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `labels_templates`
 --
@@ -1134,6 +1296,7 @@ CREATE TABLE `labels_templates` (
   `active` int(1) default NULL,
   `units` char(20)  default 'PX',
   `fontsize` int(4) NOT NULL default '3',
+  `font` char(10) NOT NULL default 'TR',
   PRIMARY KEY  (`tmpl_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
@@ -1158,7 +1321,7 @@ CREATE TABLE `letter` (
 DROP TABLE IF EXISTS `marc_subfield_structure`;
 CREATE TABLE `marc_subfield_structure` (
   `tagfield` varchar(3) NOT NULL default '',
-  `tagsubfield` varchar(1) NOT NULL default '',
+  `tagsubfield` varchar(1) NOT NULL default '' COLLATE utf8_bin,
   `liblibrarian` varchar(255) NOT NULL default '',
   `libopac` varchar(255) NOT NULL default '',
   `repeatable` tinyint(4) NOT NULL default 0,
@@ -1289,18 +1452,6 @@ CREATE TABLE `matchchecks` (
   REFERENCES `matchpoints` (`matchpoint_id`) ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
---
--- Table structure for table `mediatypetable`
---
-
-DROP TABLE IF EXISTS `mediatypetable`;
-CREATE TABLE `mediatypetable` (
-  `mediatypecode` varchar(5) NOT NULL default '',
-  `description` text,
-  `itemtypecodes` text,
-  PRIMARY KEY  (`mediatypecode`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
 --
 -- Table structure for table `notifys`
 --
@@ -1319,6 +1470,7 @@ CREATE TABLE `notifys` (
 --
 -- Table structure for table `nozebra`
 --
+
 DROP TABLE IF EXISTS `nozebra`;
 CREATE TABLE `nozebra` (
                 `server` varchar(20)     NOT NULL,
@@ -1329,6 +1481,63 @@ CREATE TABLE `nozebra` (
                 KEY `value` (`server`,`value`))
                 ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `old_issues`
+--
+
+DROP TABLE IF EXISTS `old_issues`;
+CREATE TABLE `old_issues` (
+  `borrowernumber` int(11) default NULL,
+  `itemnumber` int(11) default NULL,
+  `date_due` date default NULL,
+  `branchcode` varchar(10) default NULL,
+  `issuingbranch` varchar(18) default NULL,
+  `returndate` date default NULL,
+  `lastreneweddate` date default NULL,
+  `return` varchar(4) default NULL,
+  `renewals` tinyint(4) default NULL,
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  `issuedate` date default NULL,
+  KEY `old_issuesborridx` (`borrowernumber`),
+  KEY `old_issuesitemidx` (`itemnumber`),
+  KEY `old_bordate` (`borrowernumber`,`timestamp`),
+  CONSTRAINT `old_issues_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) 
+    ON DELETE SET NULL ON UPDATE SET NULL,
+  CONSTRAINT `old_issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) 
+    ON DELETE SET NULL ON UPDATE SET NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `old_reserves`
+--
+DROP TABLE IF EXISTS `old_reserves`;
+CREATE TABLE `old_reserves` (
+  `borrowernumber` int(11) default NULL,
+  `reservedate` date default NULL,
+  `biblionumber` int(11) default NULL,
+  `constrainttype` varchar(1) default NULL,
+  `branchcode` varchar(10) default NULL,
+  `notificationdate` date default NULL,
+  `reminderdate` date default NULL,
+  `cancellationdate` date default NULL,
+  `reservenotes` mediumtext,
+  `priority` smallint(6) default NULL,
+  `found` varchar(1) default NULL,
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  `itemnumber` int(11) default NULL,
+  `waitingdate` date default NULL,
+  KEY `old_reserves_borrowernumber` (`borrowernumber`),
+  KEY `old_reserves_biblionumber` (`biblionumber`),
+  KEY `old_reserves_itemnumber` (`itemnumber`),
+  KEY `old_reserves_branchcode` (`branchcode`),
+  CONSTRAINT `old_reserves_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) 
+    ON DELETE SET NULL ON UPDATE SET NULL,
+  CONSTRAINT `old_reserves_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) 
+    ON DELETE SET NULL ON UPDATE SET NULL,
+  CONSTRAINT `old_reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) 
+    ON DELETE SET NULL ON UPDATE SET NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `opac_news`
 --
@@ -1338,7 +1547,7 @@ CREATE TABLE `opac_news` (
   `idnew` int(10) unsigned NOT NULL auto_increment,
   `title` varchar(250) NOT NULL default '',
   `new` text NOT NULL,
-  `lang` varchar(4) NOT NULL default '',
+  `lang` varchar(25) NOT NULL default '',
   `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
   `expirationdate` date default NULL,
   `number` int(11) default NULL,
@@ -1352,7 +1561,7 @@ CREATE TABLE `opac_news` (
 DROP TABLE IF EXISTS `overduerules`;
 CREATE TABLE `overduerules` (
   `branchcode` varchar(10) NOT NULL default '',
-  `categorycode` varchar(2) NOT NULL default '',
+  `categorycode` varchar(10) NOT NULL default '',
   `delay1` int(4) default 0,
   `letter1` varchar(20) default NULL,
   `debarred1` varchar(1) default 0,
@@ -1365,6 +1574,34 @@ CREATE TABLE `overduerules` (
   PRIMARY KEY  (`branchcode`,`categorycode`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `patroncards`
+--
+
+DROP TABLE IF EXISTS `patroncards`;
+CREATE TABLE `patroncards` (
+  `cardid` int(11) NOT NULL auto_increment,
+  `batch_id` varchar(10) NOT NULL default '1',
+  `borrowernumber` int(11) NOT NULL,
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+   PRIMARY KEY  (`cardid`),
+   KEY `patroncards_ibfk_1` (`borrowernumber`),
+   CONSTRAINT `patroncards_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `patronimage`
+--
+
+DROP TABLE IF EXISTS `patronimage`;
+CREATE TABLE `patronimage` (
+  `cardnumber` varchar(16) NOT NULL,
+  `mimetype` varchar(15) NOT NULL,
+  `imagefile` mediumblob NOT NULL,
+  PRIMARY KEY  (`cardnumber`),
+  CONSTRAINT `patronimage_fk1` FOREIGN KEY (`cardnumber`) REFERENCES `borrowers` (`cardnumber`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `printers`
 --
@@ -1377,6 +1614,26 @@ CREATE TABLE `printers` (
   PRIMARY KEY  (`printername`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `printers_profile`
+--
+
+DROP TABLE IF EXISTS `printers_profile`;
+CREATE TABLE `printers_profile` (
+  `prof_id` int(4) NOT NULL auto_increment,
+  `printername` varchar(40) NOT NULL,
+  `tmpl_id` int(4) NOT NULL,
+  `paper_bin` varchar(20) NOT NULL,
+  `offset_horz` float default NULL,
+  `offset_vert` float default NULL,
+  `creep_horz` float default NULL,
+  `creep_vert` float default NULL,
+  `unit` char(20) NOT NULL default 'POINT',
+  PRIMARY KEY  (`prof_id`),
+  UNIQUE KEY `printername` (`printername`,`tmpl_id`,`paper_bin`),
+  CONSTRAINT `printers_profile_pnfk_1` FOREIGN KEY (`tmpl_id`) REFERENCES `labels_templates` (`tmpl_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `repeatable_holidays`
 --
@@ -1526,7 +1783,7 @@ CREATE TABLE `serial` (
   `planneddate` date default NULL,
   `notes` text,
   `publisheddate` date default NULL,
-  `itemnumber` text,
+  `itemnumber` text default NULL,
   `claimdate` date default NULL,
   `routingnotes` text,
   PRIMARY KEY  (`serialid`)
@@ -1589,18 +1846,6 @@ DROP TABLE IF EXISTS `stopwords`;
   `word` varchar(255) default NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
---
--- Table structure for table `subcategorytable`
---
-
-DROP TABLE IF EXISTS `subcategorytable`;
-CREATE TABLE `subcategorytable` (
-  `subcategorycode` varchar(5) NOT NULL default '',
-  `description` text,
-  `itemtypecodes` text,
-  PRIMARY KEY  (`subcategorycode`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
 --
 -- Table structure for table `subscription`
 --
@@ -1614,9 +1859,9 @@ CREATE TABLE `subscription` (
   `aqbooksellerid` int(11) default 0,
   `cost` int(11) default 0,
   `aqbudgetid` int(11) default 0,
-  `weeklength` tinyint(4) default 0,
-  `monthlength` tinyint(4) default 0,
-  `numberlength` tinyint(4) default 0,
+  `weeklength` int(11) default 0,
+  `monthlength` int(11) default 0,
+  `numberlength` int(11) default 0,
   `periodicity` tinyint(4) default 0,
   `dow` varchar(100) default '',
   `numberingmethod` varchar(100) default '',
@@ -1652,6 +1897,7 @@ CREATE TABLE `subscription` (
   `branchcode` varchar(10) NOT NULL default '',
   `hemisphere` tinyint(3) default 0,
   `lastbranch` varchar(10),
+  `serialsadditems` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`subscriptionid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
@@ -1705,7 +1951,7 @@ CREATE TABLE `suggestions` (
   `volumedesc` varchar(255) default NULL,
   `publicationyear` smallint(6) default 0,
   `place` varchar(255) default NULL,
-  `isbn` varchar(10) default NULL,
+  `isbn` varchar(30) default NULL,
   `mailoverseeing` smallint(1) default 0,
   `biblionumber` int(11) default NULL,
   `reason` text,
@@ -1739,6 +1985,61 @@ CREATE TABLE `tags` (
   PRIMARY KEY  (`entry`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+--
+-- Table structure for table `tags_all`
+--
+
+DROP TABLE IF EXISTS `tags_all`;
+CREATE TABLE `tags_all` (
+  `tag_id`         int(11) NOT NULL auto_increment,
+  `borrowernumber` int(11) NOT NULL,
+  `biblionumber`   int(11) NOT NULL,
+  `term`      varchar(255) NOT NULL,
+  `language`       int(4) default NULL,
+  `date_created` datetime  NOT NULL,
+  PRIMARY KEY  (`tag_id`),
+  KEY `tags_borrowers_fk_1` (`borrowernumber`),
+  KEY `tags_biblionumber_fk_1` (`biblionumber`),
+  CONSTRAINT `tags_borrowers_fk_1` FOREIGN KEY (`borrowernumber`)
+        REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `tags_biblionumber_fk_1` FOREIGN KEY (`biblionumber`)
+        REFERENCES `biblio`     (`biblionumber`)  ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `tags_approval`
+--
+
+DROP TABLE IF EXISTS `tags_approval`;
+CREATE TABLE `tags_approval` (
+  `term`   varchar(255) NOT NULL,
+  `approved`     int(1) NOT NULL default '0',
+  `date_approved` datetime       default NULL,
+  `approved_by` int(11)          default NULL,
+  `weight_total` int(9) NOT NULL default '1',
+  PRIMARY KEY  (`term`),
+  KEY `tags_approval_borrowers_fk_1` (`approved_by`),
+  CONSTRAINT `tags_approval_borrowers_fk_1` FOREIGN KEY (`approved_by`)
+        REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `tags_index`
+--
+
+DROP TABLE IF EXISTS `tags_index`;
+CREATE TABLE `tags_index` (
+  `term`    varchar(255) NOT NULL,
+  `biblionumber` int(11) NOT NULL,
+  `weight`        int(9) NOT NULL default '1',
+  PRIMARY KEY  (`term`,`biblionumber`),
+  KEY `tags_index_biblionumber_fk_1` (`biblionumber`),
+  CONSTRAINT `tags_index_term_fk_1` FOREIGN KEY (`term`)
+        REFERENCES `tags_approval` (`term`)  ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `tags_index_biblionumber_fk_1` FOREIGN KEY (`biblionumber`)
+        REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 --
 -- Table structure for table `userflags`
 --
@@ -1763,6 +2064,7 @@ CREATE TABLE `virtualshelves` (
   `owner` varchar(80) default NULL,
   `category` varchar(1) default NULL,
   `sortfield` varchar(16) default NULL,
+  `lastmodified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   PRIMARY KEY  (`shelfnumber`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
@@ -1775,7 +2077,7 @@ CREATE TABLE `virtualshelfcontents` (
   `shelfnumber` int(11) NOT NULL default 0,
   `biblionumber` int(11) NOT NULL default 0,
   `flags` int(11) default NULL,
-  `dateadded` timestamp NULL default NULL,
+  `dateadded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   KEY `shelfnumber` (`shelfnumber`),
   KEY `biblionumber` (`biblionumber`),
   CONSTRAINT `virtualshelfcontents_ibfk_1` FOREIGN KEY (`shelfnumber`) REFERENCES `virtualshelves` (`shelfnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -1801,6 +2103,7 @@ CREATE TABLE `z3950servers` (
   `icon` text,
   `position` enum('primary','secondary','') NOT NULL default 'primary',
   `type` enum('zed','opensearch') NOT NULL default 'zed',
+  `encoding` text default NULL,
   `description` text NOT NULL,
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -1812,12 +2115,13 @@ CREATE TABLE `z3950servers` (
 DROP TABLE IF EXISTS `zebraqueue`;
 CREATE TABLE `zebraqueue` (
   `id` int(11) NOT NULL auto_increment,
-  `biblio_auth_number` int(11) NOT NULL default '0',
+  `biblio_auth_number` bigint(20) unsigned NOT NULL default '0',
   `operation` char(20) NOT NULL default '',
   `server` char(20) NOT NULL default '',
   `done` int(11) NOT NULL default '0',
   `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
-  PRIMARY KEY  (`id`)
+  PRIMARY KEY  (`id`),
+  KEY `zebraqueue_lookup` (`server`, `biblio_auth_number`, `operation`, `done`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `services_throttle`;
@@ -1827,6 +2131,219 @@ CREATE TABLE `services_throttle` (
   PRIMARY KEY  (`service_type`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+-- http://www.w3.org/International/articles/language-tags/
+
+-- RFC4646
+DROP TABLE IF EXISTS language_subtag_registry;
+CREATE TABLE language_subtag_registry (
+        subtag varchar(25),
+        type varchar(25), -- language-script-region-variant-extension-privateuse
+        description varchar(25), -- only one of the possible descriptions for ease of reference, see language_descriptions for the complete list
+        added date,
+        KEY `subtag` (`subtag`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- TODO: add suppress_scripts
+-- this maps three letter codes defined in iso639.2 back to their
+-- two letter equivilents in rfc4646 (LOC maintains iso639+)
+DROP TABLE IF EXISTS language_rfc4646_to_iso639;
+CREATE TABLE language_rfc4646_to_iso639 (
+        rfc4646_subtag varchar(25),
+        iso639_2_code varchar(25),
+        KEY `rfc4646_subtag` (`rfc4646_subtag`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP TABLE IF EXISTS language_descriptions;
+CREATE TABLE language_descriptions (
+        subtag varchar(25),
+        type varchar(25),
+        lang varchar(25),
+        description varchar(255),
+        KEY `lang` (`lang`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- bi-directional support, keyed by script subcode
+DROP TABLE IF EXISTS language_script_bidi;
+CREATE TABLE language_script_bidi (
+        rfc4646_subtag varchar(25), -- script subtag, Arab, Hebr, etc.
+        bidi varchar(3), -- rtl ltr
+        KEY `rfc4646_subtag` (`rfc4646_subtag`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- TODO: need to map language subtags to script subtags for detection
+-- of bidi when script is not specified (like ar, he)
+DROP TABLE IF EXISTS language_script_mapping;
+CREATE TABLE language_script_mapping (
+        language_subtag varchar(25),
+        script_subtag varchar(25),
+        KEY `language_subtag` (`language_subtag`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP TABLE IF EXISTS `permissions`;
+CREATE TABLE `permissions` (
+  `module_bit` int(11) NOT NULL DEFAULT 0,
+  `code` varchar(64) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
+  PRIMARY KEY  (`module_bit`, `code`),
+  CONSTRAINT `permissions_ibfk_1` FOREIGN KEY (`module_bit`) REFERENCES `userflags` (`bit`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP TABLE IF EXISTS `serialitems`;
+CREATE TABLE `serialitems` (
+       `itemnumber` int(11) NOT NULL,
+       `serialid` int(11) NOT NULL,
+       UNIQUE KEY `serialitemsidx` (`itemnumber`),
+       KEY `serialitems_sfk_1` (`serialid`),
+       CONSTRAINT `serialitems_sfk_1` FOREIGN KEY (`serialid`) REFERENCES `serial` (`serialid`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+                 
+DROP TABLE IF EXISTS `user_permissions`;
+CREATE TABLE `user_permissions` (
+  `borrowernumber` int(11) NOT NULL DEFAULT 0,
+  `module_bit` int(11) NOT NULL DEFAULT 0,
+  `code` varchar(64) DEFAULT NULL,
+  CONSTRAINT `user_permissions_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
+    ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `user_permissions_ibfk_2` FOREIGN KEY (`module_bit`, `code`) REFERENCES `permissions` (`module_bit`, `code`)
+    ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `tmp_holdsqueue`
+--
+
+DROP TABLE IF EXISTS `tmp_holdsqueue`;
+CREATE TABLE `tmp_holdsqueue` (
+  `biblionumber` int(11) default NULL,
+  `itemnumber` int(11) default NULL,
+  `barcode` varchar(20) default NULL,
+  `surname` mediumtext NOT NULL,
+  `firstname` text,
+  `phone` text,
+  `borrowernumber` int(11) NOT NULL,
+  `cardnumber` varchar(16) default NULL,
+  `reservedate` date default NULL,
+  `title` mediumtext,
+  `itemcallnumber` varchar(30) default NULL,
+  `holdingbranch` varchar(10) default NULL,
+  `pickbranch` varchar(10) default NULL,
+  `notes` text,
+  `item_level_request` tinyint(4) NOT NULL default 0
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `message_queue`
+--
+
+DROP TABLE IF EXISTS `message_queue`;
+CREATE TABLE `message_queue` (
+  `message_id` int(11) NOT NULL auto_increment,
+  `borrowernumber` int(11) default NULL,
+  `subject` text,
+  `content` text,
+  `message_transport_type` varchar(20) NOT NULL,
+  `status` enum('sent','pending','failed','deleted') NOT NULL default 'pending',
+  `time_queued` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  `to_address` mediumtext,
+  `from_address` mediumtext,
+  `content_type` text,
+  KEY `message_id` (`message_id`),
+  KEY `borrowernumber` (`borrowernumber`),
+  KEY `message_transport_type` (`message_transport_type`),
+  CONSTRAINT `messageq_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `messageq_ibfk_2` FOREIGN KEY (`message_transport_type`) REFERENCES `message_transport_types` (`message_transport_type`) ON DELETE RESTRICT ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `message_transport_types`
+--
+
+DROP TABLE IF EXISTS `message_transport_types`;
+CREATE TABLE `message_transport_types` (
+  `message_transport_type` varchar(20) NOT NULL,
+  PRIMARY KEY  (`message_transport_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `message_attributes`
+--
+
+DROP TABLE IF EXISTS `message_attributes`;
+CREATE TABLE `message_attributes` (
+  `message_attribute_id` int(11) NOT NULL auto_increment,
+  `message_name` varchar(20) NOT NULL default '',
+  `takes_days` tinyint(1) NOT NULL default '0',
+  PRIMARY KEY  (`message_attribute_id`),
+  UNIQUE KEY `message_name` (`message_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `message_transports`
+--
+
+DROP TABLE IF EXISTS `message_transports`;
+CREATE TABLE `message_transports` (
+  `message_attribute_id` int(11) NOT NULL,
+  `message_transport_type` varchar(20) NOT NULL,
+  `is_digest` tinyint(1) NOT NULL default '0',
+  `letter_module` varchar(20) NOT NULL default '',
+  `letter_code` varchar(20) NOT NULL default '',
+  PRIMARY KEY  (`message_attribute_id`,`message_transport_type`,`is_digest`),
+  KEY `message_transport_type` (`message_transport_type`),
+  KEY `letter_module` (`letter_module`,`letter_code`),
+  CONSTRAINT `message_transports_ibfk_1` FOREIGN KEY (`message_attribute_id`) REFERENCES `message_attributes` (`message_attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `message_transports_ibfk_2` FOREIGN KEY (`message_transport_type`) REFERENCES `message_transport_types` (`message_transport_type`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `message_transports_ibfk_3` FOREIGN KEY (`letter_module`, `letter_code`) REFERENCES `letter` (`module`, `code`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `borrower_message_preferences`
+--
+
+DROP TABLE IF EXISTS `borrower_message_preferences`;
+CREATE TABLE `borrower_message_preferences` (
+  `borrower_message_preference_id` int(11) NOT NULL auto_increment,
+  `borrowernumber` int(11) NOT NULL default '0',
+  `message_attribute_id` int(11) default '0',
+  `days_in_advance` int(11) default '0',
+  `wants_digest` tinyint(1) NOT NULL default '0',
+  PRIMARY KEY  (`borrower_message_preference_id`),
+  KEY `borrowernumber` (`borrowernumber`),
+  KEY `message_attribute_id` (`message_attribute_id`),
+  CONSTRAINT `borrower_message_preferences_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `borrower_message_preferences_ibfk_2` FOREIGN KEY (`message_attribute_id`) REFERENCES `message_attributes` (`message_attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `borrower_message_transport_preferences`
+--
+
+DROP TABLE IF EXISTS `borrower_message_transport_preferences`;
+CREATE TABLE `borrower_message_transport_preferences` (
+  `borrower_message_preference_id` int(11) NOT NULL default '0',
+  `message_transport_type` varchar(20) NOT NULL default '0',
+  PRIMARY KEY  (`borrower_message_preference_id`,`message_transport_type`),
+  KEY `message_transport_type` (`message_transport_type`),
+  CONSTRAINT `borrower_message_transport_preferences_ibfk_1` FOREIGN KEY (`borrower_message_preference_id`) REFERENCES `borrower_message_preferences` (`borrower_message_preference_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `borrower_message_transport_preferences_ibfk_2` FOREIGN KEY (`message_transport_type`) REFERENCES `message_transport_types` (`message_transport_type`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Table structure for table `fieldmapping`
+--
+
+DROP TABLE IF EXISTS `fieldmapping`;
+CREATE TABLE `fieldmapping` (
+  `id` int(11) NOT NULL auto_increment,
+  `field` varchar(255) NOT NULL,
+  `frameworkcode` char(4) NOT NULL default '',
+  `fieldcode` char(3) NOT NULL,
+  `subfieldcode` char(1) NOT NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;