Modified code (from appendix B) in SQL2 syntax, showing re_arrangement of Foreign Key references.
CREATE SCHEMA AUTHORIZATION SQL2_ER CREATE TABLE DOMAINS ( DOMAIN_CATALOG IDENTIFIER , DOMAIN_NAME IDENTIFIER , DOMAIN_SCHEMA IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , DOMAIN_DEFAULT CHAR_DATA , PRIMARY KEY (DOMAIN_CATALOG, DOMAIN_NAME, DOMAIN_SCHEMA), FOREIGN KEY (DOMAIN_CATALOG, DOMAIN_SCHEMA, CONSTRAINT_NAME) REFERENCES CHECK_CONSTRAINTS, FOREIGN KEY (DOMAIN_CATALOG, DOMAIN_SCHEMA) REFERENCES SCHEMATA ) CREATE TABLE TRANSLATIONS ( TRANSLATION_CATALOG IDENTIFIER , TRANSLATION_NAME IDENTIFIER , TRANSLATION_SCHEMA IDENTIFIER , SRC_CHARSET_CATALOG IDENTIFIER , SRC_CHARSET_NAME IDENTIFIER , SRC_CHARSET_SCHEMA IDENTIFIER , TGT_CHARSET_CATALOG IDENTIFIER , TGT_CHARSET_NAME IDENTIFIER , TGT_CHARSET_SCHEMA IDENTIFIER , PRIMARY KEY (TRANSLATION CATALOG, TRANSLATION_NAME, TRANSLATION_SCHEMA), FOREIGN KEY (SRC_CHARSET_CATALOG, SRC_CHARSET_NAME, SRC_CHARSET_SCHEMA) REFERENCES CHARACTER_SETS, FOREIGN KEY (TGT_CHARSET_CATALOG, TGT_CHARSET_NAME, TGT_CHARSET_SCHEMA) REFERENCES CHARACTER_SETS, FOREIGN KEY (TRANSLATION_NAME, TRANSLATION_SCHEMA) REFERENCES SCHEMATA ) CREATE TABLE CHARACTER_SETS ( CHARSET_CATALOG IDENTIFIER , CHARSET_NAME IDENTIFIER , CHARSET_SCHEMA IDENTIFIER , DEF_COLLATE_CATALOG IDENTIFIER , DEF_COLLATE_NAME IDENTIFIER , DEF_COLLATE_SCHEMA IDENTIFIER , FORM_OF_USE IDENTIFIER , NUMBER_OF_CHARS CARDINAL , PRIMARY KEY (CHARSET_CATALOG, CHARSET_NAME, CHARSET_SCHEMA), FOREIGN KEY (CHARSET_CATALOG, CHARSET_SCHEMA) REFERENCES SCHEMATA, FOREIGN KEY (DEF_COLLATE_CATALOG, DEF_COLLATE_NAME, DEF_COLLATE_SCHEMA) REFERENCES COLLATIONS ) CREATE TABLE COLLATIONS ( COLLATION_CATALOG IDENTIFIER , COLLATION_NAME IDENTIFIER , COLLATION_SCHEMA IDENTIFIER , CHARSET_CATALOG IDENTIFIER , CHARSET_NAME IDENTIFIER , CHARSET_SCHEMA IDENTIFIER , PRIMARY KEY (COLLATION_CATALOG, COLLATION_NAME, COLLATION_SCHEMA), FOREIGN KEY (CHARSET_CATALOG, CHARSET_NAME, CHARSET_SCHEMA), REFERENCES CHARACTER_SETS, FOREIGN KEY (COLLATION_CATALOG, COLLATION_SCHEMA) REFERENCES SCHEMATA ) CREATE TABLE DATA_TYPE_DESCRIPTOR ( COLUMN_NAME IDENTIFIER , DTD_CATALOG IDENTIFIER , DTD_SCHEMA IDENTIFIER , TABLE_OR_DOMAIN_NAME IDENTIFIER , CHAR_MAX_LENGTH CARDINAL , CHAR_OCTET_LENGTH CARDINAL , COLlATION_CATALOG IDENTIFIER , COLLATION_NAME IDENTIFIER , COLLATION_SCHEMA IDENTIFIER , DATA_TYPE CHAR_DATA , DATETIME_PRECISION CARDINAL , NUMERIC_PRECISION CARDINAL , NUMERIC_PREC_RADIX CARDINAL , NUMERIC_SCALE CARDINAL , PRIMARY KEY (COLUMN_NAME, DTD_CATALOG, DTD_SCHEMA, TABLE_OR_DOMAIN_NAME), FOREIGN KEY (COLLATION_CATALOG, COLLATION_NAME, COLLATION_SCHEMA) REFERENCES COLLATIONS ) CREATE TABLE CHECK_CONSTRAINTS ( CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , CHECK_CLAUSE CHAR_DATA , PRIMARY KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA), ) CREATE TABLE SCHEMATA ( CATALOG_NAME IDENTIFIER , SCHEMA_NAME IDENTIFIER , DEF_TIME_DISP_TYPE CHAR_DATA , SCHEMA_OWNER IDENTIFIER , TIME_DISP_CATALOG IDENTIFIER , TIME_DISP_SCHEMA IDENTIFIER , TIME_DISP_TABLE IDENTIFIER , PRIMARY KEY (CATALOG_NAME, SCHEMA_NAME), FOREIGN KEY (SCHEMA_OWNER) REFERENCES USERS, FOREIGN KEY (TIME_DISP_CATALOG, TIME_DISP_TABLE, TIME_DISP_SCHEMA) REFERENCES TABLES ) CREATE TABLE VIEWS ( TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , CHECK_OPTION CHAR_DATA , UPDATABLE CHAR_DATA , VIEW_DEFINITION CHAR_DATA , PRIMARY KEY (TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (TABLE_CATALOG, TABLE_SCHEMA) REFERENCES SCHEMATA ) CREATE TABLE USERS ( USER_NAME IDENTIFIER , PRIMARY KEY (USER_NAME) ) CREATE TABLE DOMAIN_PRIVILEGES ( CATALOG IDENTIFIER , DOMAIN_NAME IDENTIFIER , DOMAIN_SCHEMA IDENTIFIER , GRANTEE IDENTIFIER , GRANTOR IDENTIFIER , PRIVILEGE CHAR_DATA , GRANTABLE CHAR_DATA , PRIMARY KEY (DOMAIN_CATALOG, DOMAIN_NAME, DOMAIN_SCHEMA, GRANTEE, GRANTOR, PRIVILEGE), FOREIGN KEY (DOMAIN_CATALOG, DOMAIN_NAME, DOMAIN_SCHEMA) REFERENCES DOMAINS, FOREIGN KEY (GRANTEE) REFERENCES USERS, FOREIGN KEY (GRANTOR) REFERENCES USERS ) CREATE TABLE ASSERTIONS ( CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , PRIMARY KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA), FOREIGN KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) REFERENCES CHECK_CONSTRAINTS ) CREATE TABLE CHECK_TABLE_USAGE ( CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , PRIMARY KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) REFERENCES CHECK_CONSTRAINTS, FOREIGN KEY(TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA) REFERENCES TABLES ) CREATE TABLE CHECK_COLUMN_USAGE ( COLUMN_NAME IDENTIFIER , CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , PRIMARY KEY (COLUMN_NAME, CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (COLUMN_NAME, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA) REFERENCES COLUMNS, FOREIGN KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) REFERENCES CHECK_CONSTRAINTS ) CREATE TABLE TABLE_PRIVILEGES ( GRANTEE IDENTIFIER , GRANTOR IDENTIFIER , PRIVILEGE CHAR_DATA , TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , GRANTABLE CHAR_DATA , PRIMARY KEY (GRANTEE, GRANTOR, PRIVILEGE, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA) REFERENCES TABLES, FOREIGN KEY (GRANTEE) REFERENCES USERS, FOREIGN KEY (GRANTOR) REFERENCES USERS ) CREATE TABLE TABLES ( TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , TABLE_TYPE CHAR_DATA , PRIMARY KEY (TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (TABLE_CATALOG, TABLE_SCHEMA) REFERENCES SCHEMATA ) CREATE TABLE VIEW_TABLE_USAGE ( TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , VIEW_CATALOG IDENTIFIER , VIEW_NAME IDENTIFIER , VIEW_SCHEMA IDENTIFIER , PRIMARY KEY (TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA, VIEW_CATALOG, VIEW_NAME, VIEW_SCHEMA) FOREIGN KEY (VIEW_CATALOG, VIEW_SCHEMA) REFERENCES SCHEMATA, FOREIGN KEY (TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA) REFERENCES TABLES ) CREATE TABLE TABLE_CONSTRAINTS ( CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , CONSTRAINT_TYPE CHAR_DATA , TABLE_NAME IDENTIFIER , PRIMARY KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) FOREIGN KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) REFERENCES TABLES ) CREATE TABLE COLUMN_PRIVILEGES ( COLUMN_NAME IDENTIFIER , GRANTEE IDENTIFIER , GRANTOR IDENTIFIER , PRIVILEGE CHAR_DATA , TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , GRANTABLE CHAR_DATA , PRIMARY KEY (COLUMN_NAME, GRANTEE, GRANTOR, PRIVILEGE, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (COLUMN_NAME, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA) REFERENCES COLUMNS, FOREIGN KEY (GRANTEE) REFERENCES USERS, FOREIGN KEY (GRANTOR) REFERENCES USERS ) CREATE TABLE COLUMNS ( COLUMN_NAME IDENTIFIER , TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , COLUMN_DEFAULT CHAR_DATA , DOMAIN_CATALOG IDENTIFIER , DOMAIN_NAME IDENTIFIER , DOMAIN_SCHEMA IDENTIFIER , POSITION CARDINAL , PRIMARY KEY (COLUMN_NAME, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA), FOREIGN KEY (TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA) REFERENCES TABLES, FOREIGN KEY (DOMAIN_CATALOG, DOMAIN_NAME, DOMAIN_SCHEMA) REFERENCES DOMAINS ) CREATE TABLE KEY_COLUMN_USAGE ( COLUMN_NAME IDENTIFIER , CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , TABLE_NAME IDENTIFIER , POSITION CARDINAL , PRIMARY KEY (COLUMN_NAME, CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA, TABLE_NAME), FOREIGN KEY (COLUMN_NAME, CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) REFERENCES COLUMNS ) CREATE TABLE VIEW_COLUMN_USAGE ( COLUMN_NAME IDENTIFIER , TABLE_CATALOG IDENTIFIER , TABLE_NAME IDENTIFIER , TABLE_SCHEMA IDENTIFIER , VIEW_CATALOG IDENTIFIER , VIEW_NAME IDENTIFIER , VIEW_SCHEMA IDENTIFIER , PRIMARY KEY (COLUMN_NAME, TABLE_CATALOG, TABLE_NAME, TABLE_SCHEMA, VIEW_CATALOG, VIEW_NAME, VIEW SCHEMA), FOREIGN KEY (COLUMN_NAME, VIEW_CATALOG, VIEW_NAME, VIEW_SCHEMA) REFERENCES COLUMNS ) CREATE TABLE REF_CONSTRAINTS ( CONSTRAINT_CATALOG IDENTIFIER , CONSTRAINT_NAME IDENTIFIER , CONSTRAINT_SCHEMA IDENTIFIER , CONST_CATALOG_UK IDENTIFIER , CONST_NAME_UK IDENTIFIER , CONST_SCHEMA_UK IDENTIFIER , DELETE_RULE CHAR_DATA , MATCH_OPTION CHAR_DATA , UPDATE_RULE CHAR_DATA , PRIMARY KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA), FOREIGN KEY (CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA) REFERENCES TABLE_CONSTRAINTS, FOREIGN KEY (CONST_CATALOG_UK, CONST_NAME_UK, CONST_SCHEM_UK) REFERENCES TABLE_CONSTRAINTS )
Contents | 1 Introduction | 2 Review | 3 Research aims | 4 Program | 5 Work | References | Appendix A | Appendix B | Appendix C