Academia.eduAcademia.edu

Data Definition Facilities in Admin

1983, The Computer Journal

Admin is a database management system based on the network model of data. It has a number of data definition facilities over and above those provided by the CODASYL DDLC. It is possible to define a schema and build subschemas on top of it. Further, one can build another layer of subschemas on any given subschema, subject to the restriction that a total of 63 subschemas are built on top of any schema. It is also possible to define one's own value sets from which fields of records can take on values. Further, one can build 'new' corecs over currently existing corecs. Similarly, one can also define new cosets between any pair of corec types currently existing in a subschema. There is also an authorization and access control specification available with Admin. All these features are described herein.

Data Definition Facilities in Admin Naveen Prakash, Parimala N. and N. Bolloju Systems Group, Computer Maintenance Corporation Ltd., Jeevan Vihar, 3, Parliament Street, New Delhi-110001, India INTRODUCTION Admin is a database management system suited for administrative work. That is, it is aimed to be used in decision making and allied corporate management tasks. It is an experimental, research DBMS aimed finally at the release of a commercially exploitable product. Admin aims at providing a database interface to a large number of host languages such as COBOL, FORTRAN and Pascal. In order to ensure this (as with the CODASYL'S DDL) the DDL defined is treated like an 'abstract' DDL from which language-specific subschemas (see next section) can be generated. This DBMS is based on the network model of data. It differs considerably from the CODASYL DDLC proposals1 and, in its basic model resembles Sangrah2 rather more closely. However, even when compared with this DBMS there are marked differences in Admin. We list below some of the special features of Admin. 1. No repeating groups or vectors are allowed. 2. Areas are not supported in the logical structure. 3. Set types (coset types, in Admin terminology) cannot contain more than one member record type (corec type in Admin). The reason behind departing from CODASYL terminology is that we make a fair number of departures from the CODASYL notions of a record type and a set type. Consequently, we chose the relatively neutral terms, corec and coset to denote these two types, respectively. 4. As a consequence of (2) above, there is no notion of a current of Area. There is also no current of rununit. In fact, there are only two currency indicators, the current of corec type and the current of coset type, respectively. 5. There is a capability to define value sets. With the help of these, a field of a record can be specified to take on values from a user defined set of values. 6. It is possible to define new corec types on top of existing corec types. These newly defined types may be designated as snapshots or evolving views. As will become obvious later, our notion of snapshots and evolving views is not identical to that described by Tsichritizis.3 7. It is also possible to define new coset types on existing corec types. 8. Member duplicates on a sort key can be further ordered in an ascending or descending manner. 9. Facilities exist to provide a certain amount of decentralization in the definition of schemas. 10. There is an authorization scheme based on passwords. 11. Access right specification is not based on the lock/ key mechanism. Instead, access rights are explicitly specified. 12. There is provision for the specification of integrity constraints on corec and coset types. 13. There is a simplified user interface for handling concurrency. 14. Errors encountered while executing a DML statement are not reported by an exception code in an error-status register. Instead, errors are handled by the introduction of standard functions and by giving fatal errors. In this paper, we shall consider only a few of these features of Admin. For un understanding of features (1) to (4) above, the reader is referred to Ref. 4. Error reporting is covered in Ref. 5. In the next section we shall,first,describe the schema to subschema relationship in Admin. Thereafter, we shall describe the manner in which different language-compatible subschemas are produced. In the subsequent sections we shall consider value sets, the definition of new corecs and new cosets, and authorization and access control. THE SCHEMA/SUBSCHEMA RELATIONSHIP The basic assumption is that every schema is a subschema. Fairly often, we refer to the schema as a subschema at level 0. It is recognized that the subschema at level 0 is the most privileged subschema in a database system. Consequently, this subschema has all access rights (see below) granted to it. The second rule followed in Admin is that a subschema can spawn other subschemas. Thus, over the subschema at level 0, it is possible to build subschemas at level 1. Likewise, over these latter subschemas we can construct subschemas at level 2 and so on. In theory, by this process we can construct any number of levels of subschemas once the subschema at level 0 is defined. However, because of the implementation restrictions, we can CCC-OOIO-4620/83/0026-0329 $03.50 © Wiley Heyden Ltd, 1983 THE COMPUTER JOURNAL, VOL 26, NO. 4,1983 329 Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 Admin is a database management system based on the network model of data. It has a number of data definition facilities over and above those provided by the CODASYL DDLC. It is possible to define a schema and build subschemas on top of it. Further, one can build another layer of subschemas on any given subschema, subject to the restriction that a total of 63 subschemas are built on top of any schema. It is also possible to define one's own value sets from which fields of records can take on values. Further, one can build 'new' corecs over currently existing corecs. Similarly, one can also define new cosets between any pair of corec types currently existing in a subschema. There is also an authorization and access control specification available with Admin. All these features are described herein. N. PRAKASH, PARIMALA N. AND N. BOLLOJU 330 THE COMPUTER JOURNAL, VOL. 26, NO. 4,1983 We shall now consider the manner in which a subschema is denned. The first part of a subschema definition is the subschema header. This part is mandatory. It is followed by a value set part, which might be empty, a corec definition part and a possibly empty coset definition part. These parts must appear in the order in which they are specified here. We shall consider the header here. The header introduces the definition of a subschema. As mentioned above, each schema is a subschema. However, we use the two words schema and subschema in the headers as follows: (a) logical schema Name « switch list» (b) logical subschema mine; schema is Name « switch list)); The use of schema and subschema is for documentation purposes only. The interesting thing in the header is the switch list. In this list it is possible to specify both processing options and language options. As an example of the former consider the option SYNTAX. When this option is specified, then the subschema processor performs an analysis of the definition of the subschema, but does not convert it to an internal form. Thus, all trivial errors are trapped without too much expenditure of machine time. Another switch is the LIST option which produces a listing of the subschema being processed. The language options allow us to specify the language(s) which will be used as the host. It is the duty of the processor to convert the definition of the subschema into a form compatible with the language(s) specified. As a first implementation, the language options that can be specified are Pascal, COBOL and FORTRAN. Of these, Pascal has already been implemented. The notion of language options helps us to view the DDL of Admin as an abstract language. This DDL is not oriented towards any specific host language. On the contrary, the user is free to decide the language in which he wishes to write his programs. It is, of course, possible that the users of subschemas may want to write different programs in different languages. In such a case, they have to choose more than one host language and have to exercise more than one language option. As mentioned above, the processor would then produce 'object' subschemas which are compatible with the various languages given in the switch list. Once the various host language-compatible-subschemas are developed we expect that the user of Admin will run the COBOL DML processor or the Pascal DML processor, etc. These processors will pick up the definition of the COBOL oriented subschemas, the Pascal oriented subschemas etc. and include it in the user program. The Pascal DML processor has already been implemented by us. VALUE SETS A value set is a set of values. When a field of a record is defined then it is mandatory to specify the value set from which thisfieldwill take on values. The most elementary value sets are the primitive types. For Admin, these are the types integer, real, Boolean and character string. Using these elementary value sets a Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 construct only two further levels once the schema is denned. That is, we can construct subschemas at levels 1 and 2 once the schema is available to us. Further, a total of 63 such subschemas can be constructed in any implementation. In order to establish the desirability of a facility for building different levels of subschemas consider a manufacturing concern. Let this concern be represented by a schema 5 which contains information about sales, personnel and its engineering activities. Corresponding to each of these activities, let there be three subschemas 51, S2, S3 built on S. Now, it is possible that this organization has split up its engineering wings into two parts called the design department and the production department. One can see that, if the information to be conveyed to these departments is a subset of the information in 53, then it would be most useful to build two subschemas S3' and 53" over 53, corresponding to these two departments. It should be obvious that 5 is the subschema at level 0, 51, 52, and 53 are subschemas at level 1 and 53' and 53" are subschemas at level 2. It is possible, even in the case considered above, to write two separate subschemas 53' and 53" at the same level as 53. However, we do not favour this because of the extra burden that this would impose on the DBA. Instead, we prefer to associate a sub-DBA function with each subschema. That is, the subschema 53 in the example considered above would have its own DBA who would be responsible for the creation of other subschemas. This DBA would function within his own realm and, as we shall see, could create new corecs or cosets as needed. He can also do limited amounts of reorganization and performance monitoring. This, however, is restricted to the corecs/cosets that he has created in subschemas denned by him. From this, we can draw the third rule of Admin, namely, all DBAs (called owners of subschemas by us) can reorganize and monitor the performance of all objects created by them. We shall see below that all subschema owners can pass on, to other subschemas created by them, a subset of the access rights that they possess over the objects in the respective subschemas owned by them. From the foregoing, we see that the facility for the definition of subschemas at various levels gives rise to a hierarchy of subschemas. As the level number increases in this hierarchy a progressively smaller part of the database with lesser access capability is made available along a given path of the hierarchy. Further, at each node of this hierarchy (that is, at each subschema) sufficient decision making capability exists to define nodes at a higher level number with this node as the root. In this way, the conventional DBA function can be decentralized. This will most certainly reduce the responsibility of a centralized DBA and, we conjecture, will result in 'better' information being available at various nodes of the hierarchy. Now, the fourth rule of Admin says that each subschema can, potentially, have users who wish to manipulate the data made visible to them by the subschema. These users are programmers who write application programs to use the database. The authorization mechanism used to check for authority of use will be considered below. We shall also consider the manner in which subschema owners are distinguished from users of the subschema. DATA DEFINITION FACILITIES IN ADMIN DBA can define his own value sets. There are two kinds of value sets in Admin, called the domain and the subrange, respectively. When a domain is defined, the values that can be taken on by a field defined on this domain are enumerated as follows: Week = (1,2,3,4,5,6,1); Colour = ('green', 'brown', 'cream') Month = 1 to 12; Subranges can be defined over the integers only. With each value set a string of blanks or a zero is automatically included by the system. This is dictated by the underlying type of the value set. The string of blanks has a length equal to the length of the character string defined in the value set. The owner of a subschema at level 0 can define value sets and use these to describefieldsof records within this framework. However, all other subschema owners must follow certain conventions when defining and using value sets in their own subschemas. These conventions are given below: (1) A subrange can be defined in a subschema. It can be used to designate the type offieldprovided one of the following conditions hold: (a) the corresponding field in the underlying subschema is defined over the integers (b) the corresponding field in the underlying subschema is defined over a subrange and the subrange just defined is a subrange of that in the underlying schema. (2) A domain can be defined in the subschema. It can be used to designate the type of a field provided one of the following conditions hold: (a) The corresponding field in the underlying subschema is either integer or real. (b) The corresponding field in the underlying subschema is itself defined over a domain and the domain just defined is a subset of that in the underlying subschema. DEFINING CORECS AND COSETS In this section we shall consider the manner in which corecs and cosets can be defined in Admin. In doing so, we shall concern ourselves, with only the more interesting aspects of this definition, namely, those that deal with new corecs and new cosets. At the outset, we would like to state that the facility of defining new corecs has become very restricted as compared to the original proposals with which we started out. In the originating proposals we envisaged the New corecs We define two kinds of corect types in Admin. These are called unqualified corecs and qualified corecs, respectively. Unqualified corecs are the conventional corecs whereas qualified corecs are new corecs. A qualified corec type is built over two unqualified corec types, called the base types, which must have been previously defined. A qualified corec type can either be a snapshot or an evolving view. A qualified corec, by virtue of the fact that it is built over two corec types, contains in it selected portions of these two types. Thus, the corec being defined presents an altogether new view of the underlying corecs. The new corec may have either of two properties as follows: (i) It may reflect, at all times, all updates made to the base corecs and all updates made to it may be reflected in the base types, or (ii) Once created, it may become independent of updates made to the base types. Similarly, updates made to it may not be reflected in the base corec types. The former kind of qualified corec types are called evolving views and the latter are called snapshots. Now, the construction of qualified corec types is dictated by the manner in which selected portions of underlying corecs are combined together to form the new corec type. One method of construction relies upon selecting totally arbitrary portions of the base corecs whereas the other exploits the occurrence of common fields in the two bases. These fields are called joining fields. We shall consider both these methods in some detail here: Totally arbitrary portions. When a qualified corec Z is built over two bases X and Y then any part of X and Y may be selected to define it. Since there is no rule by which Z is constructed over X and Y, initial loading of Z can only be performed by a user-written program which exploits real world knowledge. Hence Z can be loaded by retrieving X and Y and thereafter by creating Z in the UWA and storing it. Since recourse has to be taken to a user's real world knowledge to make an entry of type Z in the database, it follows that Z can be a snapshot corec type only. This is because the system is unable to ensure that all updates to Z are reflected in X and Y and vice versa. It must be noted that a definition of Z can only be made in a subschema which contains in its view both X and Y, otherwise its initial loading will be impossible. Joiningfields.As mentioned above, joining fields are those which can be exploited for the definition of qualified THE COMPUTER JOURNAL, VOL. 26, NO. 4,1983 331 Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 Value sets which are of the kind domain can be identified over the elementary value sets integer, real and character string only. It must be noted that we assume no ordering among the values specified for a domain. Further, when domains are defined over character string then all values in the domain must have the same length. For example, the domain Colour has values of length 5 characters only. A value set which is a subrange provides a lower bound and an upper bound on the values which a field defined on the subrange can take on as follows: definition of new corecs by the owner of any subscema in the database. However, as the design got more detailed and as the implementation got more crystallized we found that this generality could not be achieved without severely compromising efficiency. Further, we decided to adopt a cautious approach towards this generality. Accordingly, we felt that until we had implemented and studied the behaviour of a restricted definition of new corecs we should not attempt to realize the original proposals. We shall present here the part of these proposals which have been accepted in Admin. N. PRAKASH, PARIMALA N. AND N. BOLLOJU corec types. We shall consider the meaning of joining fields before explaining the way in which they can be used for the construction of corec types. Let the two base corec types used in the construction of a qualified type be Basel and Basel. Let Fieldlistl and Fieldlistl be the lists of fields of these corec types, respectively. Then these two lists could be designated as the joining field of the newly constructed corec type provided: (i) either both Fieldlistl and Fieldlistl (see above) are unique keys of their respective types, or (ii) one of the field lists, say Fieldlistl, is a unique key whereas the other, Fieldlistl, is not. It follows that these conditions help us to build 1:1 and 1 :N relationships between Basel and Basel. Note that an M:A^ relationship (both field lists being non-unique keys) is barred because of implementation reasons. Let us now see the manner in which snapshots and evolving views can be developed by a use of joining fields: Snapshots. When the new corec type is a snapshot then it may exist in a subschema which does not contain the base corecs provided that this schema is at a level one higher than that containing the base corec types and is built on top of this latter subschema. The loading of such a snapshot can be done by the Rload utility (considered later). Evolving views. A new corec defined as an evolving view must be defined at all levels from the schema up to the present level in all subschemas along the path linking the schema to the current subschema. After its definition in the schema it should be included in the subschemas at the various levels as per the normal methods of subschema definition. In doing so, recourse may have to be taken to the reorganization utility available with Admin. Initial loading of data into evolving views should be done using the Rload utility. By virtue of the fact that snapshots become independ332 THE COMPUTER JOURNAL, VOL. 26, NO. 4,1983 (i) A record occurrence for both the types is not found. In this case, the subsets of Basel and Basel constituting cored are stored after cored itself has been stored. (ii) A record occurrence of one of the types, say Basel is found. Here, all fields of Basel which appear in cored are compared with the corresponding fields of the record found. If the values in these fields match, then a store into Basel is not performed. However, the subset of Basel is stored after storing cored. On the other hand if values in the fields of cored do not match those in the record of Basel then the user is trying to store records which have duplicate values in their joiningfields.This violates a 1:1 relationship. Consequently the user's program is aborted. (lii) A record each in Basel and Basel is found. The same action as in (ii) above is taken for both the base records. The Rload utility was mentioned above in connection with loading of snapshots and evolving views. This utility searches the occurrences of the base corec types to find a match on the joining fields. If a qualified corec capturing a 1:1 relationship is to be loaded then whenever an occurrence of Basel has joining fields identical to those in Basel, an occurrence of the new corec is stored. If the qualified corec type captures a 1: N relationship between Basel and Basel then for every occurrence of Basel all the occurrences of Basel which match on the joining fields are searched for. For each such match an occurrence of the qualified corec type is created. As pointed out by the referee of this paper, it is possible to construct qualified corecs by using predefined coset relationships. This, however has not been attempted by us. New cosets New cosets can be defined in any subschema at any level. It is necessary that the corec types over which these coset types are defined be included in the subschema concerned. These new cosets are equivalent in every respect to other cosets, e.g. one can specify integrity constraints on them. The only restriction that is imposed on new cosets is on their inclusion and retention properties. For new cosets Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 (a) each field in Fieldlistl is of the same type as that of the corresponding field in Fieldlistl, and (b) the two field lists are defined as keys, not necessarily unique of the respective corec types. The purpose of defining joining fields is to develop a rule by which occurrences of the new corec type have to be created. In such cases those occurrences of the underlying types are selected which have the same values in their respective field list. Thereafter, the appropriate parts of the two records selected by this process are picked up, reordered if necessary, and combined together to define the occurrence to be created. Whereas the foregoing gives an idea of the way in which joining fields can be used, it is by no means the end of the story. We shall consider the use of joining fields in greater detail later. For the moment it must be understood that a match on the values contained in the joining fields is the cirterion we use for the creation of occurrences of the new corec type. Now, having considered the notion of joining fields let us see how they can be used for construction of new corec types. A new corec type can be defined on two base corec types, Basel and Basel provided: ent of the base corec types giving rise to them, they are relatively simple to handle. However, evolving views are complex objects. As an example of their complexity consider the store operation for an evolving view corec type called cored. Let it capture a 1:1 relationship between two base types Basel and Basel. If either of Basel or Basel is stored then it becomes necessary tofindout whether an occurrence of cored has to be created or not. In order to do so, a search has to be performed to find out whether the joining fields of Basel and Basel match. If they do match then the action considered above for the storage of an occurrence of an evolving view has to be initiated, otherwise not. Now consider the effect of storing an occurrence of cored. A search is initiated for records of both Basel and Basel using the values of the joining field in cored. The following cases arise: DATA DEFINITION FACILITIES IN ADMIN is is necessary that (a) inclusion be manual, and (b) retention be optional. AUTHORIZATION AND ACCESS CONTROL Authorization The authorization check relies on a password mechanism, which is described here. When a subschema, be it at the level zero or at any higher level, is being processed then it is expected that a password will be supplied to the system. In fact, the processor, once it finds that a valid subschema has been fed to it, outputs a message on the terminal asking for a password or for two passwords (see below). The password supplied is then stored together with the definition of the subschema for further use. Let us study this general framework in more detail. If the processor is currently processing the subschema at level 0 then the password supplied is treated as the password of the owner of the subschema at this level. Later, when a user asks for DBMS facilities such as reorganization, database performance, cross-reference listing etc. for the schema, he is expected to supply this password. Upon receiving the password supplied by the user, the system checks out whether the password supplied is, indeed, the password associated with the owner of the subschema at level 0. All subschemas at levels 1 and 2 will have two passwords associated with them. These are called the owner and the user passwords, respectively. A user who supplies the owner password of a subschema at any of these levels is given all the privileges of the owner of this subschema. On the other hand, a user who supplies the user password of such a subschema can access the part of the database defined by the subschema in the role of an application programmer. From the foregoing, it follows that there is a certain skewness in the authorization technique for subschemas at level 0 and those at higher levels. We shall give the reasoning behind this. As a general principle, we propounded the existence of two passwords, the owner and the user passwords for every subschema. This is because these two classes of user groups have different privileges with respect to the subschema concerned. The only way in which a password mechanism can determine what privileges are to be granted to different users is on the basis of differences in the passwords supplied. Now, whereas it is reasonable to assume that various application programmers will interact with subsets of the database, it is unlikely that there will be any application programmer who wishes to manipulate the entire database. Consequently, it seems reasonable to introduce (i) The owner of a subschema at level 0 can change his own password and the password of any other person, be he the owner or the user of a subschema, (ii) The subschema owner at level / (i greater than zero) can change the owner password as well as the user password of the subschema owned by him and of all subschemas spawned by him. (iii) Any user of a subschema at level i (i greater than zero) can change the user password of his own subschema. Access rights The system provides various access rights on the database. Associated with each access right is a set of operations that can be performed by a user having this right (see Table 1). At the time a subschema is defined, it is possible to associate access rights with eachfield,corec type or coset type defined in it. Consequently, a user who is authorized to access the database via this subschema can perform only those operations on the objects in the database as are determined by the access rights defined on these objects. As an example of the way in which access rights are defined consider Corec Person; Find, Obtain, Store; Age Value from integer; Modify; end; Here a corec, Person, is defined and the rights, Find, Obtain and Store are granted. The field Age is allowed to be modified. It must be noted that the owner of the subschema at level 0 has universal rights. In other words, he can perform any operation on any element in the database. This is because we adopt the philosophy that the authority which defines a logical structure can manipulate it in any way. As a result of this, if a snapshot is defined by a subschema owner for a subschema at level / then all access rights are granted for this snapshot to the owner of this subschema. However, because of the nature of the network model of Admin there are certain limitations on the access THE COMPUTER JOURNAL, VOL. 26, NO. 4,1983 333 Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 As is well known, authorization refers to the prevention of unauthorized users from accessing the database. Access control, on the other hand, deals with the problem of ensuring that authorized users access the database according to well defined rules. Thus, if there is an authorized user (/of a database then he might be allowed to read a record but not to update it. Such an access rule falls under the purview of access control. We shall now consider both authorization and access control in turn. the notion of user and owner passwords for all subschemas except the one at level 0. Therefore, we departed from the general principle enunciated earlier and chose to create the skewness referred to above, namely, all subschemas have an owner and a user password except the one at level 0 which has an owner password only. Since every owner password is more privileged than the user password, in those rare cases where access to the entire database is desired, an application programmer can supply the owner password of the subschema at level 0 and can perform the manipulation desired. We have considered above the manner in which passwords can be defined. In order to preserve the privacy of the database it is more than likely that all persons interacting with a database will wish to change their passwords at some time or other. Changes to passwords can be made by using the Password utility. The rules according to which this utility functions are as follows: N. PRAKASH, PARIMALA N. AND N. BOLLOJU Table 1. Access right D ML operations that can be performed Comment INVOKE, MARKER, DEFINE These declarations do not need any access rights. These statements do not require any access rights. These Boolean valued functions can be referred with no access rights. MARK, RESTORE, SHIFT, ESTABLISH, TBEG, TEND FIND (oncorec) FIND (oncoset) OBTAIN (oncorec) OBTAIN (oncoset) rights that can be granted to different subschemas. As an example, consider the delete right. Let Cr be a corec type of a subschema at level /. Let Cr participate as an owner type in a coset CS. Further, let CS have retention fixed or mandatory. Now let there be a corec type, cored, defined in a subschema, SS, at level i• + 1. Now, our desire is to grant the delete right on correcl. In order for us to be able to do so, it is necessary to ensure that deletion of cored is possible in SS. This is so because if the logical structure of SS is such that deletion is not possible then, clearly, it is useless to give this access right in SS. In order for deletion to be possible, SS should possess the following structural characteristics: (a) It cored is a subset of Cr then CS should be available in the subschema. (b) If cored is a subset of an evolving view, cored, such that cored is built using Cr, then CSmust be included in the subschema. The delete right can be granted without any restriction on all corec types not covered by the two conditions above. Once it is ensured that these structural characteristics are indeed met by SS, we can grant the delete right on cored. It is however, unfair to leave the owners of the subschemas alone to check out if certain operations can be performed at all in a subschema or not. Admin is able to provide some help in this regard. This is as a direct consequence of the fact that we do not use a lock and key mechanism for the specification of access control. On the other hand, because we ask for access rights to be specified explicitly in terms of the operations to be performed, we can determine, precisely, those operations that are intended to be performed. However, we also know the structural characteristics which permit an operation to be performed. Consequently, the processor can check out that a given access right is meaningless because the action that can be performed under it is not possible. In fact, this processor can even ouput a message detailing the exact structural deficiency which results in the access right being meaningless. In the foregoing, we have considered the limitations imposed by the network model of Admin in granting 334 THE COMPUTER JOURNAL, VOL. 26, NO. 4,1983 May only May only May only May only May only May only be specified on the coset type. be specified on the coset type. be specified on the coset type. be specified on a field. be specified on corec types. be specified on corec types. access rights. These limitations are to be viewed in the overall rule that one can only grant access rights to another in such a way that the access rights granted are a subset of the rights possessed by oneself. Thus, the access right mechanism has to ensure two things: (a) The access rights are in conformity with the structural characteristics of a subschema. (b) The access rights being granted by X are a subset of the access rights possessed by X. Once both these checks are found to be valid the access right mechanism is through. However, we must not lose sight of the fact that granting access rights is a dynamic process. It may happen that the access rights of a user have to be augmented with yet others or that a given right has to be revoked. This kind of dynamism is handled by the reorganization utility of Admin. In doing this the utility has to ensure that: (a) No user of a subschema meddles with his own or some other users access rights. (b) No owner of a subschema usurps more rights than are to be granted to him. In order to ensure (a) above, we allow access right modification only by those people whose password identifies them as owners of subschemas. Further, in order to enforce rule (b) above we allow an owner of a subschema to modify the access rights of all subschemas spawned by him subject to the restriction that he is allowed to modify the rights of only those structures which he has created and passed over into the subschemas. In other words, he cannot modify the rights of a subschema with respect to structures created within the subschema. CONCLUSION We have described here the data definition facilities of Admin. Admin is currently under implementation at the DEC-10 at LIT. Kanpur. It is being written in Pascal with all machine dependent parts in BLISS-10. Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 REMOVE TRANSFER INSERT MODIFY STORE DELETE FOUND, COSBEG, COSEND, EMPTY, TENANT, CORBEG, CORSEND FIND on the corec type. FIND on both the owner and member corec types through the coset type. OBTAIN on the corec type. 0 BTAIN on both the owner and member corec types through the coset type. REMOVE on the member corec type in the coset type. TRANSFER on the member corec type in the coset type. IN SE RT on the member corec type in the coset type. MODIFY on the field of a corec type. STORE on the corec type. DELETE on the corec type. DATA DEFINITION FACILITIES IN ADMIN REFERENCES 1. Report of the DDLC. Inform Sys. 247-320 (1978). 2. Naveen Prakash and Parimala N, A typed data definition language. Technical Report, NCSDCT.TIFR, Bombay (1980). 3. 0. C. Tsichritizis and F. H. Lochovsky, Data Base Management Systems, Academic Press (1977). 4. Naveen Prakash et al., Samhita—A. data base management system. The Computer Journal 24 (1), 48-51 (1981). 5. Naveen Prakash and P. N. Gejji, Error reporting and recovery in Sangarh. Software—Practice and Experience, 1 1 , 613-621 (1981). Received December 1982 Downloaded from https://academic.oup.com/comjnl/article-abstract/26/4/329/377423 by guest on 09 April 2019 THE COMPUTER JOURNAL, VOL. 26, NO. 4,1983 335