|
|
Autodoc - Output SourceThe PostgreSQL Autodoc output is based on the Perl HTML::Template and several included templates which create the Dia, DocBook, HTML and GraphViz sample output files. Template editing is described in the template editing section. The example outputs are based on the below fictitious and not overly useful database. Originally the DB was created for light regression testing, but serves the purpose of demonstrating the basics of this tool. for editing. The database shown below is a copy of the most recent version
--
-- $Id: regressdatabase.sql,v 1.2 2006/02/13 01:15:56 rbt Exp $
--
BEGIN;
--
-- Foreign key'd structure, check constraints, primary keys
-- and duplicate table names in different schemas
--
CREATE SCHEMA product
CREATE TABLE product
( product_id SERIAL PRIMARY KEY
, product_code text NOT NULL UNIQUE
CHECK(product_code = upper(product_code))
, product_description text
);
CREATE SCHEMA store
CREATE TABLE store
( store_id SERIAL PRIMARY KEY
, store_code text NOT NULL UNIQUE
CHECK(store_code = upper(store_code))
, store_description text
)
CREATE TABLE inventory
( store_id integer REFERENCES store
ON UPDATE CASCADE ON DELETE RESTRICT
, product_id integer REFERENCES product.product
ON UPDATE CASCADE ON DELETE RESTRICT
, PRIMARY KEY(store_id, product_id)
, quantity integer NOT NULL CHECK(quantity > 0)
);
--
-- Another schema with
--
CREATE SCHEMA warehouse
CREATE TABLE warehouse
( warehouse_id SERIAL PRIMARY KEY
, warehouse_code text NOT NULL UNIQUE
CHECK(warehouse_code = upper(warehouse_code))
, warehouse_manager text NOT NULL
, warehouse_supervisor text UNIQUE
, warehouse_description text
, CHECK (upper(warehouse_manager) != upper(warehouse_supervisor))
)
CREATE TABLE inventory
( warehouse_id integer REFERENCES warehouse
ON UPDATE CASCADE
ON DELETE RESTRICT
, product_id integer REFERENCES product.product
ON UPDATE CASCADE
ON DELETE RESTRICT
, PRIMARY KEY(warehouse_id, product_id)
, quantity integer NOT NULL
CHECK(quantity > 0)
)
CREATE VIEW products AS
SELECT DISTINCT product.*
FROM inventory
JOIN product.product USING (product_id);
-- Sample index
CREATE INDEX quantity_index ON warehouse.inventory (quantity);
--
-- Simple text comments
--
--COMMENT ON DATABASE IS
--'This database has been created for the purpose of simple
-- tests on PostgreSQL Autodoc.';
COMMENT ON SCHEMA product IS
'This schema stores a list of products and information
about the product';
COMMENT ON SCHEMA warehouse IS
'A list of warehouses and information on warehouses';
COMMENT ON TABLE warehouse.inventory IS
'Warehouse inventory';
COMMENT ON TABLE store.inventory IS
'Store inventory';
COMMENT ON COLUMN warehouse.warehouse.warehouse_code IS
'Internal code which represents warehouses for
invoice purposes';
COMMENT ON COLUMN warehouse.warehouse.warehouse_supervisor IS
'Supervisors name for a warehouse when one
has been assigned. The same supervisor may not
be assigned to more than one warehouse, per company
policy XYZ.';
COMMENT ON COLUMN warehouse.warehouse.warehouse_manager IS
'Name of Warehouse Manager';
--
-- A few simple functions
--
CREATE FUNCTION product.worker(integer, integer) RETURNS integer AS
'SELECT $1 + $1;' LANGUAGE sql;
CREATE FUNCTION warehouse.worker(integer, integer) RETURNS integer AS
'SELECT $1 * $1;' LANGUAGE sql;
COMMENT ON FUNCTION product.worker(integer, integer) IS
'Worker function appropriate for products';
COMMENT ON FUNCTION warehouse.worker(integer, integer) IS
'Worker function appropriate for warehouses.';
--
-- Inheritance
--
CREATE SCHEMA inherit
CREATE TABLE taba (cola integer)
CREATE TABLE tabb (colb integer) inherits(taba)
CREATE TABLE tab1 (col1 integer)
CREATE TABLE tab1b (col1b integer) inherits(tab1, tabb);
COMMIT;
|