Constructing a bifurcated database of context-dependent and context-independent data items6018742Abstract A method of constructing a multi-lingual database includes the step of defining metadata to describe fields of a record as being either language-dependent or language-independent. The fields of the record are so described by flagging descriptions of columns associated with the fields in the metadata. A composite table, including a parent table and a child table, is then automatically generated. The parent table includes columns for the language-independent fields of the record, while the child table includes columns for the language-dependent fields of the record. Claims What is claimed is: Description FIELD OF THE INVENTION
TABLE 1
______________________________________
Procedure Type
Description How Defined
How Generated
______________________________________
MAN Manually Written
Manually Manually
(Manual) Procedure
DEF Defaulting Manually Manually
(Defaulting)
Procedure
VAL Validation Manually Manually
(Validation)
Procedure
CON Generated Manually Build +
(Control) Control of Upgrade Logic
Database
Updates
SUB Generated Table
Manually Build +
(Update Subset)
Subset Update Upgrade Logic
Procedure
INS Generated Generated Build +
(Insert) Standard Table Upgrade Logic
Insert Procedure
UPD Generated Generated Build +
(Update) Standard Table Upgrade Logic
Update
Procedure
DEL Generated Generated Build +
(Delete) Standard Table Upgrade Logic
Delete Procedure
______________________________________
Table 2 lists a number of stored procedure objects, in the "Associated Definitions" column, that are included in an exemplary database described below with reference to FIG. 6.
TABLE 2
______________________________________
Procedure How Associated Definitions
Type Associated Definitions
Defined
______________________________________
MAN Procedure.sub.-- Columns
Automatically when compiled
(Manual)
Procedure.sub.-- Columns.sub.-- Types
Automatically when compiled
Procedure.sub.-- Dependencies
Automatically when compiled
Procedure.sub.-- Views
Automatically when compiled
DEF Procedure.sub.-- Columns
Automatically when compiled
(Default-
Procedure.sub.-- Columns.sub.-- Types
Automatically when compiled
ing) Procedure.sub.-- Dependencies
Automatically when compiled
Procedure.sub.-- Views
Automatically when compiled
+
Procedure.sub.-- Arguments
Manually
VAL Procedure.sub.-- Columns
Automatically when compiled
(Vali- Procedure.sub.-- Columns.sub.-- Types
Automatically when compiled
dation)
Procedure.sub.-- Dependencies
Automatically when compiled
Procedure.sub.-- Views
Automatically when compiled
+
Procedure.sub.-- Arguments
Manually
CON Procedure.sub.-- Tables
Manually
(Control)
SUB Procedure.sub.-- Arguments
Manually
(Update
Subset)
INS Tables (Insert Flag)
Manually
(Insert)
UPD Tables (Update Flag)
Manually
(Update)
DEL Tables (Delete Flag)
Manually
(Delete)
______________________________________
Procedure types CON, DEL, INS, SUB, and UPD are code-generated Stored Procedures. Procedure types CON and SUB Stored Procedures are generated from the Procedures Table definitions. Procedure types DEL, INS and UPD Procedures Table definitions are automatically updated as the Stored Procedures are generated. Procedure types CON, DEF, MAN, SUB and VAL Procedures Table definitions must be manually updated. Procedure types DEL, INS, MAN, and UPD have only Procedures Table entries. Procedures type CON has Procedures (mandatory) and Procedure.sub.-- Tables (optional) Table entries. Procedure types DEF, SUB and VAL have Procedures and Procedure.sub.-- Arguments Table entries. The stored procedures include a context-dependent view engine 35, the functioning of which will be described in further details below. FIG. 6 provides a diagrammatic representation of a portion of an exemplary metadata database 50. The metadata database 50 is shown to include a number of table objects similar in structure to the table objects that comprise the generated database 18. The table objects of the metadata database 50 include records specifying structural, description and management information for objects within an associated relational database 60. The exemplary metadata database 50 comprises a COLUMN.sub.-- TYPE object 52, a COLUMNS object 54, a TABLES object 56, and a TABLE.sub.-- COLUMNS object 58. The COLUMN.sub.-- TYPE object 52 specifies format information for various column types, and is shown to include three columns, namely an ID column, a type column and a length column. Two records are shown to exist in the object 52, these records specifying respective data lengths for a long date column type and a short date column type. The COLUMNS object 54 is shown to comprise four columns, namely an ID column, a code column, a description column and a type column. The COLUMNS object 54 includes records for inquiry date, estimated delivery date and actual delivery date columns which may be included within any of the tables of the database 60. The code column stores code names for the respective columns, the description column stores respective descriptions for the relevant columns, and the type column stores information specifying a column type attributed to each column. The inquiry date and actual delivery date column records are shown to have been attributed the long date column type, whereas the estimated delivery date column record is shown to have been attributed the short date column type. The TABLES object 56 is shown to specify an ID and a name (e.g., ID "67" and name "ORDERS") for each of the tables included in the relational database 60, and also includes various descriptive and management information pertaining to each table. The TABLE.sub.-- COLUMNS object 58 provides a mapping of columns to a particular table ID, and thus specifies which columns are included within each table. Accordingly, the ORDERS object 62 of the relational database 60 is shown to include the inquiry date, the estimated delivery date, and the actual delivery date columns as defined in the COLUMNS object 54. The build logic 40 and update logic 42 include sequences of instructions that are executed by a processor of the server 12, and cause the processor to utilize the information contained within the TABLE.sub.-- COLUMNS object 58, and also information within the objects 52, 54, and 56 upon which the TABLE.sub.-- COLUMNS object 58 is dependent, to generate and update the ORDERS object 62 within the relational database 60. This is the reverse of the methodologies and logic taught in the prior art, where metadata is generated from existing objects within the database to provide a readily accessible description of the database. The present invention is particularly advantageous in that it allows a database manager to make changes to the database object descriptions within the metadata database 50, and these modified descriptions are then utilized to modify objects (e.g. table, view and stored procedure objects) within the relational database 60. For example, if a database manager wishes to change the format of all estimated delivery date columns within the database 60, the manager could simply alter the type specification in the COLUMNS object 54 to reflect the long date format. Accordingly, all records within the TABLE.sub.-- COLUMNS object 58 that specify the estimated date column, and that are accordingly dependent on the COLUMNS object 54, would by reason of their dependencies include this updated information. Accordingly, objects may be generated and/or updated in the database 60 by the build and update logics 40 and 42 to reflect this modification. Similarly, a database manager could alter the length of the long date format from eight to nine characters, and this change would be propagated to all relevant objects within database 60 by reason of the dependencies that exist within the metadata database 50. The present invention is thus furthermore advantageous in that modifications are also made only to relevant objects within the database 60, and the modification process is accordingly "incremental" in nature. The ease with which modifications can be made to the database 60 is facilitated by the dependencies that are defined between the various objects that comprise the metadata, and by the use of metadata to generated and update structures and relationships of objects within the database 60. In an exemplary embodiment, the generated database 18 and database system 14 may be utilized to implement an Enterprise Resources Planning (ERP) system. FIG. 7 illustrates a Booch notation diagram depicting an exemplary metadata database 70 that may be utilized to describe a generated database (not shown) for implementing the ERP system. Metadata objects (i.e., metadata tables) are represented in broken line, and rows or records (i.e., instances of these objects) are represented by circles and are shown to be included in respective table objects. Each row (or record) in each metadata object (e.g., row T1 in object TABLES) represents a table (i.e., object) in the relational database 60 and also a view (i.e., yet a further object). The objects shown to be included within the metadata database 70 include a COLUMN TYPES object 72, a COLUMNS object 74, a TABLE.sub.-- COLUMNS object 76, a UNIQUE KEY COLUMNS object 78, a TABLES object 80, a PROCEDURE TABLES object 82, a PROCEDURE COLUMNS object 84, a PROCEDURES object 86, a PROCEDURE ARGUMENTS object 88, a PROCEDURE COLUMN TYPES object 90, a PROCEDURE VIEWS object 92 and a PROCEDURE DEPENDENCIES object 94. Arrows depict various dependencies that exist between the rows (or records) of metadata objects. For example, the TABLE.sub.-- COLUMNS object row TC1 is shown to be dependent on the COLUMNS OBJECT row C1, the TABLES object row T1 and the UNIQUE KEY COLUMNS object row UK1 in a manner analogous to that described above with reference to FIG. 6. A brief description of each of the objects 72-94 will now be provided, with reference to FIG. 7 in conjunction with FIGS. 8-19. Turning first to the COLUMN TYPES objects 72, this object includes a number of rows that specify type and format information that can be referenced by a column to attribute the required type and format characteristics to the referencing column. FIG. 8 illustrates a view 100 showing selected information from a number of rows within an exemplary column types object 72. FIG. 9 illustrates a user interface 102 by which a user can generate and edit a COLUMN TYPE row for inclusion within the COLUMN TYPE object 72. The information that can be included within a COLUMN TYPE row is apparent from the input fields displayed in the user interface 102. Specifically, each COLUMN TYPE row includes an identifier (e.g., a name), that comprises the "column type" input 102a. This identifier uniquely identifies each COLUMN TYPE row. A user further has the option of attributing a specific data type (i.e., a numeric, character or date type) and data length to the COLUMN TYPE row via input fields 102b and 102c. Also of interest is the ability by a user to specify data types, via input fields 102g and 102i, for both Oracle 8 and SQL Server databases. This feature is particularly useful in converting a database table from an Oracle 8 format to a SQL Server format, or vice versa. A view 104 illustrating exemplary COLUMNS rows included within the COLUMNS object 74 is shown in FIG. 10. Each COLUMNS row listed in the view 104 includes a column code, shown at 104a, by which the COLUMNS row is uniquely identified. Each COLUMNS row is furthermore shown to include a type specified, displayed in column 104d, that corresponds to a COLUMN TYPES row included within the COLUMN TYPES object 72. FIG. 11 illustrates a user interface 106, utilizing which a user can generate and edit a COLUMNS row. As illustrated, a user can input and modify column code and column type information via fields 106a and 106d respectively. Also of interest is the input field 106h, via which a user can specify a foreign key table within the database. FIG. 12 illustrates a view 108 listing various table rows that exist within the TABLES object 80. FIG. 13 illustrates a user interface 110, via which a user may edit a table definition. For example, a user may specify a unique identifier code in an input field 110a. FIG. 14 illustrates a view of the contents of exemplary rows within the TABLE.sub.-- COLUMNS object 76. The rows from which the view 112 is extracted map a number of columns defined by rows within the COLUMNS objects 74 to a TABLES row within the TABLES object 80. A row for the ITEMS table, within the TABLES object 80 and listed in the view 108 of FIG. 12 (at 108a), is associated with a number of COLUMNS rows listed in column 112a and included within the COLUMNS object 74. FIG. 15 illustrates a user interface 114 using which a user can input and modify information pertaining to each of the columns listed within a TABLE.sub.-- COLUMNS row. FIG. 16 illustrates a view 116 listing unique key definitions for the ITEMS table, while FIG. 17 illustrates a user interface 118 using which the unique key definitions for a specific table within the database can be inputted or updated. The user interface 118 provides a table column field 118a at which a user can identify columns within a table to comprise unique key columns for that table. FIG. 18 illustrates a view 120 listing exemplary procedures that are included within the PROCEDURES objects 86. The view 120 provides a first column 120a in which an identifier for each procedure is listed, and a second column 120b in which a type characteristic for each procedure is identified. Specifically, each procedure is shown to be identified as being a control (CON), a delete (DEL), an insert (INS), an update (UPD) or a manually written (MAN) procedure type. Each procedure may be identified as being any one of the procedure types listed above in Table 1. Each table object within the database may have one or more procedures associated therewith for performing control, deletion, insertion, updating and other operations with respect to the relevant table object. For example, the control procedure CON P1 of the PROCEDURES object 86 is shown in FIG. 7 to be related to, and to depend from, the TABLE row T1 within the TABLES object 80. FIG. 19 illustrates a user interface 122 through which a user can specify a particular procedure type for a procedure at field 122b, and define a foreign key relationship between the relevant procedure object and a table object at field 122c. Referring again to FIG. 7, the metadata database 70 finally also includes TABLE.sub.-- VERSIONS and TABLE.sub.-- VERSION.sub.-- COLUMNS objects 96 and 98 that include records logging modifications made to objects within the generated database, via the metadata. Examples of the objects 96 and 98 are provided in FIGS. 20A and 20B. The examples provided log modifications that were made to ORG.sub.-- STRUCTURE and ORGS tables, which are included within an exemplary relational database 60, between versions 3 and 4. The TABLE.sub.-- VERSIONS table 96 illustrated in FIG. 20A contains a record (or row) for each version of the relevant tables that has existed. Each record has an identifier (ID) associated therewith by which the version of the table is identified. For example, the ORG.sub.-- STRUCTURE table, version 3, is identified by the ID 1092 while version 4 of this table is identified by the ID 1195. The TABLE.sub.-- VERSION.sub.-- COLUMNS table 98 illustrated in FIG. 20B includes a record for each column within each of the relevant tables, and records specific details regarding each of these columns. By comparing records for a specific column that were created for different versions of a relevant table, modifications to a column are recognized. For example, between versions 3 and 4 of the ORG.sub.-- STRUCTURE table, the LEVEL.sub.-- NUMBER column was changed from an integer (INT) data type with a length of 10 to a small integer (SMALLINT) data type with a length of 5. Further, in the ORGS table, the CURRENCY.sub.-- ID column changed from being NOTNULLABLE to being NULLABLE from version 3 to version 4. These modifications are documented in FIG. 20B. CONTEXT-DEPENDENT AND CONTEXT-INDEPENDENT TABLES As discussed above with reference to FIG. 6, metadata database 50 essentially comprises files or tables that define and describe the structure of tables within the relational database 60. Referring now to FIG. 21, the present invention proposes the creation of metadata database 50 that may describe the fields of a record within the relational database 60 as being either context-independent or context-dependent. Referring to FIG. 21, the metadata database 50 is accordingly shown to include table descriptions 212 that describe the structure of tables within the relational database 60 and, more specifically, specify which columns are included within which tables. The table descriptions 212 in turn include column descriptions 214, which further describe the properties of the columns which constitute the tables. Inter alia, the column descriptions 214 specify whether the content of each columns is context-dependent or context-independent. For the purposes of the present specification, the term "context" may be taken as referring to any parameter or characteristic that may result in varying information requirements. For example, the term "context" may refer to a language context, a geographical context, a user context or a systems context. As illustrated in FIG. 21 at 216, in the exemplary embodiment the table column description indicates whether the various table columns are language-dependent or language-independent. As stated above, the build logic 40 and the update logic 42 include sequences of instructions that are executed by a processor of a server 12, and cause the processor to utilize metadata database 50 to generate and/or update tables within the relational database 60. According to the teachings of the present invention, the build and update logics 40 and 42 utilize the indications in the table column descriptions 214 in the metadata database 50 to construct composite tables 218A-218N within the relational database 60, as illustrated in FIG. 21. Specifically, each composite table 218 may comprise a parent context-independent table 220 and a child context-dependent table 222. Each context-independent table 220 includes columns only for those fields of a record that are context-independent. The context-independent tables 220 may nonetheless include other columns, such as identifier columns that are neither context-dependent or context-independent (i.e., context-neutral) and that are merely utilized for table structure and order. Similarly, the context-dependent tables 222 include only columns for those fields of a record that are context-dependent. The context-dependent tables 222 may further include other columns, such as an identifier column, that are neither context-dependent or context-independent for ordering and linking purposes. In one exemplary embodiment of the present invention, the records within a context-independent table 218 are linked to corresponding records within a context-dependent table 222 by keys in the form of record identifiers. Further, records within a context-dependent table 222 may be keyed or indexed to records within a context-independent table 220 not directly associated with the context-dependent table 222, as indicated by arrows 230 and 232. Certain composite tables 218N may furthermore be defined within the metadata database 50 as including only context-independent columns. FIG. 22 provides an exemplary embodiment of the data structures illustrated in FIG. 21. Specifically, the metadata database 50 is shown to include the TABLE.sub.-- COLUMNS object 58, which provides a mapping of columns to a specific table. Only the portion of the TABLE.sub.-- COLUMNS object 58 specifying the columns to be included within a composite table, namely a HARDWARE.sub.-- ITEMS table 223, within the relational database 60 is shown. The TABLE.sub.-- COLUMNS object 58 includes an ID column 224 containing a record identifier for each record, a TABLE.sub.-- ID column 226 including an identifier for each table within the relational database 60, a COLUMN.sub.-- ID column 228 including a column identifier for each column to be included in the table indicated by the entry in the corresponding TABLE.sub.-- ID column 226, and a LANGUAGE.sub.-- DEPENDENT column 230 containing an indication as whether the column identified by the column identifier in the corresponding COLUMN.sub.-- ID column 228 is language-dependent or not. The illustrated portion of the TABLE.sub.-- COLUMNS object 58 indicates that the composite HARDWARE.sub.-- ITEMS table 222 in the database 60 includes a DESCRIPTION column 232, a UNITS column 234 and a CLASS column 236, each of the columns 232, 234 and 236 being identified as language-dependent. The HARDWARE.sub.-- ITEMS table 223 is furthermore indicates the table 222 as including a PRODUCT.sub.-- NUMBER column 238 that is language-independent. Utilizing the information contained in the TABLE.sub.-- COLUMNS object 58, the build logic 42, and specifically the context-dependent build engine 41 included therein, constructs the composite HARDWARE.sub.-- ITEMS table 223 to include a language-independent parent table 240 and a language-dependent child table 242. As illustrated, the language-independent table 240 includes the PRODUCT.sub.-- NUMBER column 238 and an identifier ID column 244. The language-dependent table 242, which is separate from the language-independent table 240, includes the DESCRIPTION column 232, the UNITS column 234, and the CLASS column 236. The language-dependent table 242 further includes two identifier columns, namely an ID column 246 and a LANGUAGE.sub.-- ID column 248. The identifier entries within the ID column 246 correspond to the identifiers included in the ID column 244 of the table 240, and function as links (or keys) between the tables 240 and 242. Each record within the language-independent table 240 may be linked or keyed to a number of records within the language-dependent table 242 by the identifiers included within the respective ID columns 244 and 246. Each identifier within the LANGUAGE.sub.-- ID column 248 identifies the language of corresponding entries of the relevant record within the DESCRIPTION, UNITS and CLASS columns 232, 234 and 236. For example, the identifier "129" identifies the corresponding entries of the relevant record as being in the English language, whereas the identifier "27" identifies the corresponding entries of the record as being in the Spanish language. Entries within the ID and LANGUAGE.sub.-- ID columns 246 and 248 of a record together constitute a unique key for that record within the language dependent table 242. As will be described in further detail below, in order for the context-dependent view engine 35 to construct a view that is appropriate for a predetermined context, both the record identifier within the ID column 242 and the language identifier within the LANGUAGE.sub.-- ID column 248 must be specified. In the illustrated embodiment, the language identifier is shown to be specified by a context table in the form of a user table 250. Referring to FIG. 23, further details of an exemplary user table 250 are illustrated. The user table 250 is shown to include an ID column 252, a LAST.sub.-- NAME column 254, a LANGUAGE.sub.-- ID column 256 and a LOGIN column 258. Context identifiers in the form of language identifiers are included within the LANGUAGE.sub.-- ID column 256. When constructing a view of database information, the context-dependent view engine 35 may, merely for example, identify a user that will be viewing the information, and using the language identifier together with a record identifier, be able to identify and retrieve a language-appropriate record from the language-dependent HARDWARE.sub.-- ITEMS table 242. The context-dependent view engine 35 utilizes the TABLE.sub.-- COLUMNS object 58, in the metadata, to identify a column of information to be retrieved as being language-dependent. The language-independent USERS table 250 may in turn comprise a parent table within a composite table 260, as illustrated in FIG. 23. A language-dependent USERS table 260 is shown to include language-dependent columns of the composite USERS table 260 and includes ID column 264, a LANGUAGE.sub.-- ID column 266, a TITLE.sub.-- AB column 268 including a language-appropriate title abbreviation, and a TITLE.sub.-- FULL column 270 including a language-appropriate field title. Referring again to FIG. 22, while the illustrated embodiment shows a single language-dependent table 242 as being dependent upon the language-independent table 240, the language-dependent information may be contained within a number of child tables, such as language-dependent tables 272 and 274 shown in broken lines. FIG. 24 shows a LANGUAGE CODE table 280 and a LANGUAGE.sub.-- NAME table 282 that may be utilized in conjunction with the tables illustrated in FIGS. 22 and 23 to provide a user with information regarding language options, in a language of the user's preference. Specifically, the LANGUAGE.sub.-- CODE table 280 includes an ID column 284 and a LANG.sub.-- CODE column 286, including internationally recognized two letter codes for various languages. The LANGUAGE.sub.-- NAME table 282 includes an ID column 288, a LANG.sub.-- ID column 290 and a LANG.sub.-- NAME column 292 including the names of each supported language, as reflected in each of the supported languages. For example, in a system supporting 137 languages, the name for each of those 137 languages will be specified in each of the relevant 137 languages. METHODOLOGIES Methods of constructing a context-dependent database, and of utilizing the constructed database to generate a context-dependent view, according to the teachings of the present invention, are described below with reference to FIGS. 25-27. Referring to FIG. 25, there is illustrated a flow chart illustrating a method 300, according to one embodiment of the present invention, of constructing a context-dependent database. The method 300 commences at step 302, and proceeds to a manual operation 304, wherein metadata describing each column of a composite table is created. Inter alia, the metadata describes a number of columns as being either context-dependent or context-independent. It will be appreciated that these columns correspond to the fields of a specific record, and accordingly the description of a column as being either context-dependent or context-independent constitutes describing a corresponding field of a record as being context-dependent or context-independent. The method 300 then proceeds to a process step 306, where the context-dependent build engine 41 included within the build logic 40 automatically generates a parent, context-independent table including only columns for context-independent fields of a record. As stated above, the context-independent table may nonetheless include so-called "neutral" columns such as an identifier (ID) column, which may or may not be specified within the metadata. The automatic generation of the context-independent table by the build engine 41 is performed by referencing the metadata database 50 which identifies various columns as being either context-dependent or context-independent. Moving on from the process step 306, the method 300 proceeds to a process step 308, where the build engine 41 automatically generates child, context-dependent tables including only columns for the context-dependent fields of the various records. Again, the build engine 41 utilizes the metadata database 50 to identify the context-dependent columns to be included in the context-dependent tables. Further, the generation of the context-dependent tables at the process step 308 may include the generation of both a record identifier column and a context identifier column into which respective records and context identifiers for each record are incorporated. For example, the context identifiers may comprise language identifiers specifying a language for the entries of the relevant record. Alternatively, the context identifier may be a geographical or a user identifier. FIG. 26 is a flow chart illustrating a method 320, according to an exemplary embodiment of the present invention, of generating a context table, such as the user table 50 illustrated in FIG. 23. The method commences at step 322, and proceeds to a manual input step 324, wherein context data is inputted. In one embodiment of the present invention, a user may be prompted to input a language preference, which is then utilized with other user information to construct a USERS table 250. At process step 326, context records are constructed, each record including an identifier and the inputted context data. Referring again to the USERS table 250 shown in FIG. 23, each record is constructed to include a record identifier, to be included in the ID column 252, and a language identifier to be included within the LANGUAGE.sub.-- ID column 256. At a process step 328, the context table is assembled from the various context records constructed at the process step 326, whereafter the method 320 terminates at step 330. The manual input step 324 may be performed under the direction of a stored procedure object, such as those indicated in FIG. 3. FIG. 27 is a flow chart illustrating a method 350, according to one embodiment of the present invention, of constructing a context-dependent view of database information. The context-dependent view engine 35 shown in FIG. 3 may perform the method 350. The method 350 commences at step 352, whereafter the view engine 35 identifies a column (associated with a record field) to be included within a view at process step 354. Having identified a column, a determination is made at decision box 356 whether the column is context-dependent or context-independent. This determination is made by the view logic 35 with reference to the metadata database 50, which includes an appropriate indication to this end, as described above. Should it be determined that the column is in fact context-dependent, context-dependent database information is retrieved at process step 358. Specifically, the retrieval of the context-dependent information is made without referencing a context-independent column within the context-independent table. In one embodiment, a context-neutral column, such as an ID column may be referenced. As illustrated in FIG. 27, a context table 250, such as the user table 250 and a context-dependent table 222 provide input to this step. The present invention is advantageous in that the view engine 35, being aware of a record identifier and being aware of a context identifier, does not access the context-independent table at process step 358, and retrieves the context-dependent information directly from the context-dependent table. The absence of any "base" language against which a user-indicated language preference must be compared simplifies the data retrieval process performed at step 358. Accordingly, when generating a view, the present invention proposes that the view engine 35 be aware of a context identifier for all context-dependent information, and disposes with the requirement of having base information which is assumed as a default to be valid, unless in conflict with a context identifier. On the other hand, should it be determined at decision box 356 that the column under consideration is context-independent, the method 350 proceeds to process step 360. At step 360, database information is retrieved from a column within the context-independent table without referencing any column in the context-dependent table. Accordingly, a context-independent table 220 is shown as providing the only data input for the process step 360. Having completed process step 358 or 360, the method 350 then proceeds to decision box 362, wherein a determination is made as to whether any further fields (or columns) are to be included in the view. This determination is made by referencing the metadata that describes the relevant view. If so, the method 350 moves back to process step 354. If not, the completed view is displayed at 364, and the method 350 terminates at step 366. TRANSLATION MECHANISM The inputting of context-dependent information into a relational database 60 should facilitate the various input and update situations that may arise. For example, a company supplying the database information may wish to seed a relational database 60 with basic information, which may or may not be context-dependent. Thereafter, the relational database 60 may need to be customized according to a customer's requirements, this setup procedure being performed by the customer itself, a consultancy or the company supplying the database software. It is advantageous to enable the customer itself, and specifically users of the database software, to perform the ongoing updating of the database. While prior art database systems typically allow customers to modify and input data within the database system, the ability to modify and input context-dependent data in the prior art is limited. Typically, the services of a database expert are required to modify any context-dependent information. In order to facilitate the input and updating of context-dependent information with equal ease by software programmers, database consultants and end users, the present invention proposes a generic translation screen (or interface), an exemplary embodiment of which is shown in FIG. 28. Specifically, a translation screen 400 includes a FROM LANGUAGE field 402, a TO LANGUAGE field 404, a TABLE CODE field 406, a DESCRIPTION field 408, a COLUMN CODE field 410, a PROMPT field 412, a FROM VALUE field 414 and a TO VALUE field 416. In one embodiment of the present invention, the translation screen 400 is generated by a translation input engine 401 that, as shown in FIG. 3, is a shared procedure. The translation input engine 401, as will be described below, interacts with the tables 30 to input information into, and retrieve information from, these tables 30 When a user activates the translation screen 400, a user's preferred language is displayed in the TO LANGUAGE field 404. The user then selects input for the FROM LANGUAGE field 402. This selection may be made from a drop-down menu, a pop-up window or be imported from a pervious input screen. Thereafter, a user selects a table and column to which the translation operation will apply. The selection is made by inputting appropriate information into the TABLE CODE field 406 and the COLUMN CODE field 410. In the illustrated example, a user has selected the HARDWARE.sub.-- ITEMS composite table 222, shown in FIG. 22, as the relevant table, and has further selected the DESCRIPTION column 232 as the column to which the translation will be applied. The next selection performed by the user is for the FROM VALUE field 414. A term for the FROM VALUE field 414 is selected from a list of terms presented to the user in the form of, merely for example, a drop-down menu. In the illustrated embodiment, the user would thus be presented with a list of all Spanish terms within the DESCRIPTION column 232 of the HARDWARE.sub.-- ITEMS table 223. Having selected a term for the FROM VALUE field 414, a translation of the term in the language indicated in the TO LANGUAGE field 404 may be presented if such a translation exists. The user then has the option of modifying any presented term in the TO VALUE field 416. Alternatively, should no translation of the term indicated in the FROM VALUE field 414 exist, the user may then input an appropriate translation into the TO VALUE field 416. In one embodiment of the present invention, the translation input engine 401 may interact with translation program 417 that automates the translation of terms between multiple language. One example of such a translation program 417 is the Systran.RTM. Professional translation software developed by Systran Software, Inc. of Lajolla, Calif. The user is provided with a number of suggested translations of a term presented in the field 414 as a drop-down menu to the field 416. Having entered the contents of the field 416, a user then selects the OK button 418, which causes the translated value to be updated in the database. COMPUTER SYSTEM FIG. 29 is a diagrammatic representation of a computer system 500 which may host the server 12, or any of the clients 22, 26 or 30 shown in FIG. 2. The computer system 501 includes a processor 502, a main memory 504, a static memory 506 and a mass storage device 508, each of which is typically included within a housing 510, and coupled to a bus 512. External to the housing 510, and also coupled to the bus 512 are a display device 514, such as a Cathode Ray Tube (CRT) or an Liquid Crystal Display (LCD) unit; an alpha-numeric input device 516, such as a keyboard; a cursor control device 518, such as a mouse; a hard copy device 520, such as a printer; and a signal generation device 522, such as a microphone or speaker. The computer system 500 also includes a network interface device 524 which is also coupled to the bus 526. For the purposes of the specification, the term "computer-readable medium" shall be taken to include any media that may be utilized for the storage of a sequence of instructions for execution by the processor 502. In one embodiment of the present invention, the mass storage device 508 comprises a hard-disk drive unit, including a magnetic disk and the main memory 509 may be a Random Access Memory (RAM). The network interface device 524 may be coupled to a network (e.g., via an intranet or the Internet), and has the capability to transmit and receive signals via the network. Accordingly, for the purposes of the specification, the term "computer-readable medium" shall be taken to include, but not be limited to, a magnetic, electrical or optical storage medium or a signal transmitted or received by the network interface device 524. The present invention extends to any computer-readable medium storing a sequence of instructions which, when executed by the processor 502, cause the processor 502 to perform the steps illustrated in any one of the flow charts discussed above. A program 528 comprising such a sequence of instructions is shown to be resident, wholly or at least partially, in the main memory 504, the mass storage device 508 and the processor 502. The program 525 is also shown to be transmitted to (or from) the network interface device 524. In summary, the present invention is advantageous in that it does not required the maintenance of language-dependent data in two places; one for the base language, and one for any other language. The present invention only stores language-dependent data in language-dependent tables, which simplifies both storage and retrieval logic. Further, the present invention may be viewed as a "denormalized" data storage approach, which is more consistent with efficient and safe data storage methodology. The present invention also has no requirement for language-dependent data to be translated to any one specific language. This may be a benefit to multilingual implementations of applications software. Thus, a multinational company based in the United States with sales offices in France and Germany could have a language-dependent product catalog available in French and German, and not necessarily in English. Thus, a method of constructing a context-dependent database has been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
|
Same subclass Same class Consider this |
||||||||||
