0% found this document useful (0 votes)
216 views6 pages

DB Mangmnt Examples

The document describes database transactions for an ABC Markets database. It includes: - Two transactions - a credit purchase by customer 10010 on May 11, 2012 and a $100 cash payment by customer 10010 on June 3, 2012. - SQL code to represent each transaction using BEGIN TRANSACTION and COMMIT statements. - A transaction log table showing the before and after values for each transaction. - Lists of locking, unlocking and data manipulation steps for each transaction assuming different locking protocols.

Uploaded by

Mustafa Adil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
216 views6 pages

DB Mangmnt Examples

The document describes database transactions for an ABC Markets database. It includes: - Two transactions - a credit purchase by customer 10010 on May 11, 2012 and a $100 cash payment by customer 10010 on June 3, 2012. - SQL code to represent each transaction using BEGIN TRANSACTION and COMMIT statements. - A transaction log table showing the before and after values for each transaction. - Lists of locking, unlocking and data manipulation steps for each transaction assuming different locking protocols.

Uploaded by

Mustafa Adil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Chapter 10 Exercises

6. ABC Markets sell products to customers. The relational diagram shown in Figure P10.6 represents the main
entities for ABC’s database.
FIGURE P10.6 The ABC Markets Relational Diagram

Note the following important characteristics:


• A customer may make many purchases, each one represented by an invoice.
 The CUS_BALANCE is updated with each credit purchase or payment and represents the amount
the customer owes.
 The CUS_BALANCE is increased (+) with every credit purchase and decreased (-) with every
customer payment.
 The date of last purchase is updated with each new purchase made by the customer.
 The date of last payment is updated with each new payment made by the customer.
• An invoice represents a product purchase by a customer.
 An INVOICE can have many invoice LINEs, one for each product purchased.
 The INV_TOTAL represents the total cost of invoice including taxes.
 The INV_TERMS can be “30,” “60,” or “90” (representing the number of days of credit) or
“CASH,” “CHECK,” or “CC.”
 The invoice status can be “OPEN,” “PAID,” or “CANCEL.”
• A product’s quantity on hand (P_QTYOH) is updated (decreased) with each product sale.
• A customer may make many payments. The payment type (PMT_TYPE) can be one of the following:
 “CASH” for cash payments.
 “CHECK” for check payments
 “CC” for credit card payments
• The payment details (PMT_DETAILS) are used to record data about check or credit card payments:
 The bank, account number, and check number for check payments
 The issuer, credit card number, and expiration date for credit card payments.

Note: Not all entities and attributes are represented in this example. Use only the attributes indicated.
Using this database, write the SQL code to represent each one of the following transactions. Use BEGIN
TRANSACTION and COMMIT to group the SQL statements in logical transactions.
Chapter 10 Exercises

a. On May 11, 2012, customer ‘10010’ makes a credit purchase (30 days) of one unit of product ‘11QER/31’
with a unit price of $110.00; the tax rate is 8 percent. The invoice number is 10983, and this invoice has
only one product line.

a. BEGIN TRANSACTION
b. INSERT INTO INVOICE
i. VALUES (10983, ‘10010’, ‘11-May-2012’, 118.80, ‘30’, ‘OPEN’);
c. INSERT INTO LINE
i. VALUES (10983, 1, ‘11QER/31’, 1, 110.00);
d. UPDATE PRODUCT
i. SET P_QTYOH = P_QTYOH – 1
ii. WHERE P_CODE = ‘11QER/31’;
e. UPDATE CUSTOMER
f. SET CUS_DATELSTPUR = ‘11-May-2012’, CUS_BALANCE = CUS_BALANCE +118.80
g. WHERE CUS_CODE = ‘10010’;
h. COMMIT;

b. On June 3, 2012, customer ‘10010’ makes a payment of $100 in cash. The payment ID is 3428.

a. BEGIN TRANSACTION
b. INSERT INTO PAYMENTS
VALUES (3428, ‘03-Jun-2012’, ‘10010’, 100.00, ‘CASH’, 'None');
UPDATE CUSTOMER;
SET CUS_DATELSTPMT = ‘03-Jun-2012’, CUS_BALANCE = CUS_BALANCE -100.00
WHERE CUS_CODE = ‘10010’;
COMMIT

