Copyright (C) 2000-2012 |
GNU Info (slib.info)Catalog RepresentationCatalog Representation ---------------------- Each database (in an implementation) has a "system catalog" which describes all the user accessible tables in that database (including itself). The system catalog base table has the following fields. `PRI' indicates a primary key for that table. PRI table-name column-limit the highest column number coltab-name descriptor table name bastab-id data base table identifier user-integrity-rule view-procedure A scheme thunk which, when called, produces a handle for the view. coltab and bastab are specified if and only if view-procedure is not. Descriptors for base tables (not views) are tables (pointed to by system catalog). Descriptor (base) tables have the fields: PRI column-number sequential integers from 1 primary-key? boolean TRUE for primary key components column-name column-integrity-rule domain-name A "primary key" is any column marked as `primary-key?' in the corresponding descriptor table. All the `primary-key?' columns must have lower column numbers than any non-`primary-key?' columns. Every table must have at least one primary key. Primary keys must be sufficient to distinguish all rows from each other in the table. All of the system defined tables have a single primary key. This package currently supports tables having from 1 to 4 primary keys if there are non-primary columns, and any (natural) number if _all_ columns are primary keys. If you need more than 4 primary keys, I would like to hear what you are doing! A "domain" is a category describing the allowable values to occur in a column. It is described by a (base) table with the fields: PRI domain-name foreign-table domain-integrity-rule type-id type-param The "type-id" field value is a symbol. This symbol may be used by the underlying base table implementation in storing that field. If the `foreign-table' field is non-`#f' then that field names a table from the catalog. The values for that domain must match a primary key of the table referenced by the TYPE-PARAM (or `#f', if allowed). This package currently does not support composite foreign-keys. The types for which support is planned are: atom symbol string [<length>] number [<base>] money <currency> date-time boolean foreign-key <table-name> expression virtual <expression> automatically generated by info2www version 1.2.2.9 |