THE NETWORK DATA MODEL SECTION 8 An early DBMS
Background Networks are a natural way of representing relationships among objects The network data model represents data in network structures of record types connected in one-to-one or one-to-many relationships
Conference on Data Systems Language Early 1960s American Standards Institute (ANSI) – 1971 IDS and IDMS
Concepts Schema Subschema Physical details
Records and Sets Record type Set Owner record type Member record type
A Bachman Diagram A Data Structure Diagram CUSTOMER PURCHASE-ORDER LINE-ITEMS SALESPERSON OWNER MEMBEROWNER MEMBER SALESPO SET CUSTPO SET POITEM SET One-to-many relationship One-to-one relationship
Instance or Occurrence SmithJonesBean PO #1PO #2PO #3PO #4 PensPencilsErasersEnvelopes DarwinWallace CUSTOMER SALESPERSON An Example of a Network Data Structure
Types of Networks Simple networks Complex networks Link record type
An Example of a Link Record STUDENT CLASS Thus a complex network STUDENT STUDENT- ID CLASS CLASS-ID TAKING CLASS SET ENROLLED SET SC
Expanded Example Sue WhiteJudy Dench PBA461 Peter Black PBE230SWA461SWE230JDA461PBB304 Botany 304English 230 Accounting 461 Converts a complex network into a simple network
The Model’s Relationship to Conceptual Modeling Semantics An example of a conceptual model? CUSTOMERACCOUNT HAS- ACCOUNT 1N CUST-IDNAMEADDRESSACCT #BALANCE CUST-IDNAMEADDRESSBALANCEACCT # CUSTOMERACCOUNT CUSTOMER/ACCOUNT SET
RULE 1 For each entity of set E in a conceptual schema, create a record type R in the network data structure. All attributes of E are represented as fields in R
Representing One-to-Many Relationships CUSTOMERACCOUNT CUSTOMERACCOUNT RULE 2 For one-to-many relationships, the record type on the “one” side of the relationship becomes the owner, the record type on the “many” side becomes the member record type. If the relationship is strictly one-to-one, then the owner and member record types are chosen arbitrarily.
Transforming n-ary Relationships An example could be a three-way relationship PRODUCT DATE COUNTRY SOLD NM M
Must create a link record PRODUCTDATECOUNTRY LINK RECORD Product/Link Set Date/Link Set Country/Link Set RULE 3 For each n-ary relationships, n > 2, create a linking record L, and make it the member record type in n set types. Designate the owner of each set type as the record type on the “one” side of the resulting on-to-many relationship.
Nov. 2, 1999Jan. 15, 2000Jan Dec. 5, 1999 DATES LINK 1 LINK 2 LINK 3 LINK 4 Australia Canada USA Widget Clamp Gadget PRODUCTSCOUNTRIES The Database from the above example
Transforming Many-To-Many Relationships An manufacturer may produce many products, and any one of these products can be made by several manufacturers MANUFACTURERPRODUCT RULE 4 For each may-to-many relationship between entity sets E 1 and E 2 create a link record type L and make it the member record type in two set types, of which the set type owners are the record types corresponding to E 1 and E 2.
MANUFACTURERPRODUCT LREC Product/LRec SetManufacturer/LRec Set Ron Smith 450 Maple St. Gamma, Inc 68 Main St.. Bean Mfg. 26 Harris Ave. 115Widget 116Clamp 120Gadget MANUFACTURERPRODUCT LREC
Data Definition Language What is the DDL? Use the DDL to define the database schema The following procedure should be used.
Procedure Create the conceptual data model Map the conceptual data model to network data structure diagrams Use the DDL to implement the schema
A schema is made up of: Schema section Record sections Set sections
1.Create the conceptual model CUSTOMER LINE-ITEM INVOICE HAS- INVOICE 1M 1 CONTAINS M
2.Map to a network structure CUSTOMER LINE-ITEM INVOICE CUSTINV INVITEM
3.Implement the schema 1.SCHEMA NAME IS ACCOUNTSREC 2.RECORD NAME IS CUSTOMER 3.CUST-IDTYPE ISNUMERIC INTEGER 4.NAMETYPE ISCHARACTER 15 5.ADDRESSTYPE ISCHARACTER 20 6.ACCOUNT-BALANCETYPE ISNUMERIC (5,2) 7.RECORD NAME IS INVOICE 8.INVONOTYPE ISNUMERIC INTEGER 9.DATETYPE ISCHARACTER 9 10.AMOUNTTYPE ISNUMERIC (5,2) 11.STATUSTYPE ISCHARACTER 2 12.RECORD NAME IS LINE-ITEM 13.STOCKNOTYPE ISNUMERIC INTEGER 14.DESCRIPTIONTYPE ISCHARACTER PRICETYPE ISNUMERIC (4,2) 16.CUSTINV 17.OWNER IS CUSTOMER 18.MEMBER IS INVOICE 19.INVITEM 20.OWNER IS INVOICE 21.MEMBER IS LINE-ITEM
From Schema to Subschema Title division Mapping division Structure division Subschema record section Subschema set section
Subschema Example SS INVSTATUS WITHIN ACCOUNTSREC. MAPPING DIVISION. ALIAS SECTION. AD RECORD CUSTOMER IS OWEDBY. AD SET CUST-INV IS OWEDBY – INV. STRUCTURE DIVISION. RECORD SECTION. 01OWEDBY. 05CUST-ID. 05NAME. 05ACCOUNT-BALANCE. 01INVOICE ALL. SET SECTION. SDOWEDBY-INV
Data Manipulation Language What is the DML? Process records one at a time The following procedure should be used.
Basic Commands Navigational commands Retrieval commands Update commands Records Sets
Basic DML Commands FIND GET ERASE STORE MODIFY CONNECT DISCONNECT RECONNECT Command Navigation Retrieval Record Update Set Update Type
Some terms defined User working area Currency indicators Status flags Record templates
14Bean150 OWEDBY TEMPLATE INVOICE TEMPLATE OWEDBY INVOICE OWEDBY- INVOICE RUN-UNIT CURRENCY POINTERS 10Smith100 14Bean150 16Black User Working Area in Primary Memory OWEDBY INSTANCES INVOICE INSTANCES Relationship of User Working Area to Database Instances
Retrieval and Update FIND Command GET Command MOVE 105 TO CUST-ID IN CUSTOMER FIND ANY CUSTOMER USING CUST-ID GET CUSTOMER A Simple Record Retrieval
MOVE 0 TO ACCOUNT-BALANCE IN CUSTOMER FIND ANY CUSTOMER USING ACCOUNT-BALANCE DOWHILE DB-STATUS = 0 GET CUSTOMER (process customer record) FIND DUPLICATE CUSTOMER USING ACCOUNT-BALANCE END-DO Retrieval of all Records with a Particular Characteristic
ERASE Command MOVE 0 TO ACCOUNT-BALANCE IN CUSTOMER FIND FOR UPDATE ANY CUSTOMER USING ACCOUNT-BALANCE DOWHILE DB-STATUS = 0 ERASE CUSTOMER FIND FOE UPDATE DUPLICATE CUSTOMER USING ACCOUNT-BALANCE END-DO Deleting Records
MODIFY Command MOVE 502 TO CUST-ID IN CUSTOMER FIND FOR UPDATE ANY CUSTOMER USING CUST-ID GET CUSTOMER IF DB-STATUS = 0 THEN MOVE “455 Cherry Lane, Hamilton, Ontario” TO ADDRESS IN CUSTOMER MODIFY CUSTOMER ELSE (perform error routine) END-IF Modifying Record Contents
STORE Command MOVE 503 TO CUST-ID IN CUSTOMER MOVE “James W. Smith” TO NAME IN CUSTOMER MOVE“201 Scenic Drive, Hamilton,Ontario” TO ADDRESS IN CUSTOMER MOVE TO ACCOUNT-BALANCE IN CUSTOMER STORE CUSTOMER Adding New Records
Set Operations CONNECT Command MOVE 231 TO INVNO IN INVOICE MOVE“7/7/99”TO DATE IN INVOICE MOVE TO INVOICE-AMOUNT IN INVOICE STORE INVOICE MOVE 431 TO CUST-ID IN CUSTOMER FIND ANY CUSTOMER USING CUST-ID CONNECT INVOICE TO CUSTOMER Placing a Record in a Set
DISCONNECT Command MOVE 254 TO INVNO OF INVOICE FIND ANY INVOICE USING INVNO DISCONNECT INVOICE FROM CUSTINV Removing a Record from a Set
RECONNECT Command MOVE 510 TO INVNO OF INVOICE FIND ANY INVOICE USING INVNO MOVE 431 TO CUST-ID IN CUSTOMER FIND ANY CUSTOMER USING CUST-ID RECONNECT INVOICE IN CUSTINV Changing Set Membership
Set Membership Classification Set insertion class Defined by the statement: INSERTION IS Manual insertion or Automatic insertion
Manual Insertion Mode Must be placed by using CONNECT –CONNECT TO SET NAME IS CUSTINV. OWNER IS CUSTOMER MEMBER IS INVOICE INSERTION IS MANUAL RETENTION IS OPTIONAL Subschema Fragment
MOVE 231 TO INVNO IN INVOICE MOVE“7/7/99”TO DATE IN INVOICE MOVE TO INVOICE-AMOUNT IN INVOICE STORE INVOICE MOVE 431 TO CUST-ID IN CUSTOMER FIND ANY CUSTOMER USING CUST-ID CONNECT INVOICE TO CUSTOMER Placing a Record in a Set
Automatic Insertion Mode Must be placed by using STORE –STORE MOVE 431 TO CUST-ID IN CUSTOMER FIND ANY CUSTOMER USING CUST-ID MOVE 231 TO INVNO IN INVOICE MOVE“7/7/99”TO DATE IN INVOICE MOVE TO INVOICE-AMOUNT IN INVOICE STORE INVOICE Placing a Record in a Set
Set Retention Retention options are: –Fixed –Mandatory –Optional
CUSTINV. OWNER IS CUSTOMER MEMBER IS INVOICE INSERTION IS MANUAL RETENTION IS OPTIONAL INVITEM OWNER IS INVOICE MEMBER IS LINE-ITEM INSERTION IS MANUAL RETENTION IS OPTIONAL Subschema Fragment
Implementation Large size Well-defined repetitive queries Well-defined transactions Well-defined applications