123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- -- Copyright Materialize, Inc. and contributors. All rights reserved.
- --
- -- Use of this software is governed by the Business Source License
- -- included in the LICENSE file at the root of this repository.
- --
- -- As of the Change Date specified in that file, in accordance with
- -- the Business Source License, use of this software will be governed
- -- by the Apache License, Version 2.0.
- -- Table definitions for a very simple star schema (one dimension and one fact table).
- -- Reset schema
- -- ------------
- DROP SCHEMA IF EXISTS star CASCADE;
- CREATE SCHEMA star;
- SET search_path = 'star';
- -- Fact table and data
- -- -------------------
- CREATE TABLE ft (k INT, v INT NOT NULL, fk1 INT, fk2 INT);
- CREATE INDEX ft_i1 ON ft(k);
- INSERT INTO ft VALUES
- -- one NULL row in ft
- (NULL, 100, 1, 2),
- -- 1-5 have one row each
- (1, 101, 1, 2),
- (2, 102, 2, 3),
- (3, 103, 3, 4),
- (4, 104, 4, 5),
- (5, 105, 5, 6)
- -- 7 is not present in either table
- ;
- -- Dimension table and data (d1)
- -- -----------------------------
- CREATE TABLE d1 (pk1 INT, pk2 INT NOT NULL, v INT NOT NULL);
- CREATE INDEX d1_i1 ON d1(pk1, pk2);
- INSERT INTO d1 VALUES
- -- pk1 != pk2 rows
- (NULL, 0, 0),
- (0, 0, 1),
- -- 1 not present in d1
- (2, 3, 0), (3, 2, 1),
- (3, 4, 0),
- -- 4 has no rows in d1
- (5, 6, 0), (6, 5, 1),
- (6, 7, 0),
- -- pk1 = pk2 rows
- (3, 3, 0),
- (5, 5, 0), (5, 5, 1)
- ;
- -- Dimension table and data (d2)
- -- -----------------------------
- CREATE TABLE d2 (pk1 INT, pk2 INT NOT NULL, v INT NOT NULL);
- CREATE INDEX d2_i1 ON d2(pk1, pk2);
- INSERT INTO d2 VALUES
- -- pk1 != pk2 rows
- (NULL, 0, 0),
- (1, 2, 0), (2, 1, 0),
- (2, 3, 0),
- (3, 4, 0), (4, 3, 1),
- (4, 5, 0),
- (NULL, 5, 0),
- -- 6 has no rows in d2
- -- pk1 = pk2 rows
- (3, 3, 0), (3, 3, 1),
- (4, 4, 0)
- ;
- -- Dimension table and data (d3)
- -- -----------------------------
- CREATE TABLE d3 (pk1 INT, pk2 INT, v INT NOT NULL);
- CREATE INDEX d3_i1 ON d3(pk1, pk2);
- INSERT INTO d3 VALUES
- -- pk1 != pk2 rows
- (0, 0, 1),
- -- 1 not present in d3
- (NULL, 2, 0),
- (3, 4, 0), (4, 3, 1),
- -- 4 has no rows in d3
- (5, 6, 0),
- (6, 7, 0), (7, 6, 1),
- -- pk1 = pk2 rows
- (NULL, NULL, 0),
- (3, 3, 0),
- (4, 4, 1),
- (5, 5, 0), (5, 5, 1)
- ;
- -- PK materialized views
- -- ---------------------
- CREATE MATERIALIZED VIEW ft_pk AS
- SELECT DISTINCT ON (k) k, v FROM ft;
- CREATE MATERIALIZED VIEW d1_pk AS
- SELECT DISTINCT ON (pk1, pk2) pk1, pk2, v FROM d1;
- CREATE MATERIALIZED VIEW d2_pk AS
- SELECT DISTINCT ON (pk1, pk2) pk1, pk2, v FROM d2;
- CREATE MATERIALIZED VIEW d3_pk AS
- SELECT DISTINCT ON (pk1, pk2) pk1, pk2, v FROM d3;
|