]> granicus.if.org Git - postgresql-autodoc/blob - regressdatabase.sql
added dot short fk template to create dot diagram without fk fullname to help reduce...
[postgresql-autodoc] / regressdatabase.sql
1 --
2 -- $Id: regressdatabase.sql,v 1.2 2006/02/13 01:15:56 rbt Exp $
3 --
4
5 BEGIN;
6 --
7 -- Foreign key'd structure, check constraints, primary keys
8 -- and duplicate table names in different schemas
9 --
10 CREATE SCHEMA product
11  CREATE TABLE product
12  ( product_id SERIAL PRIMARY KEY
13  , product_code text NOT NULL UNIQUE 
14                      CHECK(product_code = upper(product_code))
15  , product_description text
16  );
17
18 CREATE SCHEMA store
19  CREATE TABLE store
20  ( store_id SERIAL PRIMARY KEY
21  , store_code text NOT NULL UNIQUE
22                    CHECK(store_code = upper(store_code))
23  , store_description text
24  )
25
26  CREATE TABLE inventory
27  ( store_id integer REFERENCES store
28                        ON UPDATE CASCADE ON DELETE RESTRICT
29  , product_id integer REFERENCES product.product
30                         ON UPDATE CASCADE ON DELETE RESTRICT
31  , PRIMARY KEY(store_id, product_id)
32  , quantity integer NOT NULL CHECK(quantity > 0)
33  );
34
35 --
36 -- Another schema with 
37 --
38 CREATE SCHEMA warehouse
39  CREATE TABLE warehouse
40  ( warehouse_id SERIAL PRIMARY KEY
41  , warehouse_code text NOT NULL UNIQUE
42                        CHECK(warehouse_code = upper(warehouse_code))
43  , warehouse_manager text NOT NULL
44  , warehouse_supervisor text UNIQUE
45  , warehouse_description text
46  , CHECK (upper(warehouse_manager) != upper(warehouse_supervisor))
47  )
48  CREATE TABLE inventory
49  ( warehouse_id integer REFERENCES warehouse 
50                           ON UPDATE CASCADE
51                           ON DELETE RESTRICT
52  , product_id integer REFERENCES product.product
53                         ON UPDATE CASCADE
54                         ON DELETE RESTRICT
55  , PRIMARY KEY(warehouse_id, product_id)
56  , quantity integer NOT NULL
57                     CHECK(quantity > 0)
58  )
59  CREATE VIEW products AS
60    SELECT DISTINCT product.*
61      FROM inventory
62      JOIN product.product USING (product_id);
63
64 -- Sample index
65 CREATE INDEX quantity_index ON warehouse.inventory (quantity);
66
67 --
68 -- Simple text comments
69 --
70 --COMMENT ON DATABASE IS
71 --'This database has been created for the purpose of simple
72 -- tests on PostgreSQL Autodoc.';
73
74 COMMENT ON SCHEMA product IS
75 'This schema stores a list of products and information
76  about the product';
77
78 COMMENT ON SCHEMA warehouse IS
79 'A list of warehouses and information on warehouses';
80
81 COMMENT ON TABLE warehouse.inventory IS
82 'Warehouse inventory';
83
84 COMMENT ON TABLE store.inventory IS
85 'Store inventory';
86
87 COMMENT ON COLUMN warehouse.warehouse.warehouse_code IS
88 'Internal code which represents warehouses for
89  invoice purposes';
90
91 COMMENT ON COLUMN warehouse.warehouse.warehouse_supervisor IS
92 'Supervisors name for a warehouse when one
93  has been assigned.  The same supervisor may not
94  be assigned to more than one warehouse, per company
95  policy XYZ.';
96
97 COMMENT ON COLUMN warehouse.warehouse.warehouse_manager IS
98 'Name of Warehouse Manager';
99
100 --
101 -- A few simple functions
102 --
103 CREATE FUNCTION product.worker(integer, integer) RETURNS integer AS
104 'SELECT $1 + $1;' LANGUAGE sql;
105
106 CREATE FUNCTION warehouse.worker(integer, integer) RETURNS integer AS
107 'SELECT $1 * $1;' LANGUAGE sql;
108
109 COMMENT ON FUNCTION product.worker(integer, integer) IS
110 'Worker function appropriate for products';
111
112 COMMENT ON FUNCTION warehouse.worker(integer, integer) IS
113 'Worker function appropriate for warehouses.';
114
115 create or replace function product.worker2 (i_1 integer, i_2 integer) returns integer as $$
116 begin
117    return i_1 + i_2;
118 end
119 $$ language plpgsql;
120
121 comment on function product.worker2 (i_1 integer, i_2 integer) 
122 is 'worker function that uses named parameters';
123
124 --
125 -- Inheritance
126 --
127 CREATE SCHEMA inherit
128   CREATE TABLE taba (cola integer)
129   CREATE TABLE tabb (colb integer) inherits(taba)
130   CREATE TABLE tab1 (col1 integer)
131   CREATE TABLE tab1b (col1b integer) inherits(tab1, tabb);
132
133 COMMIT;