A Qcodo based CMS/ecommerce framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1763 lines
71 KiB

12 years ago
  1. USE quasicms;
  2. CREATE TABLE `usergroup` (
  3. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  4. `name` VARCHAR(128),
  5. CONSTRAINT pk_usergroup PRIMARY KEY (`id`),
  6. UNIQUE KEY uk_usergroup (`name`)
  7. )
  8. ENGINE = InnoDB
  9. CHARACTER SET utf8 COLLATE utf8_general_ci;
  10. INSERT INTO usergroup (name) VALUES ('Everyone');
  11. INSERT INTO usergroup (name) VALUES ('Members');
  12. INSERT INTO usergroup (name) VALUES ('Customers');
  13. INSERT INTO usergroup (name) VALUES ('Designers');
  14. INSERT INTO usergroup (name) VALUES ('Administrators');
  15. INSERT INTO usergroup (name) VALUES ('Engineers');
  16. INSERT INTO usergroup (name) VALUES ('Manufacturers');
  17. INSERT INTO usergroup (name) VALUES ('Suppliers');
  18. INSERT INTO usergroup (name) VALUES ('Editors');
  19. CREATE TABLE `permission_type` (
  20. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  21. `name` VARCHAR(64),
  22. CONSTRAINT pk_permission_type PRIMARY KEY (`id`),
  23. UNIQUE KEY uk_permssion_type (`name`)
  24. )
  25. ENGINE = InnoDB
  26. CHARACTER SET utf8 COLLATE utf8_general_ci;
  27. INSERT INTO permission_type (name) VALUES ('None');
  28. INSERT INTO permission_type (name) VALUES ('View');
  29. INSERT INTO permission_type (name) VALUES ('Modify');
  30. INSERT INTO permission_type (name) VALUES ('Delete');
  31. /***********************************************************************
  32. Notes on the person table and its associate dependant tables
  33. 1. INSERT INTO person(is_virtual) VALUES(false);
  34. 2. INSERT INTO account(username,password,now(),true,1,1,person.id)
  35. 3. INSERT INTO address, using person.id FK
  36. So, we create a row in the person table using data in other tables.
  37. This means we need to insert the person first, get the insert id, then insert the others
  38. with the id and then update the person row with the ids from the others to maintain
  39. referential integrity.
  40. Case 2 illustrates the purpose of the design - we want to allow members to send gifts to friends
  41. periodically. So, they can create a new "virtual" person with name and address and store it
  42. making it available as an selection when they choose a shipping address during a checkout.
  43. This way, we can have other names and addresses tied to the Person instead of the Account
  44. thus keeping the one to one relationship of person - account while allowing multiple names
  45. and addresses within normal forms (without duplication). Any additional name and addresses
  46. must be other than type primary and type primary must exist for a Person in order for them
  47. to make a purchase.
  48. Use case - Member Registration:
  49. * Chooses username and login, optional address info (this would define them as a customer) ..
  50. 1. create person object with defaults
  51. 2. create account object using person.id - an account is tied to a single person
  52. 3. if address info, create address object FK person_id gets person.id, type is set to primary
  53. else - error.
  54. 4. repeat for phone, email, shipping, billing - all optional
  55. Use case - Member addition (ie, adds a gift address/person ):
  56. 1. User fills in fields - collect and perform inserts as above
  57. 2. Set address.person_id to new person.id
  58. 3. Set type to billing, friend, etc - mandatory, if not, then this defaults to an address change
  59. Use case - Administrator addition:
  60. 1. If no account exists, steps 1 - 2 of Use Case 1.
  61. 2. Else, (or after 1.) proceed as in Use Case 2 assigning FK id columns to an existing
  62. or newly created row in person (eg. address.person_id = person.id)
  63. ******************************************************************************/
  64. CREATE TABLE `person` (
  65. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  66. `name_prefix` VARCHAR(32) DEFAULT '', -- 'eg. Mr., Ms ..',
  67. `first_name` VARCHAR(256) NOT NULL,
  68. `middle_name` VARCHAR(128) DEFAULT '',
  69. `last_name` VARCHAR(256) NOT NULL,
  70. `name_suffix` VARCHAR(32) DEFAULT '', -- 'eg. PhD. MD, etc ..',
  71. `nick_name` VARCHAR(128) DEFAULT 'Anonymous',
  72. `email_address` VARCHAR(128) NOT NULL,
  73. `phone_number` VARCHAR(32) DEFAULT 'N/A',
  74. `avatar_uri` VARCHAR(256) , -- optional avatar image for person
  75. `company_name` VARCHAR(256) DEFAULT '',
  76. `owner_person_id` MEDIUMINT UNSIGNED,
  77. `is_virtual` BOOL DEFAULT FALSE, -- true for persons in members' addressbook, suppliers, manufacturers ...
  78. CONSTRAINT pk_person PRIMARY KEY (`id`),
  79. INDEX idx_person_firstname (`first_name`),
  80. INDEX idx_person_last_name (`last_name`),
  81. INDEX idx_person_email_address (`email_address`),
  82. -- INDEX idx_person_address (`address_id`),
  83. FOREIGN KEY (`owner_person_id`) REFERENCES person(`id`) ON DELETE CASCADE
  84. )
  85. ENGINE = InnoDB
  86. CHARACTER SET utf8 COLLATE utf8_general_ci;
  87. CREATE TABLE `account_status_type` (
  88. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  89. `name` VARCHAR(64),
  90. CONSTRAINT pk_account_status_type PRIMARY KEY (`id`),
  91. UNIQUE KEY uk_account_status_type (`name`)
  92. )
  93. ENGINE = InnoDB
  94. CHARACTER SET utf8 COLLATE utf8_general_ci;
  95. INSERT INTO account_status_type (name) VALUES ('Active');
  96. INSERT INTO account_status_type (name) VALUES ('Cancelled');
  97. INSERT INTO account_status_type (name) VALUES ('Suspended');
  98. CREATE TABLE `account_type` (
  99. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  100. `name` VARCHAR(64),
  101. CONSTRAINT pk_account_type PRIMARY KEY (`id`),
  102. UNIQUE KEY uk_account_type (`name`)
  103. )
  104. ENGINE = InnoDB
  105. CHARACTER SET utf8 COLLATE utf8_general_ci;
  106. INSERT INTO account_type (name) VALUES ('Member');
  107. INSERT INTO account_type (name) VALUES ('Customer');
  108. INSERT INTO account_type (name) VALUES ('Employee');
  109. INSERT INTO account_type (name) VALUES ('Administrator');
  110. INSERT INTO account_type (name) VALUES ('Supplier');
  111. INSERT INTO account_type (name) VALUES ('Manufacturer');
  112. CREATE TABLE `account` (
  113. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  114. `registration_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  115. `username` VARCHAR(128) NOT NULL,
  116. `password` VARCHAR(128) NOT NULL,
  117. `notes` TEXT,
  118. `last_login` TIMESTAMP,
  119. `login_count` INT UNSIGNED DEFAULT 0,
  120. `online` BOOL NOT NULL DEFAULT FALSE,
  121. `onetime_password` BOOL NOT NULL DEFAULT FALSE,
  122. `valid_password` BOOL NOT NULL DEFAULT TRUE,
  123. `type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  124. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  125. `person_id` MEDIUMINT UNSIGNED NOT NULL,
  126. CONSTRAINT pk_account PRIMARY KEY (`id`),
  127. UNIQUE KEY idx_account_username (`username`),
  128. UNIQUE KEY idx_account_person (`person_id`),
  129. INDEX idx_account_type (`type_id`),
  130. INDEX idx_account_status (`status_id`),
  131. FOREIGN KEY (`person_id`) REFERENCES person(`id`) ON DELETE CASCADE
  132. )
  133. ENGINE = InnoDB
  134. CHARACTER SET utf8 COLLATE utf8_general_ci
  135. COMMENT = 'Corresponds to the normal users | customers | members table';
  136. CREATE TABLE `name_type` (
  137. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  138. `name` VARCHAR(64),
  139. CONSTRAINT pk_name_type PRIMARY KEY (`id`),
  140. UNIQUE KEY idx_name_type(name)
  141. )
  142. ENGINE = InnoDB
  143. CHARACTER SET utf8 COLLATE utf8_general_ci;
  144. INSERT INTO name_type (name) VALUES ('Primary');
  145. INSERT INTO name_type (name) VALUES ('Shipping');
  146. INSERT INTO name_type (name) VALUES ('Billing');
  147. INSERT INTO name_type (name) VALUES ('Historical'); -- people sometimes change names ..
  148. INSERT INTO name_type (name) VALUES ('Alias');
  149. INSERT INTO name_type (name) VALUES ('Friend');
  150. CREATE TABLE `country_type` (
  151. `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  152. `name` VARCHAR(128) NOT NULL DEFAULT '',
  153. `iso_code_2` CHAR(2) NOT NULL DEFAULT '',
  154. `iso_code_3` CHAR(3) NOT NULL DEFAULT '',
  155. PRIMARY KEY (`id`),
  156. UNIQUE KEY `idx_country_name` (`name`),
  157. INDEX `idx_iso_2` (`iso_code_2`),
  158. INDEX `idx_iso_3` (`iso_code_3`)
  159. )
  160. ENGINE = InnoDB
  161. CHARACTER SET utf8 COLLATE utf8_general_ci;
  162. CREATE TABLE `zone_type` (
  163. `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  164. `name` VARCHAR(128) NOT NULL,
  165. `country_id` SMALLINT UNSIGNED NOT NULL DEFAULT 255,
  166. `code` VARCHAR(32) NOT NULL DEFAULT 'N/A',
  167. PRIMARY KEY (`id`),
  168. UNIQUE KEY uk_zone_type_name (`name`),
  169. INDEX idx_zone_code (`code`),
  170. FOREIGN KEY (`country_id`) REFERENCES country_type(`id`) ON DELETE CASCADE
  171. )
  172. ENGINE = InnoDB
  173. CHARACTER SET utf8 COLLATE utf8_general_ci;
  174. CREATE TABLE `address_type` (
  175. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  176. `name` VARCHAR(64),
  177. CONSTRAINT pk_address_type PRIMARY KEY (`id`),
  178. UNIQUE KEY idx_address_type(name)
  179. )
  180. ENGINE = InnoDB
  181. CHARACTER SET utf8 COLLATE utf8_general_ci;
  182. INSERT INTO address_type (name) VALUES ('Primary');
  183. INSERT INTO address_type (name) VALUES ('Shipping');
  184. INSERT INTO address_type (name) VALUES ('Billing');
  185. INSERT INTO address_type (name) VALUES ('Company');
  186. INSERT INTO address_type (name) VALUES ('Friend');
  187. INSERT INTO address_type (name) VALUES ('Manufacturer');
  188. INSERT INTO address_type (name) VALUES ('Supplier');
  189. INSERT INTO address_type (name) VALUES ('Historical');
  190. /*historical includes typo fixes and moved - for order lookups, eventually dated should move to address_history
  191. */
  192. CREATE TABLE `address` (
  193. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  194. `title` VARCHAR(256) DEFAULT 'My Address', -- for human reference, eg. "Dad" or "Uncle Ed"
  195. `person_id` MEDIUMINT UNSIGNED NOT NULL,
  196. `street_1` VARCHAR(256) ,
  197. `street_2` VARCHAR(256) ,
  198. `suburb` VARCHAR(256) ,
  199. `city` VARCHAR(256) ,
  200. `county` VARCHAR(256) , -- text version of zone/district
  201. `zone_id` SMALLINT UNSIGNED NOT NULL DEFAULT 13, -- 'state, province or district
  202. `country_id` SMALLINT UNSIGNED NOT NULL DEFAULT 223,
  203. `postal_code` VARCHAR(32), -- get a table for this
  204. `is_current` BOOL NOT NULL DEFAULT TRUE,
  205. `type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  206. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  207. `last_modification_date` TIMESTAMP,
  208. CONSTRAINT pk_address PRIMARY KEY (`id`),
  209. INDEX idx_address_person (`id`),
  210. INDEX idx_address_type (`type_id`),
  211. INDEX idx_address_zone (`zone_id`),
  212. INDEX idx_address_country (`country_id`),
  213. FOREIGN KEY (`person_id`) REFERENCES person(`id`) ON DELETE CASCADE
  214. )
  215. ENGINE = InnoDB
  216. CHARACTER SET utf8 COLLATE utf8_general_ci;
  217. CREATE TABLE `product_type` (
  218. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  219. `name` VARCHAR(64),
  220. CONSTRAINT pk_product_type PRIMARY KEY (`id`),
  221. UNIQUE KEY idx_product_type(name)
  222. )
  223. ENGINE = InnoDB
  224. CHARACTER SET utf8 COLLATE utf8_general_ci;
  225. INSERT INTO product_type (name) VALUES ('Service');
  226. INSERT INTO product_type (name) VALUES ('Storefront');
  227. INSERT INTO product_type (name) VALUES ('Internal');
  228. INSERT INTO product_type (name) VALUES ('Assembly');
  229. INSERT INTO product_type (name) VALUES ('Download');
  230. INSERT INTO product_type (name) VALUES ('Virtual');
  231. INSERT INTO product_type (name) VALUES ('Other');
  232. CREATE TABLE `product_status_type` (
  233. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  234. `name` VARCHAR(64),
  235. CONSTRAINT pk_product_status_type PRIMARY KEY (`id`),
  236. UNIQUE KEY idx_product_status_type(name)
  237. )
  238. ENGINE = InnoDB
  239. CHARACTER SET utf8 COLLATE utf8_general_ci;
  240. INSERT INTO product_status_type (name) VALUES ('Restricted');
  241. INSERT INTO product_status_type (name) VALUES ('Active');
  242. INSERT INTO product_status_type (name) VALUES ('Disabled');
  243. INSERT INTO product_status_type (name) VALUES ('Retired');
  244. CREATE TABLE `product` (
  245. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  246. `manufacturer_id` MEDIUMINT UNSIGNED DEFAULT 1, -- in house
  247. `supplier_id` MEDIUMINT UNSIGNED DEFAULT 1,
  248. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  249. `name` VARCHAR(128) NOT NULL,
  250. `model` VARCHAR(128) NOT NULL,
  251. `short_description` VARCHAR(128) ,
  252. `long_description` TEXT,
  253. `msrp` DECIMAL(12,2) UNSIGNED,
  254. `wholesale_price` DECIMAL(12,2) UNSIGNED,
  255. `retail_price` DECIMAL(12,2) UNSIGNED,
  256. `cost` DECIMAL(12,2) UNSIGNED,
  257. `weight` FLOAT(10,6) UNSIGNED, -- ounces ..
  258. `height` FLOAT(10,6) UNSIGNED, -- inches, X ..
  259. `width` FLOAT(10,6) UNSIGNED, -- inches, Y
  260. `depth` FLOAT(10,6) UNSIGNED, -- inches, Z
  261. `is_virtual` BOOL NOT NULL DEFAULT FALSE,
  262. `type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  263. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1, -- active, disabled ..
  264. `view_count` BIGINT UNSIGNED,
  265. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1, -- ie. none ..
  266. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 2,
  267. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  268. CONSTRAINT pk_product PRIMARY KEY (`id`),
  269. UNIQUE KEY (`model`),
  270. INDEX idx_product_retail (`retail_price`),
  271. INDEX idx_product_type (`type_id`),
  272. INDEX idx_product_status (`status_id`),
  273. INDEX idx_product_public_perms (`public_permissions_id`),
  274. INDEX idx_product_user_perms (`user_permissions_id`),
  275. INDEX idx_product_group_perms (`group_permissions_id`),
  276. FOREIGN KEY (`manufacturer_id`) REFERENCES person(`id`) ON DELETE SET NULL,
  277. FOREIGN KEY (`supplier_id`) REFERENCES person(`id`) ON DELETE SET NULL
  278. )
  279. ENGINE = InnoDB
  280. CHARACTER SET utf8 COLLATE utf8_general_ci;
  281. CREATE TABLE `image_size_type` (
  282. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  283. `name` VARCHAR(64),
  284. CONSTRAINT pk_image_size_type PRIMARY KEY (`id`),
  285. UNIQUE KEY idx_image_size_type(name)
  286. )
  287. ENGINE = InnoDB
  288. CHARACTER SET utf8 COLLATE utf8_general_ci;
  289. INSERT INTO image_size_type (name) VALUES ('Icon');
  290. INSERT INTO image_size_type (name) VALUES ('Thumb');
  291. INSERT INTO image_size_type (name) VALUES ('Small');
  292. INSERT INTO image_size_type (name) VALUES ('Medium');
  293. INSERT INTO image_size_type (name) VALUES ('Large');
  294. INSERT INTO image_size_type (name) VALUES ('FullScreen');
  295. INSERT INTO image_size_type (name) VALUES ('Intergalactic');
  296. CREATE TABLE `product_image` (
  297. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  298. `product_id` MEDIUMINT UNSIGNED NOT NULL,
  299. `title` VARCHAR(128),
  300. `alt_tag` VARCHAR(128),
  301. `description` VARCHAR(256) ,
  302. `uri` VARCHAR(256),
  303. `x_size` SMALLINT UNSIGNED, -- pixels, X ..
  304. `y_size` SMALLINT UNSIGNED, -- pixels, Y
  305. `size_type` TINYINT UNSIGNED DEFAULT 2,
  306. CONSTRAINT pk_product_image PRIMARY KEY (`id`),
  307. INDEX idx_size_type(`size_type`),
  308. FOREIGN KEY (`product_id`) REFERENCES product(`id`) ON DELETE CASCADE
  309. )
  310. ENGINE = InnoDB
  311. CHARACTER SET utf8 COLLATE utf8_general_ci;
  312. CREATE TABLE `order_status_type` (
  313. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  314. `name` VARCHAR(64),
  315. CONSTRAINT pk_order_status_type PRIMARY KEY (`id`),
  316. UNIQUE KEY idx_order_status_type(name)
  317. )
  318. ENGINE = InnoDB
  319. CHARACTER SET utf8 COLLATE utf8_general_ci;
  320. INSERT INTO order_status_type (name) VALUES ('Shopping'); -- ie. in the cart ..
  321. INSERT INTO order_status_type (name) VALUES ('Pending');
  322. INSERT INTO order_status_type (name) VALUES ('Paid');
  323. INSERT INTO order_status_type (name) VALUES ('Processing');
  324. INSERT INTO order_status_type (name) VALUES ('Packaged');
  325. INSERT INTO order_status_type (name) VALUES ('Shipped');
  326. INSERT INTO order_status_type (name) VALUES ('Cancelled');
  327. INSERT INTO order_status_type (name) VALUES ('Returned'); -- Note: may need to move to order_item ..
  328. INSERT INTO order_status_type (name) VALUES ('Problem');
  329. CREATE TABLE `tax_rate` (
  330. `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  331. `zone_id` SMALLINT UNSIGNED NOT NULL, -- 'state, province or district
  332. `rate` DECIMAL(4,4) UNSIGNED NOT NULL,
  333. CONSTRAINT pk_tax_rate PRIMARY KEY (`id`),
  334. UNIQUE INDEX idx_tax_zone (`zone_id`),
  335. INDEX idx_tax_rate(`rate`),
  336. FOREIGN KEY (`zone_id`) REFERENCES zone_type(`id`)
  337. )
  338. ENGINE = InnoDB
  339. CHARACTER SET utf8 COLLATE utf8_general_ci;
  340. -- INSERT INTO tax_rate ( `rate` ) VALUES (19.6);
  341. -- INSERT INTO tax_rate ( `rate` ) VALUES (5.5);
  342. CREATE TABLE `shipping_rate` (
  343. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  344. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  345. `rate` DECIMAL(2,2) NOT NULL,
  346. `zone_id` SMALLINT UNSIGNED NOT NULL, -- 'state, province or district
  347. CONSTRAINT pk_shipping_rate PRIMARY KEY (`id`),
  348. UNIQUE INDEX idx_shipping_zone (`zone_id`),
  349. INDEX idx_shipping_rate(`id`),
  350. FOREIGN KEY (`zone_id`) REFERENCES zone_type(`id`)
  351. )
  352. ENGINE = InnoDB
  353. CHARACTER SET utf8 COLLATE utf8_general_ci;
  354. -- INSERT INTO shipping_rate ( `rate` ) VALUES (19.6);
  355. -- INSERT INTO shipping_rate ( `rate` ) VALUES (5.5);
  356. CREATE TABLE `shipping_method` (
  357. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  358. `title` VARCHAR(128) DEFAULT 'Shipping Method', -- for display
  359. `carrier` VARCHAR(128),
  360. `service_type` VARCHAR(128),
  361. `class_name` VARCHAR(128),
  362. `transit_time` VARCHAR(16), -- in days, eg. 2 - 3
  363. `description` TEXT,
  364. `image_filename` VARCHAR(128),
  365. `active` BOOL DEFAULT FALSE,
  366. `is_international` BOOL DEFAULT FALSE,
  367. `test_mode` BOOL DEFAULT TRUE,
  368. `sort_order` TINYINT UNSIGNED DEFAULT 0, -- ie, first or top
  369. CONSTRAINT pk_shipping_method PRIMARY KEY (`id`)
  370. )
  371. ENGINE = InnoDB
  372. CHARACTER SET utf8 COLLATE utf8_general_ci;
  373. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  374. VALUES ('Local Pickup', 'PickUp', 'Counter', 'NoClass', 'Pick up at the store.', '0',false);
  375. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  376. VALUES ('United States Postal Service', 'USPS','FIRST CLASS', 'USPS','Basic ground delivery','2 - 4',false);
  377. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  378. VALUES ('United States Postal Service', 'USPS','PRIORITY', 'USPS','Priority Mail','2 - 3',false);
  379. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  380. VALUES ('United States Postal Service', 'USPS','EXPRESS', 'USPS','Express Mail','1 - 2',false);
  381. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  382. VALUES ('United States Postal Service', 'USPS','Global Express Guaranteed', 'USPSIntlRateCalculator','Premium international service','3 - 5',true);
  383. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  384. VALUES ('United States Postal Service', 'USPS','Express Mail International', 'USPSIntlRateCalculator','Expedited International service','3 - 5',true);
  385. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  386. VALUES ('United States Postal Service', 'USPS','Priority Mail International', 'USPSIntlRateCalculator','Reliable, economical accelerated airmail','4 - 9',true);
  387. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  388. VALUES ('United States Postal Service', 'USPS','First Class Mail International', 'USPSIntlRateCalculator','Generic, no frills, low cost service','5 - 28',true);
  389. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  390. VALUES ('Federal Express', 'FDXG','FEDEX_GROUND','Fedex', 'Basic ground service','4 - 5',true);
  391. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  392. VALUES ('Federal Express', 'FDXE','FEDEX_2_DAY','Fedex','2 day service','2',true);
  393. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  394. VALUES ('Federal Express', 'FDXE','STANDARD_OVERNIGHT','Fedex','Standard Overnight service','1',true);
  395. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  396. VALUES ('Federal Express', 'FDXE','INTERNATIONAL_ECONOMY','Fedex','Economy International service','3 - 5',true);
  397. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  398. VALUES ('Federal Express', 'FDXE','INTERNATIONAL_PRIORITY','Fedex','Priority International service',' 2 - 3 ',true);
  399. INSERT INTO shipping_method (title, carrier, service_type, class_name, description, transit_time, is_international)
  400. VALUES ('Federal Express', 'FDXE','INTERNATIONAL_FIRST','Fedex','First class International service','2',true);
  401. CREATE TABLE `payment_type` (
  402. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  403. `name` VARCHAR(64),
  404. CONSTRAINT pk_payment_type PRIMARY KEY (`id`),
  405. UNIQUE KEY idx_payment_type(name)
  406. )
  407. ENGINE = InnoDB
  408. CHARACTER SET utf8 COLLATE utf8_general_ci;
  409. INSERT INTO payment_type (name) VALUES ('Online');
  410. INSERT INTO payment_type (name) VALUES ('MailIn');
  411. INSERT INTO payment_type (name) VALUES ('Cash');
  412. INSERT INTO payment_type (name) VALUES ('Credit');
  413. INSERT INTO payment_type (name) VALUES ('GiftCertificate');
  414. INSERT INTO payment_type (name) VALUES ('Complimentary');
  415. CREATE TABLE `payment_method` (
  416. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  417. `title` VARCHAR(128) DEFAULT 'Payment Method',
  418. `service_provider` VARCHAR(128),
  419. `service_type` VARCHAR(128),
  420. `action_class_name` VARCHAR(128),
  421. `description` TEXT,
  422. `image_uri` VARCHAR(128),
  423. `active` BOOL DEFAULT FALSE,
  424. `requires_cc_number` BOOL DEFAULT FALSE,
  425. `save_cc_number` BOOL DEFAULT FALSE,
  426. `test_mode` BOOL DEFAULT TRUE,
  427. `sort_order` TINYINT UNSIGNED DEFAULT 0, -- ie, first or top
  428. `payment_type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  429. CONSTRAINT pk_payment_method PRIMARY KEY (`id`),
  430. INDEX idx_payment_method_type(`payment_type_id`)
  431. )
  432. ENGINE = InnoDB
  433. CHARACTER SET utf8 COLLATE utf8_general_ci;
  434. INSERT INTO `payment_method` ( title, service_provider, service_type, action_class_name, description, payment_type_id, active, sort_order)
  435. VALUES ('Check/Money Order', 'Our Store', 'Mail', 'PayByMailAction', 'Payment sent by mail', 3, true, 0);
  436. INSERT INTO `payment_method` ( title, service_provider, service_type, action_class_name, description, payment_type_id, sort_order)
  437. VALUES ('PayPal Express Checkout', 'Paypal.com', 'Express Checkout', 'PayPalNVPAction', 'Implementation of PayPal Express Checkout', 1, 2);
  438. INSERT INTO `payment_method` ( title, service_provider, service_type, action_class_name, description, payment_type_id, sort_order)
  439. VALUES ('Credit Card', 'Authorize.net', 'Credit Card', 'AuthorizeNetAction', 'Authorize.net credit card payment processing', 1, 3);
  440. CREATE TABLE `paypal_transaction` (
  441. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  442. `order_id` BIGINT UNSIGNED NOT NULL,
  443. `correlation_id` VARCHAR(128),
  444. `transaction_id` VARCHAR(128),
  445. `pp_token` VARCHAR(128),
  446. `payer_id` VARCHAR (128),
  447. `payer_status` VARCHAR (128),
  448. `payment_status` VARCHAR (128),
  449. `ack_returned` VARCHAR(32),
  450. `api_action` VARCHAR(32),
  451. `time_stamp` DATETIME,
  452. `api_version` VARCHAR(4),
  453. `messages` TEXT,
  454. `amount` DECIMAL(12,2),
  455. /* `shipping_charged` DECIMAL(12,2),
  456. `handling_charged` DECIMAL(12,2),
  457. `tax` DECIMAL(12,2),
  458. `product_total` DECIMAL(12,2),*/
  459. `pp_fee` DECIMAL(12,2),
  460. `payment_method_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  461. CONSTRAINT pk_pp_transaction PRIMARY KEY (`id`),
  462. INDEX idx_pp_transaction_correlationid(`correlation_id`),
  463. INDEX idx_pp_transaction_orderid(`order_id`),
  464. INDEX idx_pp_transaction_payment_methodid(`payment_method_id`),
  465. FOREIGN KEY (`order_id`) REFERENCES `order`(`id`) ON DELETE CASCADE
  466. )
  467. ENGINE = InnoDB
  468. CHARACTER SET utf8 COLLATE utf8_general_ci;
  469. CREATE TABLE `authorize_net_transaction` (
  470. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  471. `order_id` BIGINT UNSIGNED NOT NULL,
  472. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  473. `response_code` VARCHAR(8),
  474. `response_subcode` VARCHAR(8),
  475. `response_reason_code` VARCHAR(8),
  476. `response_reason_text` TEXT,
  477. `authorization_code` VARCHAR(8),
  478. `transaction_id` VARCHAR(128),
  479. `transaction_type` VARCHAR(128),
  480. `amount` DECIMAL(12,2),
  481. `avs_response_code` VARCHAR(8),
  482. `ccv_response_code` VARCHAR(8),
  483. `cav_response_code` VARCHAR(8),
  484. CONSTRAINT pk_authnet_transaction PRIMARY KEY (`id`),
  485. INDEX idx_authnet_transaction_transactionid(`transaction_id`),
  486. INDEX idx_authnet_transaction_orderid(`order_id`)
  487. )
  488. ENGINE = InnoDB
  489. CHARACTER SET utf8 COLLATE utf8_general_ci;
  490. CREATE TABLE `order_type` (
  491. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  492. `name` VARCHAR(64),
  493. CONSTRAINT pk_order_type PRIMARY KEY (`id`),
  494. UNIQUE KEY idx_order_type(name)
  495. )
  496. ENGINE = InnoDB
  497. CHARACTER SET utf8 COLLATE utf8_general_ci;
  498. INSERT INTO order_type (name) VALUES ('Normal');
  499. INSERT INTO order_type (name) VALUES ('Internal');
  500. INSERT INTO order_type (name) VALUES ('Employee');
  501. INSERT INTO order_type (name) VALUES ('Affiliate');
  502. CREATE TABLE `order` (
  503. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  504. `account_id` MEDIUMINT UNSIGNED NOT NULL DEFAULT 1, -- in house
  505. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  506. `last_modification_date` TIMESTAMP,
  507. `completion_date` DATETIME DEFAULT '0000-00-00 00:00:00',
  508. `product_total_cost` DECIMAL(12,2),
  509. `shipping_cost` DECIMAL(12,2),
  510. `shipping_charged` DECIMAL(12,2),
  511. -- `handling_cost` DECIMAL(12,2),
  512. `handling_charged` DECIMAL(12,2),
  513. `tax` DECIMAL(12,2),
  514. `product_total_charged` DECIMAL(12,2),
  515. `shipping_name_prefix` VARCHAR(8),
  516. `shipping_first_name` VARCHAR(128),
  517. `shipping_middle_name` VARCHAR(128),
  518. `shipping_last_name` VARCHAR(128),
  519. `shipping_name_suffix` VARCHAR(8),
  520. `shipping_company` VARCHAR(128),
  521. `shipping_street1` VARCHAR(128),
  522. `shipping_street2` VARCHAR(128),
  523. `shipping_suburb` VARCHAR(128),
  524. `shipping_county` VARCHAR(128),
  525. `shipping_city` VARCHAR(128),
  526. `shipping_zone_id` SMALLINT UNSIGNED,
  527. `shipping_country_id` SMALLINT UNSIGNED,
  528. `shipping_postal_code` VARCHAR(16),
  529. `billing_name_prefix` VARCHAR(8),
  530. `billing_first_name` VARCHAR(128),
  531. `billing_middle_name` VARCHAR(128),
  532. `billing_last_name` VARCHAR(128),
  533. `billing_name_suffix` VARCHAR(8),
  534. `billing_company` VARCHAR(128),
  535. `billing_street1` VARCHAR(128),
  536. `billing_street2` VARCHAR(128),
  537. `billing_suburb` VARCHAR(128),
  538. `billing_county` VARCHAR(128),
  539. `billing_city` VARCHAR(128),
  540. `billing_zone_id` SMALLINT UNSIGNED,
  541. `billing_country_id` SMALLINT UNSIGNED,
  542. `billing_postal_code` VARCHAR(16),
  543. `notes` TEXT ,
  544. `shipping_method_id` TINYINT UNSIGNED DEFAULT 1,
  545. `payment_method_id` TINYINT UNSIGNED DEFAULT 1,
  546. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  547. `type_id` TINYINT UNSIGNED DEFAULT 1,
  548. CONSTRAINT pk_order PRIMARY KEY (`id`),
  549. INDEX idx_order_account (`account_id`),
  550. INDEX idx_order_shipping_method (`shipping_method_id`),
  551. INDEX idx_order_payment_method (`payment_method_id`),
  552. INDEX idx_order_status (`status_id`),
  553. INDEX idx_order_type (`type_id`),
  554. INDEX idx_order_shipping_zone (`shipping_zone_id`),
  555. INDEX idx_order_billing_zone (`billing_zone_id`),
  556. INDEX idx_order_shipping_country (`shipping_country_id`),
  557. INDEX idx_order_billing_country (`billing_country_id`),
  558. FOREIGN KEY (`account_id`) REFERENCES `account`(`id`)
  559. )
  560. ENGINE = InnoDB
  561. CHARACTER SET utf8 COLLATE utf8_general_ci;
  562. CREATE TABLE `tracking_number` (
  563. `order_id` BIGINT UNSIGNED NOT NULL,
  564. `number` VARCHAR(64),
  565. CONSTRAINT pk_tracking_number PRIMARY KEY (`order_id`, `number`),
  566. INDEX idx_tracking_number_orderid(`order_id`)
  567. )
  568. ENGINE = InnoDB
  569. CHARACTER SET utf8 COLLATE utf8_general_ci;
  570. CREATE TABLE `order_change_type` (
  571. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  572. `name` VARCHAR(64),
  573. CONSTRAINT pk_order_change_type PRIMARY KEY (`id`),
  574. UNIQUE KEY idx_order_change_type(name)
  575. )
  576. ENGINE = InnoDB
  577. CHARACTER SET utf8 COLLATE utf8_general_ci;
  578. INSERT INTO order_change_type (name) VALUES ('Refund');
  579. INSERT INTO order_change_type (name) VALUES ('OrderDiscount');
  580. INSERT INTO order_change_type (name) VALUES ('ItemDiscount');
  581. INSERT INTO order_change_type (name) VALUES ('ItemQuantity');
  582. INSERT INTO order_change_type (name) VALUES ('ItemAddition'); -- i _think_ this can support back orders
  583. INSERT INTO order_change_type (name) VALUES ('ShippingAddition');
  584. /* Note: we may have to add discount type, nullable ..*/
  585. CREATE TABLE `order_change` (
  586. `order_id` BIGINT UNSIGNED NOT NULL,
  587. `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  588. `notes` TEXT,
  589. `value` DECIMAL(12,2),
  590. `type_id` TINYINT UNSIGNED NOT NULL,
  591. CONSTRAINT pk_order_change PRIMARY KEY (`order_id`,`date`),
  592. INDEX `idx_order_change_type` (`type_id`),
  593. FOREIGN KEY (`order_id`) REFERENCES `order`(`id`) ON DELETE CASCADE
  594. )
  595. ENGINE = InnoDB
  596. CHARACTER SET utf8 COLLATE utf8_general_ci;
  597. CREATE TABLE `order_status_history` (
  598. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  599. `order_id` BIGINT UNSIGNED NOT NULL,
  600. `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  601. `notes` TEXT ,
  602. `status_id` TINYINT UNSIGNED NOT NULL,
  603. CONSTRAINT pk_order_status_history PRIMARY KEY (`id`),
  604. INDEX idx_order_status_history_order (`order_id`),
  605. INDEX idx_order_status_history_status (`status_id`),
  606. FOREIGN KEY (`order_id`) REFERENCES `order`(`id`) ON DELETE CASCADE
  607. )
  608. ENGINE = InnoDB
  609. CHARACTER SET utf8 COLLATE utf8_general_ci;
  610. CREATE TABLE `shopping_cart` (
  611. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  612. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  613. `last_modification` TIMESTAMP,
  614. `account_id` MEDIUMINT UNSIGNED NOT NULL,
  615. CONSTRAINT pk_shopping_cart PRIMARY KEY (`id`),
  616. -- INDEX idx_shopping_cart_status (`order_id`),
  617. FOREIGN KEY (`account_id`) REFERENCES `account`(`id`) ON DELETE CASCADE
  618. )
  619. ENGINE = InnoDB
  620. CHARACTER SET utf8 COLLATE utf8_general_ci;
  621. CREATE TABLE `block_location_type` (
  622. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  623. `name` VARCHAR(128),
  624. CONSTRAINT pk_block_location_type PRIMARY KEY (`id`),
  625. UNIQUE KEY uk_block_location_type (`name`)
  626. )
  627. ENGINE = InnoDB
  628. CHARACTER SET utf8 COLLATE utf8_general_ci;
  629. INSERT INTO block_location_type (name) VALUES ('PageHeader');
  630. INSERT INTO block_location_type (name) VALUES ('PageFooter');
  631. INSERT INTO block_location_type (name) VALUES ('RightPanel');
  632. INSERT INTO block_location_type (name) VALUES ('CenterPanel');
  633. INSERT INTO block_location_type (name) VALUES ('LeftPanel');
  634. INSERT INTO block_location_type (name) VALUES ('ExtraPanel1');
  635. INSERT INTO block_location_type (name) VALUES ('ExtraPanel2');
  636. INSERT INTO block_location_type (name) VALUES ('ExtraPanel3');
  637. INSERT INTO block_location_type (name) VALUES ('ExtraPanel4');
  638. INSERT INTO block_location_type (name) VALUES ('PageBody'); -- ie. <body> is parent, render outside container ..
  639. CREATE TABLE `content_block` (
  640. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  641. `name` VARCHAR(128) , -- human reference, also used for CSS id
  642. `cssclass` VARCHAR(128) , -- CSS class
  643. `title` VARCHAR(128) , -- optionally visible text
  644. `description` VARCHAR(256) , -- optionally visible text, eg. on list pages
  645. `show_title` BOOL NOT NULL DEFAULT FALSE,
  646. `show_description` BOOL NOT NULL DEFAULT FALSE,
  647. `collapsable` BOOL NOT NULL DEFAULT FALSE , -- optionally visible text, eg. on list pages
  648. `sort_order` TINYINT UNSIGNED NOT NULL DEFAULT 0, -- ie, first or top in ul
  649. `parent_content_block_id` MEDIUMINT UNSIGNED,
  650. `location_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  651. CONSTRAINT pk_content_block PRIMARY KEY (`id`),
  652. INDEX idx_content_block_parent (`parent_content_block_id`),
  653. INDEX idx_content_block_location (`location_id`),
  654. UNIQUE KEY idx_content_block_name (`name`)
  655. )
  656. ENGINE = InnoDB
  657. CHARACTER SET utf8 COLLATE utf8_general_ci;
  658. CREATE TABLE `content_category` (
  659. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  660. `name` VARCHAR(128) , -- human reference
  661. `title` VARCHAR(128) , -- optionally visible text
  662. `description` VARCHAR(256) , -- optionally visible text, eg. on list pages
  663. `image_uri` VARCHAR(256) , -- optional image for the category
  664. `parent_content_category_id` MEDIUMINT UNSIGNED,
  665. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 2, -- view ..
  666. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  667. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  668. CONSTRAINT pk_content_category PRIMARY KEY (`id`),
  669. INDEX idx_content_category_parent (`parent_content_category_id`),
  670. INDEX idx_content_category_public_perms (`public_permissions_id`),
  671. INDEX idx_content_category_user_perms (`user_permissions_id`),
  672. INDEX idx_content_category_group_perms (`group_permissions_id`),
  673. UNIQUE KEY idx_content_category_name (`name`)
  674. )
  675. ENGINE = InnoDB
  676. CHARACTER SET utf8 COLLATE utf8_general_ci;
  677. CREATE TABLE `product_category` (
  678. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  679. `name` VARCHAR(128) , -- human reference
  680. `title` VARCHAR(128) , -- optionally visible text
  681. `description` VARCHAR(256) , -- optionally visible text, eg. on list pages
  682. `image_uri` VARCHAR(256) , -- optional image for the category
  683. `parent_product_category_id` MEDIUMINT UNSIGNED,
  684. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 2, -- view ..
  685. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  686. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  687. CONSTRAINT pk_product_category PRIMARY KEY (`id`),
  688. INDEX idx_product_category_parent (`parent_product_category_id`),
  689. INDEX idx_product_category_public_perms (`public_permissions_id`),
  690. INDEX idx_product_category_user_perms (`user_permissions_id`),
  691. INDEX idx_product_category_group_perms (`group_permissions_id`),
  692. UNIQUE KEY idx_product_category_name (`name`)
  693. )
  694. ENGINE = InnoDB
  695. CHARACTER SET utf8 COLLATE utf8_general_ci;
  696. CREATE TABLE `content_status_type` (
  697. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  698. `name` VARCHAR(128),
  699. CONSTRAINT pk_content_status_type PRIMARY KEY (`id`),
  700. UNIQUE KEY uk_content_status_type (`name`)
  701. )
  702. ENGINE = InnoDB
  703. CHARACTER SET utf8 COLLATE utf8_general_ci;
  704. CREATE TABLE `content_type` (
  705. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  706. `name` VARCHAR(128),
  707. CONSTRAINT pk_content_type PRIMARY KEY (`id`),
  708. UNIQUE KEY uk_content_type (`name`)
  709. )
  710. ENGINE = InnoDB
  711. CHARACTER SET utf8 COLLATE utf8_general_ci;
  712. INSERT INTO content_status_type (name) VALUES ('Published');
  713. INSERT INTO content_status_type (name) VALUES ('Unpublished');
  714. INSERT INTO content_status_type (name) VALUES ('Draft');
  715. INSERT INTO content_status_type (name) VALUES ('Internal');
  716. -- eg. the home page center column, or "about us" ..
  717. INSERT INTO content_type (name) VALUES ('PageBody');
  718. -- a news article, faq, blog - something likely listed in a pagebody with teasers ..
  719. INSERT INTO content_type (name) VALUES ('Article');
  720. -- likely to be listed, or displayed and also can be in a shopping cart ..
  721. INSERT INTO content_type (name) VALUES ('Product');
  722. INSERT INTO content_type (name) VALUES ('Image');
  723. INSERT INTO content_type (name) VALUES ('Video');
  724. INSERT INTO content_type (name) VALUES ('Audio');
  725. INSERT INTO content_type (name) VALUES ('Comment');
  726. INSERT INTO content_type (name) VALUES ('ForumPost');
  727. INSERT INTO content_type (name) VALUES ('BlogPost');
  728. -- little things that go near something else - a form instruction, image descript - small text area; ie a <span>
  729. INSERT INTO content_type (name) VALUES ('Description');
  730. CREATE TABLE `content_item` (
  731. `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  732. `name` VARCHAR(128) NOT NULL, -- human reference, also used for CSS id
  733. `cssclass` VARCHAR(128) , -- CSS class
  734. `title` VARCHAR(128) , -- optionally visible text
  735. `description` VARCHAR(256) , -- optionally visible text
  736. `text` TEXT, -- use either this or uri, if this is null, we try to get uri ..
  737. `sort_order` MEDIUMINT UNSIGNED DEFAULT 0, -- ie, first or top in ul
  738. `show_title` BOOL NOT NULL DEFAULT TRUE,
  739. `show_description` BOOL NOT NULL DEFAULT FALSE,
  740. `show_creator` BOOL NOT NULL DEFAULT TRUE,
  741. `show_creation_date` BOOL NOT NULL DEFAULT TRUE,
  742. `show_last_modification` BOOL NOT NULL DEFAULT TRUE,
  743. `creator_id` MEDIUMINT UNSIGNED DEFAULT 1,
  744. `copyright_notice` VARCHAR(256),
  745. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  746. `last_modification` TIMESTAMP,
  747. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 2, -- view ..
  748. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  749. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  750. -- `is_virtual` BOOL DEFAULT FALSE, -- eg. from somewhere else in a frame ..
  751. `type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  752. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  753. CONSTRAINT pk_content_item PRIMARY KEY (`id`),
  754. UNIQUE KEY uk_content_name (`name`),
  755. INDEX idx_content_title (`title`),
  756. INDEX idx_content_creator (`creator_id`),
  757. INDEX idx_content_type (`type_id`),
  758. INDEX idx_content_status (`status_id`),
  759. INDEX idx_content_public_perms (`public_permissions_id`),
  760. INDEX idx_content_user_perms (`user_permissions_id`),
  761. INDEX idx_content_group_perms (`group_permissions_id`)
  762. )
  763. ENGINE = InnoDB
  764. CHARACTER SET utf8 COLLATE utf8_general_ci;
  765. CREATE TABLE `module` (
  766. `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  767. `name` VARCHAR(128) NOT NULL, -- human reference, also used for CSS id
  768. `cssclass` VARCHAR(128) , -- CSS class
  769. `title` VARCHAR(128) , -- optionally visible text
  770. `description` VARCHAR(256) , -- optionally visible text
  771. `class_name` VARCHAR(256), -- name of the active class object, a "View"
  772. `show_title` BOOL NOT NULL DEFAULT TRUE,
  773. `show_description` BOOL NOT NULL DEFAULT FALSE,
  774. `content_block_id` MEDIUMINT UNSIGNED,
  775. `parent_module_id` INT UNSIGNED,
  776. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 2, -- ie. view ..
  777. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  778. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  779. CONSTRAINT pk_module PRIMARY KEY (`id`),
  780. UNIQUE KEY uk_module_name (`name`),
  781. FOREIGN KEY (`parent_module_id`) REFERENCES module(`id`),
  782. INDEX idx_module_block (`content_block_id`),
  783. INDEX idx_module_public_perms (`public_permissions_id`),
  784. INDEX idx_module_user_perms (`user_permissions_id`),
  785. INDEX idx_module_group_perms (`group_permissions_id`),
  786. INDEX idx_module_title (`title`)
  787. )
  788. ENGINE = InnoDB
  789. CHARACTER SET utf8 COLLATE utf8_general_ci;
  790. CREATE TABLE `page_type` (
  791. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  792. `name` VARCHAR(128),
  793. CONSTRAINT pk_page_type PRIMARY KEY (`id`),
  794. UNIQUE KEY uk_page_type (`name`)
  795. )
  796. ENGINE = InnoDB
  797. CHARACTER SET utf8 COLLATE utf8_general_ci;
  798. INSERT INTO page_type (name) VALUES ('Basic');
  799. INSERT INTO page_type (name) VALUES ('Home');
  800. INSERT INTO page_type (name) VALUES ('Login');
  801. INSERT INTO page_type (name) VALUES ('UserHome');
  802. INSERT INTO page_type (name) VALUES ('EditContactInfo');
  803. INSERT INTO page_type (name) VALUES ('EditPersons');
  804. INSERT INTO page_type (name) VALUES ('Product');
  805. INSERT INTO page_type (name) VALUES ('ProductList');
  806. INSERT INTO page_type (name) VALUES ('ShoppingCartView');
  807. INSERT INTO page_type (name) VALUES ('Checkout');
  808. INSERT INTO page_type (name) VALUES ('Payment');
  809. INSERT INTO page_type (name) VALUES ('ShippingInfo');
  810. INSERT INTO page_type (name) VALUES ('OrderHistory');
  811. INSERT INTO page_type (name) VALUES ('Forum');
  812. INSERT INTO page_type (name) VALUES ('ForumList');
  813. INSERT INTO page_type (name) VALUES ('Article');
  814. INSERT INTO page_type (name) VALUES ('ArticleList');
  815. INSERT INTO page_type (name) VALUES ('Admin');
  816. CREATE TABLE `page_doc_type` (
  817. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  818. `name` VARCHAR(128),
  819. CONSTRAINT pk_page_doc_type PRIMARY KEY (`id`),
  820. UNIQUE KEY uk_page_doc_type (`name`)
  821. )
  822. ENGINE = InnoDB
  823. CHARACTER SET utf8 COLLATE utf8_general_ci;
  824. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
  825. INSERT INTO page_doc_type (name) VALUES ('PDF');
  826. INSERT INTO page_doc_type (name) VALUES ('TEXT');
  827. INSERT INTO page_doc_type (name) VALUES ('RSS');
  828. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">');
  829. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">');
  830. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">');
  831. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
  832. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">');
  833. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">');
  834. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">');
  835. INSERT INTO page_doc_type (name) VALUES ('<!DOCTYPE HTML PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd">');
  836. CREATE TABLE `page_status_type` (
  837. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  838. `name` VARCHAR(128),
  839. CONSTRAINT pk_page_status_type PRIMARY KEY (`id`),
  840. UNIQUE KEY uk_page_status_type (`name`)
  841. )
  842. ENGINE = InnoDB
  843. CHARACTER SET utf8 COLLATE utf8_general_ci;
  844. INSERT INTO page_status_type (name) VALUES ('Published');
  845. INSERT INTO page_status_type (name) VALUES ('Unpublished');
  846. INSERT INTO page_status_type (name) VALUES ('Draft');
  847. INSERT INTO page_status_type (name) VALUES ('Internal');
  848. CREATE TABLE `html_meta_tag`(
  849. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  850. `name` VARCHAR(128) , -- human reference
  851. `content` VARCHAR(256) ,
  852. `type` ENUM('NAME','HTTP-EQUIV') DEFAULT 'NAME',
  853. CONSTRAINT pk_html_meta_tag PRIMARY KEY (`id`),
  854. INDEX idx_html_meta_tag_name (`name`)
  855. )
  856. ENGINE = InnoDB
  857. CHARACTER SET utf8 COLLATE utf8_general_ci;
  858. CREATE TABLE `style_sheet`(
  859. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  860. `name` VARCHAR(128) , -- human reference
  861. `description` VARCHAR(256) ,
  862. `filename` VARCHAR(128) ,
  863. `type` ENUM('HTML','XML') DEFAULT 'HTML',
  864. CONSTRAINT pk_style_sheet PRIMARY KEY (`id`),
  865. INDEX idx_style_sheet_name (`name`)
  866. )
  867. ENGINE = InnoDB
  868. CHARACTER SET utf8 COLLATE utf8_general_ci;
  869. CREATE TABLE `java_script`(
  870. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  871. `name` VARCHAR(128) , -- human reference
  872. `description` VARCHAR(256) ,
  873. `filename` VARCHAR(128) ,
  874. CONSTRAINT pk_java_script PRIMARY KEY (`id`),
  875. INDEX idx_java_script_name (`name`)
  876. )
  877. ENGINE = InnoDB
  878. CHARACTER SET utf8 COLLATE utf8_general_ci;
  879. CREATE TABLE `page` (
  880. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  881. `creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  882. `last_modification` TIMESTAMP,
  883. `name` VARCHAR(128) , -- human reference
  884. `title` VARCHAR(256) ,
  885. `uri` VARCHAR(256) DEFAULT 'index.php',
  886. `has_header` BOOL NOT NULL DEFAULT TRUE,
  887. `has_left_column` BOOL NOT NULL DEFAULT TRUE,
  888. `has_right_column` BOOL NOT NULL DEFAULT TRUE,
  889. `has_footer` BOOL NOT NULL DEFAULT TRUE,
  890. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1, -- ie. none ..
  891. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  892. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  893. `type_id` TINYINT UNSIGNED DEFAULT 1,
  894. `doc_type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  895. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  896. CONSTRAINT pk_page PRIMARY KEY (`id`),
  897. INDEX idx_page_doc_type (`doc_type_id`),
  898. INDEX idx_page_type (`type_id`),
  899. INDEX idx_page_status (`status_id`),
  900. INDEX idx_page_public_perms (`public_permissions_id`),
  901. INDEX idx_page_user_perms (`user_permissions_id`),
  902. INDEX idx_page_group_perms (`group_permissions_id`),
  903. UNIQUE KEY idx_page_name (`name`)
  904. )
  905. ENGINE = InnoDB
  906. CHARACTER SET utf8 COLLATE utf8_general_ci;
  907. CREATE TABLE `menu_status_type` (
  908. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  909. `name` VARCHAR(128),
  910. CONSTRAINT pk_menu_status_type PRIMARY KEY (`id`),
  911. UNIQUE KEY uk_menu_status_type (`name`)
  912. )
  913. ENGINE = InnoDB
  914. CHARACTER SET utf8 COLLATE utf8_general_ci;
  915. INSERT INTO menu_status_type (name) VALUES ('Active');
  916. INSERT INTO menu_status_type (name) VALUES ('Disabled');
  917. CREATE TABLE `menu_item_type` (
  918. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  919. `name` VARCHAR(128),
  920. CONSTRAINT pk_menu_item_type PRIMARY KEY (`id`),
  921. UNIQUE KEY uk_menu_item_type (`name`)
  922. )
  923. ENGINE = InnoDB
  924. CHARACTER SET utf8 COLLATE utf8_general_ci;
  925. INSERT INTO menu_item_type (name) VALUES ('ListMenuItem'); -- the usual <li>
  926. INSERT INTO menu_item_type (name) VALUES ('TabMenuItem'); -- basically show/hide a div, may be AJAX
  927. INSERT INTO menu_item_type (name) VALUES ('BlockMenuItem'); -- a div block, optionally with embedded HTML
  928. INSERT INTO menu_item_type (name) VALUES ('LinkMenuItem'); -- <a> link anywhere in a page ..
  929. CREATE TABLE `menu_type` (
  930. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  931. `name` VARCHAR(128),
  932. CONSTRAINT pk_menu_type PRIMARY KEY (`id`),
  933. UNIQUE KEY uk_menu_type (`name`)
  934. )
  935. ENGINE = InnoDB
  936. CHARACTER SET utf8 COLLATE utf8_general_ci;
  937. INSERT INTO menu_type (name) VALUES ('SideBar');
  938. INSERT INTO menu_type (name) VALUES ('Header');
  939. INSERT INTO menu_type (name) VALUES ('Tabbed');
  940. INSERT INTO menu_type (name) VALUES ('Footer');
  941. CREATE TABLE `menu_item` (
  942. `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
  943. `name` VARCHAR(64) NOT NULL, -- human reference
  944. `css_class` VARCHAR(32) ,
  945. `label` VARCHAR(32) , -- text on the menu item
  946. `uri` VARCHAR(256) NOT NULL, -- either a Page name (eg. Home, ContactUs) or remote link
  947. `is_local` BOOL NOT NULL DEFAULT TRUE, -- false for external links
  948. `is_ssl` BOOL NOT NULL DEFAULT FALSE, -- false for external links
  949. `sort_order` TINYINT UNSIGNED NOT NULL DEFAULT 0, -- ie, first or top in ul
  950. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 2,
  951. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  952. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  953. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  954. `type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  955. `page_id` MEDIUMINT UNSIGNED DEFAULT 0, -- refers to the page we point to, zero for external links
  956. CONSTRAINT pk_menu_item PRIMARY KEY (`id`),
  957. UNIQUE KEY idx_menu_item_name (`name`),
  958. INDEX idx_menu_item_type (`type_id`),
  959. INDEX idx_menu_item_status (`status_id`),
  960. INDEX idx_menu_item_public_perms (`public_permissions_id`),
  961. INDEX idx_menu_item_user_perms (`user_permissions_id`),
  962. INDEX idx_menu_item_group_perms (`group_permissions_id`),
  963. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE
  964. )
  965. ENGINE = InnoDB
  966. CHARACTER SET utf8 COLLATE utf8_general_ci;
  967. CREATE TABLE `menu` (
  968. `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  969. `name` VARCHAR(64) NOT NULL , -- human reference
  970. `title` VARCHAR(32) , -- visible text
  971. `css_class` VARCHAR(32) ,
  972. `sort_order` TINYINT UNSIGNED DEFAULT 0, -- ie, first or top in ul
  973. `show_title` BOOL DEFAULT TRUE,
  974. `menu_item_id` MEDIUMINT UNSIGNED DEFAULT 0, -- ie, this is a submenu within a menu_item
  975. `public_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1, -- ie. none ..
  976. `user_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  977. `group_permissions_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  978. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  979. `type_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  980. CONSTRAINT pk_menu PRIMARY KEY (`id`),
  981. INDEX idx_menu_item (`menu_item_id`),
  982. INDEX idx_menu_type (`type_id`),
  983. INDEX idx_menu_status (`status_id`),
  984. INDEX idx_menu_public_perms (`public_permissions_id`),
  985. INDEX idx_menu_user_perms (`user_permissions_id`),
  986. INDEX idx_menu_group_perms (`group_permissions_id`),
  987. UNIQUE KEY idx_menu_name (`name`)
  988. )
  989. ENGINE = InnoDB
  990. CHARACTER SET utf8 COLLATE utf8_general_ci;
  991. CREATE TABLE `order_item_status_type` (
  992. `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  993. `name` VARCHAR(128),
  994. CONSTRAINT pk_order_item_status_type PRIMARY KEY (`id`),
  995. UNIQUE KEY uk_order_item_status_type (`name`)
  996. )
  997. ENGINE = InnoDB
  998. CHARACTER SET utf8 COLLATE utf8_general_ci;
  999. INSERT INTO order_item_status_type (name) VALUES ('Ordered');
  1000. INSERT INTO order_item_status_type (name) VALUES ('Processing');
  1001. INSERT INTO order_item_status_type (name) VALUES ('BackOrdered');
  1002. INSERT INTO order_item_status_type (name) VALUES ('Shipped');
  1003. INSERT INTO order_item_status_type (name) VALUES ('Returned');
  1004. INSERT INTO order_item_status_type (name) VALUES ('Cancelled');
  1005. INSERT INTO order_item_status_type (name) VALUES ('Internal');
  1006. /*****************************************************************
  1007. Association tables
  1008. ******************************************************************/
  1009. CREATE TABLE `order_item` (
  1010. `order_id` BIGINT UNSIGNED NOT NULL,
  1011. `product_id` MEDIUMINT UNSIGNED NOT NULL,
  1012. `quantity` MEDIUMINT UNSIGNED NOT NULL DEFAULT 1,
  1013. `status_id` TINYINT UNSIGNED NOT NULL DEFAULT 1,
  1014. CONSTRAINT pk_order_product PRIMARY KEY (`product_id`,`order_id`),
  1015. INDEX idx_order_item_order (`order_id`),
  1016. INDEX idx_order_item_product (`product_id`),
  1017. -- FOREIGN KEY (`status_id` ) REFERENCES order_item_status_type(`id`),
  1018. FOREIGN KEY (`product_id` ) REFERENCES product(`id`),
  1019. FOREIGN KEY (`order_id`) REFERENCES `order`(`id`) ON DELETE CASCADE
  1020. )
  1021. ENGINE = InnoDB
  1022. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1023. CREATE TABLE `shopping_cart_item` (
  1024. `shopping_cart_id` BIGINT UNSIGNED NOT NULL,
  1025. `product_id` MEDIUMINT UNSIGNED NOT NULL,
  1026. `quantity` MEDIUMINT UNSIGNED NOT NULL DEFAULT 1,
  1027. CONSTRAINT pk_shopping_cart_product PRIMARY KEY (`product_id`,`shopping_cart_id`),
  1028. INDEX idx_shopping_cart_product_shopping_cart (`shopping_cart_id`),
  1029. INDEX idx_shopping_cart_product_product (`product_id`),
  1030. FOREIGN KEY (`product_id` ) REFERENCES product(`id`) ON DELETE CASCADE,
  1031. FOREIGN KEY (`shopping_cart_id`) REFERENCES `shopping_cart`(`id`) ON DELETE CASCADE
  1032. )
  1033. ENGINE = InnoDB
  1034. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1035. CREATE TABLE `related_product_assn` (
  1036. product_id MEDIUMINT UNSIGNED NOT NULL,
  1037. related_product_id MEDIUMINT UNSIGNED NOT NULL,
  1038. FOREIGN KEY (`product_id`) REFERENCES product(`id`) ON DELETE CASCADE,
  1039. FOREIGN KEY (`related_product_id`) REFERENCES product(`id`) ON DELETE CASCADE
  1040. )
  1041. ENGINE = InnoDB
  1042. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1043. CREATE TABLE `product_product_category_assn` (
  1044. `product_id` MEDIUMINT UNSIGNED NOT NULL,
  1045. `product_category_id` MEDIUMINT UNSIGNED NOT NULL,
  1046. CONSTRAINT pk_product_product_category PRIMARY KEY (`product_category_id`,`product_id`),
  1047. INDEX idx_product_product_category_product(`product_id`),
  1048. INDEX idx_product_product_category_product_category(`product_category_id`),
  1049. FOREIGN KEY (`product_category_id`) REFERENCES product_category(`id`) ON DELETE CASCADE,
  1050. FOREIGN KEY (`product_id`) REFERENCES product(`id`) ON DELETE CASCADE
  1051. )
  1052. ENGINE = InnoDB
  1053. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1054. CREATE TABLE `person_usergroup_assn` (
  1055. `person_id` MEDIUMINT UNSIGNED NOT NULL,
  1056. `usergroup_id` MEDIUMINT UNSIGNED NOT NULL DEFAULT 1,
  1057. CONSTRAINT pk_person_usergroup PRIMARY KEY (`usergroup_id`,`person_id`),
  1058. INDEX idx_person_usergroup_person(`person_id`),
  1059. INDEX idx_person_usergroup_usergroup(`usergroup_id`),
  1060. FOREIGN KEY (`usergroup_id`) REFERENCES usergroup(`id`) ON DELETE CASCADE,
  1061. FOREIGN KEY (`person_id`) REFERENCES person(`id`) ON DELETE CASCADE
  1062. )
  1063. ENGINE = InnoDB
  1064. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1065. CREATE TABLE `content_item_usergroup_assn` (
  1066. `content_item_id` INT UNSIGNED NOT NULL,
  1067. `usergroup_id` MEDIUMINT UNSIGNED NOT NULL,
  1068. CONSTRAINT pk_content_item_usergroup PRIMARY KEY (`usergroup_id`,`content_item_id`),
  1069. INDEX idx_content_item_usergroup_content_item(`content_item_id`),
  1070. INDEX idx_content_item_usergroup_usergroup(`usergroup_id`),
  1071. FOREIGN KEY (`usergroup_id`) REFERENCES usergroup(`id`) ON DELETE CASCADE,
  1072. FOREIGN KEY (`content_item_id`) REFERENCES content_item(`id`) ON DELETE CASCADE
  1073. )
  1074. ENGINE = InnoDB
  1075. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1076. CREATE TABLE `page_content_category_assn` (
  1077. `page_id` MEDIUMINT UNSIGNED NOT NULL,
  1078. `content_category_id` MEDIUMINT UNSIGNED NOT NULL,
  1079. CONSTRAINT pk_page_content_category PRIMARY KEY (`content_category_id`,`page_id`),
  1080. INDEX idx_page_content_category_page(`page_id`),
  1081. INDEX idx_page_content_category_content_category(`content_category_id`),
  1082. FOREIGN KEY (`content_category_id`) REFERENCES content_category(`id`) ON DELETE CASCADE,
  1083. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE
  1084. )
  1085. ENGINE = InnoDB
  1086. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1087. CREATE TABLE `page_usergroup_assn` (
  1088. `page_id` MEDIUMINT UNSIGNED NOT NULL,
  1089. `usergroup_id` MEDIUMINT UNSIGNED NOT NULL,
  1090. CONSTRAINT pk_page_usergroup PRIMARY KEY (`usergroup_id`,`page_id`),
  1091. INDEX idx_page_usergroup_page(`page_id`),
  1092. INDEX idx_page_usergroup_usergroup(`usergroup_id`),
  1093. FOREIGN KEY (`usergroup_id`) REFERENCES usergroup(`id`) ON DELETE CASCADE,
  1094. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE
  1095. )
  1096. ENGINE = InnoDB
  1097. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1098. CREATE TABLE `page_html_meta_tag_assn` (
  1099. `page_id` MEDIUMINT UNSIGNED NOT NULL,
  1100. `html_meta_tag_id` MEDIUMINT UNSIGNED NOT NULL,
  1101. CONSTRAINT pk_page_html_meta_tag PRIMARY KEY (`html_meta_tag_id`,`page_id`),
  1102. INDEX idx_page_html_meta_tag_page(`page_id`),
  1103. INDEX idx_page_html_meta_tag_html_meta_tag(`html_meta_tag_id`),
  1104. FOREIGN KEY (`html_meta_tag_id`) REFERENCES html_meta_tag(`id`) ON DELETE CASCADE,
  1105. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE
  1106. )
  1107. ENGINE = InnoDB
  1108. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1109. CREATE TABLE `page_style_sheet_assn` (
  1110. `page_id` MEDIUMINT UNSIGNED NOT NULL,
  1111. `style_sheet_id` MEDIUMINT UNSIGNED NOT NULL,
  1112. CONSTRAINT pk_page_style_sheet PRIMARY KEY (`style_sheet_id`,`page_id`),
  1113. INDEX idx_page_style_sheet_page(`page_id`),
  1114. INDEX idx_page_style_sheet_style_sheet(`style_sheet_id`),
  1115. FOREIGN KEY (`style_sheet_id`) REFERENCES style_sheet(`id`) ON DELETE CASCADE,
  1116. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE
  1117. )
  1118. ENGINE = InnoDB
  1119. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1120. CREATE TABLE `page_java_script_assn` (
  1121. `page_id` MEDIUMINT UNSIGNED NOT NULL,
  1122. `java_script_id` MEDIUMINT UNSIGNED NOT NULL,
  1123. CONSTRAINT pk_page_java_script PRIMARY KEY (`java_script_id`,`page_id`),
  1124. INDEX idx_page_java_script_page(`page_id`),
  1125. INDEX idx_page_java_script_java_script(`java_script_id`),
  1126. FOREIGN KEY (`java_script_id`) REFERENCES java_script(`id`) ON DELETE CASCADE,
  1127. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE
  1128. )
  1129. ENGINE = InnoDB
  1130. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1131. CREATE TABLE `menu_content_block_assn` (
  1132. `menu_id` SMALLINT UNSIGNED NOT NULL,
  1133. `content_block_id` MEDIUMINT UNSIGNED NOT NULL,
  1134. CONSTRAINT pk_menu_content_block PRIMARY KEY (`content_block_id`,`menu_id`),
  1135. INDEX idx_menu_content_block_menu(`menu_id`),
  1136. INDEX idx_menu_content_block_content_block(`content_block_id`),
  1137. FOREIGN KEY (`content_block_id`) REFERENCES content_block(`id`) ON DELETE CASCADE,
  1138. FOREIGN KEY (`menu_id`) REFERENCES menu(`id`) ON DELETE CASCADE
  1139. )
  1140. ENGINE = InnoDB
  1141. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1142. CREATE TABLE `content_item_content_block_assn` (
  1143. `content_item_id` INT UNSIGNED NOT NULL,
  1144. `content_block_id` MEDIUMINT UNSIGNED NOT NULL,
  1145. CONSTRAINT pk_content_item_content_block PRIMARY KEY (`content_block_id`,`content_item_id`),
  1146. INDEX idx_content_item_content_block_content_item(`content_item_id`),
  1147. INDEX idx_content_item_content_block_content_block(`content_block_id`),
  1148. FOREIGN KEY (`content_block_id`) REFERENCES content_block(`id`) ON DELETE CASCADE,
  1149. FOREIGN KEY (`content_item_id`) REFERENCES content_item(`id`) ON DELETE CASCADE
  1150. )
  1151. ENGINE = InnoDB
  1152. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1153. CREATE TABLE `content_item_content_category_assn` (
  1154. `content_item_id` INT UNSIGNED NOT NULL,
  1155. `content_category_id` MEDIUMINT UNSIGNED NOT NULL,
  1156. CONSTRAINT pk_content_item_content_category PRIMARY KEY (`content_category_id`,`content_item_id`),
  1157. INDEX idx_content_item_content_category_content_item(`content_item_id`),
  1158. INDEX idx_content_item_content_category_content_category(`content_category_id`),
  1159. FOREIGN KEY (`content_category_id`) REFERENCES content_category(`id`) ON DELETE CASCADE,
  1160. FOREIGN KEY (`content_item_id`) REFERENCES content_item(`id`) ON DELETE CASCADE
  1161. )
  1162. ENGINE = InnoDB
  1163. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1164. CREATE TABLE `content_block_page_assn` (
  1165. `content_block_id` MEDIUMINT UNSIGNED NOT NULL,
  1166. `page_id` MEDIUMINT UNSIGNED NOT NULL,
  1167. CONSTRAINT pk_content_block_page PRIMARY KEY (`page_id`,`content_block_id`),
  1168. INDEX idx_content_block_page_content_block(`content_block_id`),
  1169. INDEX idx_content_block_page_page(`page_id`),
  1170. FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE,
  1171. FOREIGN KEY (`content_block_id`) REFERENCES content_block(`id`) ON DELETE CASCADE
  1172. )
  1173. ENGINE = InnoDB
  1174. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1175. CREATE TABLE `menu_item_menu_assn` (
  1176. `menu_item_id` MEDIUMINT UNSIGNED NOT NULL,
  1177. `menu_id` SMALLINT UNSIGNED NOT NULL,
  1178. CONSTRAINT pk_menu_item_menu PRIMARY KEY (`menu_id`,`menu_item_id`),
  1179. INDEX idx_menu_item_menu_menu_item(`menu_item_id`),
  1180. INDEX idx_menu_item_menu_menu(`menu_id`),
  1181. FOREIGN KEY (`menu_id`) REFERENCES menu(`id`) ON DELETE CASCADE,
  1182. FOREIGN KEY (`menu_item_id`) REFERENCES menu_item(`id`) ON DELETE CASCADE
  1183. )
  1184. ENGINE = InnoDB
  1185. CHARACTER SET utf8 COLLATE utf8_general_ci;
  1186. INSERT INTO `country_type` (`id`, `name`, `iso_code_2`, `iso_code_3`) VALUES
  1187. (255, 'World', '--', '---'),
  1188. (1, 'Afghanistan', 'AF', 'AFG'),
  1189. (2, 'Albania', 'AL', 'ALB'),
  1190. (3, 'Algeria', 'DZ', 'DZA'),
  1191. (4, 'American Samoa', 'AS', 'ASM'),
  1192. (5, 'Andorra', 'AD', 'AND'),
  1193. (6, 'Angola', 'AO', 'AGO'),
  1194. (7, 'Anguilla', 'AI', 'AIA'),
  1195. (8, 'Antarctica', 'AQ', 'ATA'),
  1196. (9, 'Antigua and Barbuda', 'AG', 'ATG'),
  1197. (10, 'Argentina', 'AR', 'ARG'),
  1198. (11, 'Armenia', 'AM', 'ARM'),
  1199. (12, 'Aruba', 'AW', 'ABW'),
  1200. (13, 'Australia', 'AU', 'AUS'),
  1201. (14, 'Austria', 'AT', 'AUT'),
  1202. (15, 'Azerbaijan', 'AZ', 'AZE'),
  1203. (16, 'Bahamas', 'BS', 'BHS'),
  1204. (17, 'Bahrain', 'BH', 'BHR'),
  1205. (18, 'Bangladesh', 'BD', 'BGD'),
  1206. (19, 'Barbados', 'BB', 'BRB'),
  1207. (20, 'Belarus', 'BY', 'BLR'),
  1208. (21, 'Belgium', 'BE', 'BEL'),
  1209. (22, 'Belize', 'BZ', 'BLZ'),
  1210. (23, 'Benin', 'BJ', 'BEN'),
  1211. (24, 'Bermuda', 'BM', 'BMU'),
  1212. (25, 'Bhutan', 'BT', 'BTN'),
  1213. (26, 'Bolivia', 'BO', 'BOL'),
  1214. (27, 'Bosnia-Herzegovina', 'BA', 'BIH'),
  1215. (28, 'Botswana', 'BW', 'BWA'),
  1216. (29, 'Bouvet Island', 'BV', 'BVT'),
  1217. (30, 'Brazil', 'BR', 'BRA'),
  1218. (31, 'British Indian Ocean Territory', 'IO', 'IOT'),
  1219. (32, 'Brunei Darussalam', 'BN', 'BRN'),
  1220. (33, 'Bulgaria', 'BG', 'BGR'),
  1221. (34, 'Burkina Faso', 'BF', 'BFA'),
  1222. (35, 'Burundi', 'BI', 'BDI'),
  1223. (36, 'Cambodia', 'KH', 'KHM'),
  1224. (37, 'Cameroon', 'CM', 'CMR'),
  1225. (38, 'Canada', 'CA', 'CAN'),
  1226. (39, 'Cape Verde', 'CV', 'CPV'),
  1227. (40, 'Cayman Islands', 'KY', 'CYM'),
  1228. (41, 'Central African Republic', 'CF', 'CAF'),
  1229. (42, 'Chad', 'TD', 'TCD'),
  1230. (43, 'Chile', 'CL', 'CHL'),
  1231. (44, 'China', 'CN', 'CHN'),
  1232. (45, 'Christmas Island', 'CX', 'CXR'),
  1233. (46, 'Cocos (Keeling) Islands', 'CC', 'CCK'),
  1234. (47, 'Colombia', 'CO', 'COL'),
  1235. (48, 'Comoros', 'KM', 'COM'),
  1236. (49, 'Congo', 'CG', 'COG'),
  1237. (50, 'Cook Islands', 'CK', 'COK'),
  1238. (51, 'Costa Rica', 'CR', 'CRI'),
  1239. (52, 'Cote D''Ivoire', 'CI', 'CIV'),
  1240. (53, 'Croatia', 'HR', 'HRV'),
  1241. (54, 'Cuba', 'CU', 'CUB'),
  1242. (55, 'Cyprus', 'CY', 'CYP'),
  1243. (56, 'Czech Republic', 'CZ', 'CZE'),
  1244. (57, 'Denmark', 'DK', 'DNK'),
  1245. (58, 'Djibouti', 'DJ', 'DJI'),
  1246. (59, 'Dominica', 'DM', 'DMA'),
  1247. (60, 'Dominican Republic', 'DO', 'DOM'),
  1248. (61, 'East Timor', 'TP', 'TMP'),
  1249. (62, 'Ecuador', 'EC', 'ECU'),
  1250. (63, 'Egypt', 'EG', 'EGY'),
  1251. (64, 'El Salvador', 'SV', 'SLV'),
  1252. (65, 'Equatorial Guinea', 'GQ', 'GNQ'),
  1253. (66, 'Eritrea', 'ER', 'ERI'),
  1254. (67, 'Estonia', 'EE', 'EST'),
  1255. (68, 'Ethiopia', 'ET', 'ETH'),
  1256. (69, 'Falkland Islands (Malvinas)', 'FK', 'FLK'),
  1257. (70, 'Faroe Islands', 'FO', 'FRO'),
  1258. (71, 'Fiji', 'FJ', 'FJI'),
  1259. (72, 'Finland', 'FI', 'FIN'),
  1260. (73, 'France', 'FR', 'FRA'),
  1261. (74, 'France, Metropolitan', 'FX', 'FXX'),
  1262. (75, 'French Guiana', 'GF', 'GUF'),
  1263. (76, 'French Polynesia', 'PF', 'PYF'),
  1264. (77, 'French Southern Territories', 'TF', 'ATF'),
  1265. (78, 'Gabon', 'GA', 'GAB'),
  1266. (79, 'Gambia', 'GM', 'GMB'),
  1267. (80, 'Georgia', 'GE', 'GEO'),
  1268. (81, 'Germany', 'DE', 'DEU'),
  1269. (82, 'Ghana', 'GH', 'GHA'),
  1270. (83, 'Gibraltar', 'GI', 'GIB'),
  1271. (84, 'Greece', 'GR', 'GRC'),
  1272. (85, 'Greenland', 'GL', 'GRL'),
  1273. (86, 'Grenada', 'GD', 'GRD'),
  1274. (87, 'Guadeloupe', 'GP', 'GLP'),
  1275. (88, 'Guam', 'GU', 'GUM'),
  1276. (89, 'Guatemala', 'GT', 'GTM'),
  1277. (90, 'Guinea', 'GN', 'GIN'),
  1278. (91, 'Guinea-bissau', 'GW', 'GNB'),
  1279. (92, 'Guyana', 'GY', 'GUY'),
  1280. (93, 'Haiti', 'HT', 'HTI'),
  1281. (94, 'Heard and Mc Donald Islands', 'HM', 'HMD'),
  1282. (95, 'Honduras', 'HN', 'HND'),
  1283. (96, 'Hong Kong', 'HK', 'HKG'),
  1284. (97, 'Hungary', 'HU', 'HUN'),
  1285. (98, 'Iceland', 'IS', 'ISL'),
  1286. (99, 'India', 'IN', 'IND'),
  1287. (100, 'Indonesia', 'ID', 'IDN'),
  1288. (101, 'Iran (Islamic Republic of)', 'IR', 'IRN'),
  1289. (102, 'Iraq', 'IQ', 'IRQ'),
  1290. (103, 'Ireland', 'IE', 'IRL'),
  1291. (104, 'Israel', 'IL', 'ISR'),
  1292. (105, 'Italy', 'IT', 'ITA'),
  1293. (106, 'Jamaica', 'JM', 'JAM'),
  1294. (107, 'Japan', 'JP', 'JPN'),
  1295. (108, 'Jordan', 'JO', 'JOR'),
  1296. (109, 'Kazakhstan', 'KZ', 'KAZ'),
  1297. (110, 'Kenya', 'KE', 'KEN'),
  1298. (111, 'Kiribati', 'KI', 'KIR'),
  1299. (112, 'Korea, Democratic People''s Republic of', 'KP', 'PRK'),
  1300. (113, 'Korea, Republic of', 'KR', 'KOR'),
  1301. (114, 'Kuwait', 'KW', 'KWT'),
  1302. (115, 'Kyrgyzstan', 'KG', 'KGZ'),
  1303. (116, 'Lao People''s Democratic Republic', 'LA', 'LAO'),
  1304. (117, 'Latvia', 'LV', 'LVA'),
  1305. (118, 'Lebanon', 'LB', 'LBN'),
  1306. (119, 'Lesotho', 'LS', 'LSO'),
  1307. (120, 'Liberia', 'LR', 'LBR'),
  1308. (121, 'Libyan Arab Jamahiriya', 'LY', 'LBY'),
  1309. (122, 'Liechtenstein', 'LI', 'LIE'),
  1310. (123, 'Lithuania', 'LT', 'LTU'),
  1311. (124, 'Luxembourg', 'LU', 'LUX'),
  1312. (125, 'Macau', 'MO', 'MAC'),
  1313. (126, 'Macedonia, The Former Yugoslav Republic of', 'MK', 'MKD'),
  1314. (127, 'Madagascar', 'MG', 'MDG'),
  1315. (128, 'Malawi', 'MW', 'MWI'),
  1316. (129, 'Malaysia', 'MY', 'MYS'),
  1317. (130, 'Maldives', 'MV', 'MDV'),
  1318. (131, 'Mali', 'ML', 'MLI'),
  1319. (132, 'Malta', 'MT', 'MLT'),
  1320. (133, 'Marshall Islands', 'MH', 'MHL'),
  1321. (134, 'Martinique', 'MQ', 'MTQ'),
  1322. (135, 'Mauritania', 'MR', 'MRT'),
  1323. (136, 'Mauritius', 'MU', 'MUS'),
  1324. (137, 'Mayotte', 'YT', 'MYT'),
  1325. (138, 'Mexico', 'MX', 'MEX'),
  1326. (139, 'Micronesia, Federated States of', 'FM', 'FSM'),
  1327. (140, 'Moldova, Republic of', 'MD', 'MDA'),
  1328. (141, 'Monaco', 'MC', 'MCO'),
  1329. (142, 'Mongolia', 'MN', 'MNG'),
  1330. (143, 'Montserrat', 'MS', 'MSR'),
  1331. (144, 'Morocco', 'MA', 'MAR'),
  1332. (145, 'Mozambique', 'MZ', 'MOZ'),
  1333. (146, 'Myanmar', 'MM', 'MMR'),
  1334. (147, 'Namibia', 'NA', 'NAM'),
  1335. (148, 'Nauru', 'NR', 'NRU'),
  1336. (149, 'Nepal', 'NP', 'NPL'),
  1337. (150, 'Netherlands', 'NL', 'NLD'),
  1338. (151, 'Netherlands Antilles', 'AN', 'ANT'),
  1339. (152, 'New Caledonia', 'NC', 'NCL'),
  1340. (153, 'New Zealand', 'NZ', 'NZL'),
  1341. (154, 'Nicaragua', 'NI', 'NIC'),
  1342. (155, 'Niger', 'NE', 'NER'),
  1343. (156, 'Nigeria', 'NG', 'NGA'),
  1344. (157, 'Niue', 'NU', 'NIU'),
  1345. (158, 'Norfolk Island', 'NF', 'NFK'),
  1346. (159, 'Northern Mariana Islands', 'MP', 'MNP'),
  1347. (160, 'Norway', 'NO', 'NOR'),
  1348. (161, 'Oman', 'OM', 'OMN'),
  1349. (162, 'Pakistan', 'PK', 'PAK'),
  1350. (163, 'Palau', 'PW', 'PLW'),
  1351. (164, 'Panama', 'PA', 'PAN'),
  1352. (165, 'Papua New Guinea', 'PG', 'PNG'),
  1353. (166, 'Paraguay', 'PY', 'PRY'),
  1354. (167, 'Peru', 'PE', 'PER'),
  1355. (168, 'Philippines', 'PH', 'PHL'),
  1356. (169, 'Pitcairn', 'PN', 'PCN'),
  1357. (170, 'Poland', 'PL', 'POL'),
  1358. (171, 'Portugal', 'PT', 'PRT'),
  1359. (172, 'Puerto Rico', 'PR', 'PRI'),
  1360. (173, 'Qatar', 'QA', 'QAT'),
  1361. (174, 'Reunion', 'RE', 'REU'),
  1362. (175, 'Romania', 'RO', 'ROM'),
  1363. (176, 'Russian Federation', 'RU', 'RUS'),
  1364. (177, 'Rwanda', 'RW', 'RWA'),
  1365. (178, 'Saint Kitts and Nevis', 'KN', 'KNA'),
  1366. (179, 'Saint Lucia', 'LC', 'LCA'),
  1367. (180, 'Saint Vincent and the Grenadines', 'VC', 'VCT'),
  1368. (181, 'Samoa', 'WS', 'WSM'),
  1369. (182, 'San Marino', 'SM', 'SMR'),
  1370. (183, 'Sao Tome and Principe', 'ST', 'STP'),
  1371. (184, 'Saudi Arabia', 'SA', 'SAU'),
  1372. (185, 'Senegal', 'SN', 'SEN'),
  1373. (186, 'Seychelles', 'SC', 'SYC'),
  1374. (187, 'Sierra Leone', 'SL', 'SLE'),
  1375. (188, 'Singapore', 'SG', 'SGP'),
  1376. (189, 'Slovakia (Slovak Republic)', 'SK', 'SVK'),
  1377. (190, 'Slovenia', 'SI', 'SVN'),
  1378. (191, 'Solomon Islands', 'SB', 'SLB'),
  1379. (192, 'Somalia', 'SO', 'SOM'),
  1380. (193, 'South Africa', 'ZA', 'ZAF'),
  1381. (194, 'South Georgia and the South Sandwich Islands', 'GS', 'SGS'),
  1382. (195, 'Spain', 'ES', 'ESP'),
  1383. (196, 'Sri Lanka', 'LK', 'LKA'),
  1384. (197, 'St. Helena', 'SH', 'SHN'),
  1385. (198, 'St. Pierre and Miquelon', 'PM', 'SPM'),
  1386. (199, 'Sudan', 'SD', 'SDN'),
  1387. (200, 'Suriname', 'SR', 'SUR'),
  1388. (201, 'Svalbard and Jan Mayen Islands', 'SJ', 'SJM'),
  1389. (202, 'Swaziland', 'SZ', 'SWZ'),
  1390. (203, 'Sweden', 'SE', 'SWE'),
  1391. (204, 'Switzerland', 'CH', 'CHE'),
  1392. (205, 'Syrian Arab Republic', 'SY', 'SYR'),
  1393. (206, 'Taiwan', 'TW', 'TWN'),
  1394. (207, 'Tajikistan', 'TJ', 'TJK'),
  1395. (208, 'Tanzania, United Republic of', 'TZ', 'TZA'),
  1396. (209, 'Thailand', 'TH', 'THA'),
  1397. (210, 'Togo', 'TG', 'TGO'),
  1398. (211, 'Tokelau', 'TK', 'TKL'),
  1399. (212, 'Tonga', 'TO', 'TON'),
  1400. (213, 'Trinidad and Tobago', 'TT', 'TTO'),
  1401. (214, 'Tunisia', 'TN', 'TUN'),
  1402. (215, 'Turkey', 'TR', 'TUR'),
  1403. (216, 'Turkmenistan', 'TM', 'TKM'),
  1404. (217, 'Turks and Caicos Islands', 'TC', 'TCA'),
  1405. (218, 'Tuvalu', 'TV', 'TUV'),
  1406. (219, 'Uganda', 'UG', 'UGA'),
  1407. (220, 'Ukraine', 'UA', 'UKR'),
  1408. (221, 'United Arab Emirates', 'AE', 'ARE'),
  1409. (222, 'United Kingdom', 'GB', 'GBR'),
  1410. (223, 'United States', 'US', 'USA'),
  1411. (224, 'United States Minor Outlying Islands', 'UM', 'UMI'),
  1412. (225, 'Uruguay', 'UY', 'URY'),
  1413. (226, 'Uzbekistan', 'UZ', 'UZB'),
  1414. (227, 'Vanuatu', 'VU', 'VUT'),
  1415. (228, 'Vatican City State (Holy See)', 'VA', 'VAT'),
  1416. (229, 'Venezuela', 'VE', 'VEN'),
  1417. (230, 'Viet Nam', 'VN', 'VNM'),
  1418. (231, 'Virgin Islands (British)', 'VG', 'VGB'),
  1419. (232, 'Virgin Islands (U.S.)', 'VI', 'VIR'),
  1420. (233, 'Wallis and Futuna Islands', 'WF', 'WLF'),
  1421. (234, 'Western Sahara', 'EH', 'ESH'),
  1422. (235, 'Yemen', 'YE', 'YEM'),
  1423. (236, 'Yugoslavia', 'YU', 'YUG'),
  1424. (237, 'Zaire', 'ZR', 'ZAR'),
  1425. (238, 'Zambia', 'ZM', 'ZMB'),
  1426. (239, 'Zimbabwe', 'ZW', 'ZWE'),
  1427. (240, 'Aaland Islands', 'AX', 'ALA');
  1428. INSERT INTO `zone_type` (`id`, `country_id`, `code`, `name`) VALUES
  1429. (255, 255, '--', 'No Zone'),
  1430. (1, 223, 'AL', 'Alabama'),
  1431. (2, 223, 'AK', 'Alaska'),
  1432. (3, 223, 'AS', 'American Samoa'),
  1433. (4, 223, 'AZ', 'Arizona'),
  1434. (5, 223, 'AR', 'Arkansas'),
  1435. (6, 223, 'AF', 'Armed Forces Africa'),
  1436. (7, 223, 'AA', 'Armed Forces Americas'),
  1437. (8, 223, 'AC', 'Armed Forces Canada'),
  1438. (9, 223, 'AE', 'Armed Forces Europe'),
  1439. (10, 223, 'AM', 'Armed Forces Middle East'),
  1440. (11, 223, 'AP', 'Armed Forces Pacific'),
  1441. (12, 223, 'CA', 'California'),
  1442. (13, 223, 'CO', 'Colorado'),
  1443. (14, 223, 'CT', 'Connecticut'),
  1444. (15, 223, 'DE', 'Delaware'),
  1445. (16, 223, 'DC', 'District of Columbia'),
  1446. (17, 223, 'FM', 'Federated States Of Micronesia'),
  1447. (18, 223, 'FL', 'Florida'),
  1448. (19, 223, 'GA', 'Georgia'),
  1449. (20, 223, 'GU', 'Guam'),
  1450. (21, 223, 'HI', 'Hawaii'),
  1451. (22, 223, 'ID', 'Idaho'),
  1452. (23, 223, 'IL', 'Illinois'),
  1453. (24, 223, 'IN', 'Indiana'),
  1454. (25, 223, 'IA', 'Iowa'),
  1455. (26, 223, 'KS', 'Kansas'),
  1456. (27, 223, 'KY', 'Kentucky'),
  1457. (28, 223, 'LA', 'Louisiana'),
  1458. (29, 223, 'ME', 'Maine'),
  1459. (30, 223, 'MH', 'Marshall Islands'),
  1460. (31, 223, 'MD', 'Maryland'),
  1461. (32, 223, 'MA', 'Massachusetts'),
  1462. (33, 223, 'MI', 'Michigan'),
  1463. (34, 223, 'MN', 'Minnesota'),
  1464. (35, 223, 'MS', 'Mississippi'),
  1465. (36, 223, 'MO', 'Missouri'),
  1466. (37, 223, 'MT', 'Montana'),
  1467. (38, 223, 'NE', 'Nebraska'),
  1468. (39, 223, 'NV', 'Nevada'),
  1469. (40, 223, 'NH', 'New Hampshire'),
  1470. (41, 223, 'NJ', 'New Jersey'),
  1471. (42, 223, 'NM', 'New Mexico'),
  1472. (43, 223, 'NY', 'New York'),
  1473. (44, 223, 'NC', 'North Carolina'),
  1474. (45, 223, 'ND', 'North Dakota'),
  1475. (46, 223, 'MP', 'Northern Mariana Islands'),
  1476. (47, 223, 'OH', 'Ohio'),
  1477. (48, 223, 'OK', 'Oklahoma'),
  1478. (49, 223, 'OR', 'Oregon'),
  1479. (50, 163, 'PW', 'Palau'),
  1480. (51, 223, 'PA', 'Pennsylvania'),
  1481. (52, 223, 'PR', 'Puerto Rico'),
  1482. (53, 223, 'RI', 'Rhode Island'),
  1483. (54, 223, 'SC', 'South Carolina'),
  1484. (55, 223, 'SD', 'South Dakota'),
  1485. (56, 223, 'TN', 'Tennessee'),
  1486. (57, 223, 'TX', 'Texas'),
  1487. (58, 223, 'UT', 'Utah'),
  1488. (59, 223, 'VT', 'Vermont'),
  1489. (60, 223, 'VI', 'Virgin Islands'),
  1490. (61, 223, 'VA', 'Virginia'),
  1491. (62, 223, 'WA', 'Washington'),
  1492. (63, 223, 'WV', 'West Virginia'),
  1493. (64, 223, 'WI', 'Wisconsin'),
  1494. (65, 223, 'WY', 'Wyoming'),
  1495. (66, 38, 'AB', 'Alberta'),
  1496. (67, 38, 'BC', 'British Columbia'),
  1497. (68, 38, 'MB', 'Manitoba'),
  1498. (69, 38, 'NL', 'Newfoundland'),
  1499. (70, 38, 'NB', 'New Brunswick'),
  1500. (71, 38, 'NS', 'Nova Scotia'),
  1501. (72, 38, 'NT', 'Northwest Territories'),
  1502. (73, 38, 'NU', 'Nunavut'),
  1503. (74, 38, 'ON', 'Ontario'),
  1504. (75, 38, 'PE', 'Prince Edward Island'),
  1505. (76, 38, 'QC', 'Quebec'),
  1506. (77, 38, 'SK', 'Saskatchewan'),
  1507. (78, 38, 'YT', 'Yukon Territory'),
  1508. (79, 81, 'NDS', 'Niedersachsen'),
  1509. (80, 81, 'BAW', 'Baden Würtemberg'),
  1510. (81, 81, 'BAY', 'Bayern'),
  1511. (82, 81, 'BER', 'Berlin'),
  1512. (83, 81, 'BRG', 'Brandenburg'),
  1513. (84, 81, 'BRE', 'Bremen'),
  1514. (85, 81, 'HAM', 'Hamburg'),
  1515. (86, 81, 'HES', 'Hessen'),
  1516. (87, 81, 'MEC', 'Mecklenburg-Vorpommern'),
  1517. (88, 81, 'NRW', 'Nordrhein-Westfalen'),
  1518. (89, 81, 'RHE', 'Rheinland-Pfalz'),
  1519. (90, 81, 'SAR', 'Saarland'),
  1520. (91, 81, 'SAS', 'Sachsen'),
  1521. (92, 81, 'SAC', 'Sachsen-Anhalt'),
  1522. (93, 81, 'SCN', 'Schleswig-Holstein'),
  1523. (94, 81, 'THE', 'Thringen'),
  1524. (95, 14, 'WI', 'Wien'),
  1525. (96, 14, 'NO', 'Niedersterreich'),
  1526. (97, 14, 'OO', 'Obersterreich'),
  1527. (98, 14, 'SB', 'Salzburg'),
  1528. (99, 14, 'KN', 'Kärnten'),
  1529. (100, 14, 'ST', 'Steiermark'),
  1530. (101, 14, 'TI', 'Tirol'),
  1531. (102, 14, 'BL', 'Burgenland'),
  1532. (103, 14, 'VB', 'Voralberg'),
  1533. (104, 204, 'AG', 'Aargau'),
  1534. (105, 204, 'AI', 'Appenzell Innerrhoden'),
  1535. (106, 204, 'AR', 'Appenzell Ausserrhoden'),
  1536. (107, 204, 'BE', 'Bern'),
  1537. (108, 204, 'BL', 'Basel-Landschaft'),
  1538. (109, 204, 'BS', 'Basel-Stadt'),
  1539. (110, 204, 'FR', 'Freiburg'),
  1540. (111, 204, 'GE', 'Genf'),
  1541. (112, 204, 'GL', 'Glarus'),
  1542. (113, 204, 'JU', 'Graubnden'),
  1543. (114, 204, 'JU', 'Jura'),
  1544. (115, 204, 'LU', 'Luzern'),
  1545. (116, 204, 'NE', 'Neuenburg'),
  1546. (117, 204, 'NW', 'Nidwalden'),
  1547. (118, 204, 'OW', 'Obwalden'),
  1548. (119, 204, 'SG', 'St. Gallen'),
  1549. (120, 204, 'SH', 'Schaffhausen'),
  1550. (121, 204, 'SO', 'Solothurn'),
  1551. (122, 204, 'SZ', 'Schwyz'),
  1552. (123, 204, 'TG', 'Thurgau'),
  1553. (124, 204, 'TI', 'Tessin'),
  1554. (125, 204, 'UR', 'Uri'),
  1555. (126, 204, 'VD', 'Waadt'),
  1556. (127, 204, 'VS', 'Wallis'),
  1557. (128, 204, 'ZG', 'Zug'),
  1558. (129, 204, 'ZH', 'Zrich'),
  1559. (130, 195, 'A Corua', 'A Corua'),
  1560. (131, 195, 'Alava', 'Alava'),
  1561. (132, 195, 'Albacete', 'Albacete'),
  1562. (133, 195, 'Alicante', 'Alicante'),
  1563. (134, 195, 'Almeria', 'Almeria'),
  1564. (135, 195, 'Asturias', 'Asturias'),
  1565. (136, 195, 'Avila', 'Avila'),
  1566. (137, 195, 'Badajoz', 'Badajoz'),
  1567. (138, 195, 'Baleares', 'Baleares'),
  1568. (139, 195, 'Barcelona', 'Barcelona'),
  1569. (140, 195, 'Burgos', 'Burgos'),
  1570. (141, 195, 'Caceres', 'Caceres'),
  1571. (142, 195, 'Cadiz', 'Cadiz'),
  1572. (143, 195, 'Cantabria', 'Cantabria'),
  1573. (144, 195, 'Castellon', 'Castellon'),
  1574. (145, 195, 'Ceuta', 'Ceuta'),
  1575. (146, 195, 'Ciudad Real', 'Ciudad Real'),
  1576. (147, 195, 'Cordoba', 'Cordoba'),
  1577. (148, 195, 'Cuenca', 'Cuenca'),
  1578. (149, 195, 'Girona', 'Girona'),
  1579. (150, 195, 'Granada', 'Granada'),
  1580. (151, 195, 'Guadalajara', 'Guadalajara'),
  1581. (152, 195, 'Guipuzcoa', 'Guipuzcoa'),
  1582. (153, 195, 'Huelva', 'Huelva'),
  1583. (154, 195, 'Huesca', 'Huesca'),
  1584. (155, 195, 'Jaen', 'Jaen'),
  1585. (156, 195, 'La Rioja', 'La Rioja'),
  1586. (157, 195, 'Las Palmas', 'Las Palmas'),
  1587. (158, 195, 'Leon', 'Leon'),
  1588. (159, 195, 'Lleida', 'Lleida'),
  1589. (160, 195, 'Lugo', 'Lugo'),
  1590. (161, 195, 'Madrid', 'Madrid'),
  1591. (162, 195, 'Malaga', 'Malaga'),
  1592. (163, 195, 'Melilla', 'Melilla'),
  1593. (164, 195, 'Murcia', 'Murcia'),
  1594. (165, 195, 'Navarra', 'Navarra'),
  1595. (166, 195, 'Ourense', 'Ourense'),
  1596. (167, 195, 'Palencia', 'Palencia'),
  1597. (168, 195, 'Pontevedra', 'Pontevedra'),
  1598. (169, 195, 'Salamanca', 'Salamanca'),
  1599. (170, 195, 'Santa Cruz de Tenerife', 'Santa Cruz de Tenerife'),
  1600. (171, 195, 'Segovia', 'Segovia'),
  1601. (172, 195, 'Sevilla', 'Sevilla'),
  1602. (173, 195, 'Soria', 'Soria'),
  1603. (174, 195, 'Tarragona', 'Tarragona'),
  1604. (175, 195, 'Teruel', 'Teruel'),
  1605. (176, 195, 'Toledo', 'Toledo'),
  1606. (177, 195, 'Valencia', 'Valencia'),
  1607. (178, 195, 'Valladolid', 'Valladolid'),
  1608. (179, 195, 'Vizcaya', 'Vizcaya'),
  1609. (180, 195, 'Zamora', 'Zamora'),
  1610. (181, 195, 'Zaragoza', 'Zaragoza'),
  1611. (182, 13, 'ACT', 'Australian Capital Territory'),
  1612. (183, 13, 'NSW', 'New South Wales'),
  1613. (184, 13, 'NT', 'Northern Territory'),
  1614. (185, 13, 'QLD', 'Queensland'),
  1615. (186, 13, 'SA', 'South Australia'),
  1616. (187, 13, 'TAS', 'Tasmania'),
  1617. (188, 13, 'VIC', 'Victoria'),
  1618. (189, 13, 'WA', 'Western Australia');
  1619. -- now we need some views for order totals, shipping, tax etc ..
  1620. /*
  1621. CREATE IF NOT EXISTS VIEW order_totals AS (
  1622. SELECT sum(p.retail_price) AS gross,
  1623. sum(p.cost) AS total_cost,
  1624. sum(p.weight) AS total_weight,
  1625. o.shipping_rate,
  1626. o.tax_rate,
  1627. (p.weight * o.shipping rate) AS shipping_cost
  1628. FROM order_product op
  1629. LEFT JOIN product p ON p.id = op.id
  1630. LEFT JOIN order o ON op.order_id = o.order_id
  1631. GROUP BY o.order_id
  1632. GROUP BY p.id
  1633. );
  1634. */