7. Create a simple transaction log (using the format shown in Table 10.13) to represent the actions of the two
previous transactions.
Table P10.7 The ABC Markets Transaction Log
TRL TRX PREV NEXT BEFORE AFTER
ID NUM PTR PTR OPERATION TABLE ROW ID ATTRIBUTE VALUE VALUE
987 101 Null 1023 START * Start Trx.
1023 101 987 1026 INSERT INVOICE 10983 10983, 10010,
11-May-2012,
118.80, 30, OPEN
1026 101 1023 1029 INSERT LINE 10983, 1 10983, 1,
11QER/31, 1,
110.00
1029 101 1026 1031 UPDATE PRODUCT 11QER/31 P_QTYOH 47 46
1031 101 1029 1032 UPDATE CUSTOMER 10010 CUS_BALANCE 345.67 464.47
1032 101 1031 1034 UPDATE CUSTOMER 10010 CUS_DATELSTPUR 5-May-2010 11-May-2012
1034 101 1032 Null COMMIT * End Trx. *
1089 102 Null 1091 START * Start Trx.
1091 102 1089 1095 INSERT PAYMENT 3428 3428, 3-Jun-2012,
10010, 100.00,
CASH, None
1095 102 1091 1096 UPDATE CUSTOMER 10010 CUS_BALANCE 464.47 364.47
1096 102 1095 1097 UPDATE CUSTOMER 10010 CUS_DATELSTPMT 2-May-2010 3-Jun-2012
1097 102 1096 Null COMMIT * End Trx.

Note: Because we have not shown the table contents, the "before" values in the transaction can be assumed. The "after" value must be
computed using the assumed "before" value, plus or minus the transaction value. Also, in order to save some space, we have combined
the "after" values for the INSERT statements into a single cell. Actually, each value could be entered in individual rows.
Chapter 10 Exercises

8. Assuming that pessimistic locking is being used, but the two-phase locking protocol is not, create a
chronological list of the locking, unlocking, and data manipulation activities that would occur during
the complete processing of the transaction described in Problem 6a.

Time Action
1 Lock INVOICE
2 Insert row 10983 into INVOICE
3 Unlock INVOICE
4 Lock LINE
5 Insert into row 10983, 1 into LINE
6 Unlock LINE
7 Lock PRODUCT
8 Update PRODUCT 11QER/31, P_QTYOH from 47 to 46
9 Unlock PRODUCT
10 Lock CUSTOMER
11 Update CUSTOMER 10010, CUS_BALANCE from 345.67 to 464.47
12 Update CUSTOMER 10010, CUS_DATELSTPUR from 05-May-2010 to 11-May-2012
13 Unlock CUSTOMER

9. Assuming that pessimistic locking with the two-phase locking protocol is being used, create a
chronological list of the locking, unlocking, and data manipulation activities that would occur during
the complete processing of the transaction described in Problem 6a.

Time Action
1 Lock INVOICE
2 Lock LINE
3 Lock PRODUCT
4 Lock CUSTOMER
5 Insert row 10983 into INVOICE
6 Insert into row 10983, 1 into LINE
7 Update PRODUCT 11QER/31, P_QTYOH from 47 to 46
8 Update CUSTOMER 10010, CUS_BALANCE from 345.67 to 464.47
9 Update CUSTOMER 10010, CUS_DATELSTPUR from 05-May-2010 to 11-May-2012
10 Unlock INVOICE
11 Unlock LINE
12 Unlock PRODUCT
13 Unlock CUSTOMER
Chapter 10 Exercises
10. Assuming that pessimistic locking is being used, but the two-phase locking protocol is not, create a
chronological list of the locking, unlocking, and data manipulation activities that would occur during
the complete processing of the transaction described in Problem 6b.

Time Action
1 Lock PAYMENT
2 Insert row 3428 into PAYMENT
3 Unlock PAYMENT
4 Lock CUSTOMER
5 Update CUSTOMER 10010, CUS_BALANCE from 464.47 to 364.47
6 Update CUSTOMER 10010, CUS_DATELSTPMT from 02-May-2010 to 03-Jun-2012
7 Unlock CUSTOMER

11. Assuming that pessimistic locking with the two-phase locking protocol is being used, create a
chronological list of the locking, unlocking, and data manipulation activities that would occur during
the complete processing of the transaction described in Problem 6b.

