Web Listing 1: Code to Create and Populate the DNA, Promoters, and Patterns Tables SET NOCOUNT ON; USE tempdb; GO IF OBJECT_ID('dbo.DNA') IS NOT NULL DROP TABLE dbo.DNA; GO IF OBJECT_ID('dbo.Patterns') IS NOT NULL DROP TABLE dbo.Patterns; GO IF OBJECT_ID('dbo.Promoters') IS NOT NULL DROP TABLE dbo.Promoters; GO CREATE TABLE dbo.DNA ( n BIGINT NOT NULL PRIMARY KEY, base CHAR(1) NOT NULL CHECK(base IN('A', 'C', 'G', 'T')) ); INSERT INTO dbo.DNA(n, base) VALUES( 1, 'A'); INSERT INTO dbo.DNA(n, base) VALUES( 2, 'G'); INSERT INTO dbo.DNA(n, base) VALUES( 3, 'T'); INSERT INTO dbo.DNA(n, base) VALUES( 4, 'A'); INSERT INTO dbo.DNA(n, base) VALUES( 5, 'T'); INSERT INTO dbo.DNA(n, base) VALUES( 6, 'A'); INSERT INTO dbo.DNA(n, base) VALUES( 7, 'A'); INSERT INTO dbo.DNA(n, base) VALUES( 8, 'A'); INSERT INTO dbo.DNA(n, base) VALUES( 9, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(10, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(11, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(12, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(13, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(14, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(15, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(16, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(17, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(18, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(19, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(20, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(21, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(22, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(23, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(24, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(25, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(26, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(27, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(28, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(29, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(30, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(31, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(32, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(33, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(34, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(35, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(36, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(37, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(38, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(39, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(40, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(41, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(42, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(43, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(44, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(45, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(46, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(47, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(48, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(49, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(50, 'C'); INSERT INTO dbo.DNA(n, base) VALUES(51, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(52, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(53, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(54, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(55, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(56, 'T'); INSERT INTO dbo.DNA(n, base) VALUES(57, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(58, 'G'); INSERT INTO dbo.DNA(n, base) VALUES(59, 'A'); INSERT INTO dbo.DNA(n, base) VALUES(60, 'A'); CREATE UNIQUE INDEX idx_base_n ON dbo.DNA(base, n); GO CREATE TABLE dbo.Promoters ( pid INT NOT NULL PRIMARY KEY, pname VARCHAR(20) NOT NULL ); INSERT INTO dbo.Promoters(pid, pname) VALUES(1, 'TATA Box'); INSERT INTO dbo.Promoters(pid, pname) VALUES(2, 'GC Box'); INSERT INTO dbo.Promoters(pid, pname) VALUES(3, 'CCAAT Box'); GO CREATE TABLE dbo.Patterns ( pid INT NOT NULL REFERENCES dbo.Promoters, n BIGINT NOT NULL, base CHAR(1) NOT NULL CHECK(base IN('A', 'C', 'G', 'T')), PRIMARY KEY(pid, n) ); INSERT INTO dbo.Patterns(pid, n, base) VALUES(1, 1, 'T'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(1, 2, 'A'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(1, 3, 'T'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(1, 4, 'A'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(1, 5, 'A'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(1, 6, 'A'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(2, 1, 'G'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(2, 2, 'G'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(2, 3, 'G'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(2, 4, 'C'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(2, 5, 'G'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(2, 6, 'G'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(3, 1, 'C'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(3, 2, 'C'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(3, 3, 'A'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(3, 4, 'A'); INSERT INTO dbo.Patterns(pid, n, base) VALUES(3, 5, 'T'); CREATE INDEX idx_n_i_pid_base ON dbo.Patterns(n) INCLUDE(pid, base); GO