Time Action
1 Lock PAYMENT
2 Lock CUSTOMER
3 Insert row 3428 into PAYMENT
4 Update CUSTOMER 10010, CUS_BALANCE from 464.47 to 364.47
5 Update CUSTOMER 10010, CUS_DATELSTPMT from 02-May-2010 to 03-Jun-2012
6 Unlock PAYMENT
7 Unlock CUSTOMER
Chapter 10 Exercises
Additional Problems and Answers
1. Write the SQL statements that might be used in transaction management and explain how they work.

The following transaction registers the credit sale of a product to a customer.

Comment
BEGIN TRANSACTION Start transaction

INSERT INTO INVOICE Add record to invoice


(INV_NUM, INV_DATE, ACCNUM, TOTAL)
VALUES (1020,’15-MAR-2012’,'60120010',3500);

UPDATE INVENTRY Update the quantity on hand of the


SET ON_HAND = ON_HAND – 100 product
WHERE PROD_CODE = '345TYX';

UPDATE ACCREC Update the customer balance


SET BALANCE = BALANCE + 3500 account
WHERE ACCNUM = '60120010';
COMMIT;

The credit sale transaction must do all of the following:


1. Create the invoice record.
2. Update the inventory data.
3. Update the customer account data.

In SQL, the transaction begins automatically with the first SQL statement, or the user can start with the
BEGIN TRANSACTION statement. The SQL transaction ends when
• the last SQL statement is found and/or the program ends
• the user cancels the transaction
• COMMIT or ROLLBACK statements are found

The DBMS will ensure that all SQL statements are executed and completed before committing all work. If,
for any reason, one or more of the SQL statements in the transaction cannot be completed, the entire
transaction is aborted and the database is rolled back to its previous consistent state.
Chapter 10 Exercises
2. Starting with a consistent database state, trace the activities that are required to execute a set of
transactions to produce an updated consistent database state.

The following example traces the execution of problem 1's credit sale transaction. We will assume that the
transaction is based on a currently consistent database state. We will also assume that the transaction is the
only transaction being executed by the DBMS.

Time Transaction Table Operation Comment


0 Database is in a consistent state.
1 Write INVOICE INV_NUM = 1020 INSERT Invoice number into the INVOICE
table
2 Read INVENTORY ON_HAND = 134
3 ON_HAND = 134 - 100 UPDATE the quantity on hand of product
345TYX
4 Write ON_HAND = 34
5 Read ACCREC ACC_BALANCE = 900
6 ACC_BALANCE = 900 + 3500
7 Write ACC_BALANCE = 4400
8 COMMIT Permanently saves all changes to the database.
The database is in a consistent state.

3. Trace the use of the transaction log in database recovery.

The following transaction log traces the database transaction explained in problem 1.

TRL TRX PREV NEXT BEFORE AFTER


ID NUM PTR PTR OPERATION TABLE ROW ID ATTRIBUTE VALUE VALUE
1 101 NULL 2 * Start TRX *
2 101 1 3 INSERT INVOICE 1020,
’10-Feb-2012’,
'60120010',
3500
3 101 2 4 UPDATE PRODUCT 345TYX PROD_ON_HAND 134 34
4 101 3 5 UPDATE ACCOUNT 60120010 ACCT_BALANCE 900 4,400
5 101 4 NULL COMMIT
* The TID (Transaction ID) is automatically assigned by the DBMS
The transaction log maintains a record of all database transactions that changed the database. For example,
the preceding transaction log records
• the insertion of a new row to the INVOICE table
• the update to the P_ON_HAND attribute for the row identified by '345TYX' in the PRODUCT table
• and the update of ACCT_BALANCE attribute for the row identified by '60120010' in the ACCOUNT
table.
The transaction log also records the transaction's beginning and end in order to help the DBMS to determine
the operations that must be rolled back if the transaction is aborted. Note: Only the current transaction may
be rolled back, not all the previous transactions.

If the database must be recovered, the DBMS will:


• Change the BALANCE attribute of the row '60120010' from 4400 to 900 in the ACCREC table.
• Change the ON_HAND attribute of the row '345TYX' from 34 to 134 in the INVENTORY table.
• Delete row 1020 of the INVOICE table.

You might also like