“cash” for cash payments.

ABC Markets sell products to customers. The relational diagram shown in the attached Figure (see Student Instructions) represents the main entities for ABC’s database. 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 the 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.
Using this database, write the SQL code to represent each of the following transactions. Use BEGIN TRANSACTION and COMMIT to group the SQL statements in logical transactions.
On May 11, 2018, 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.
On June 3, 2018, customer 10010 makes a payment of $100 in cash. The payment ID is 3428.
Create a simple transaction log (using the format shown in the attached figure) to represent the actions of the transactions in Problems 1a and 2b.
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 1a.
Assuming that pessimistic locking is being used with the two-phase locking protocol, 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 1a.
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 1b.
Assuming that pessimistic locking with the two-phase locking protocol is being used with row-level lock granularity, 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 1b.

📌 Struggling with where to start this assignment? Follow this guide to tackle your analytical report easily!

Here’s the SQL code to handle the given transactions along with the required transaction log and locking activities.


1️⃣ SQL Code for Transactions

(a) Credit Purchase on May 11, 2018 by Customer 10010

sql
BEGIN TRANSACTION;

-- Insert invoice for customer 10010
INSERT INTO INVOICE (INV_NUMBER, CUS_CODE, INV_DATE, INV_TOTAL, INV_TERMS, INV_STATUS)
VALUES (10983, 10010, '2018-05-11', 110.00 * 1.08, '30', 'OPEN');

-- Insert invoice line for product 11QER/31
INSERT INTO INVOICE_LINE (INV_NUMBER, P_CODE, LINE_UNITS, LINE_PRICE)
VALUES (10983, '11QER/31', 1, 110.00);

-- Update customer's balance (credit purchase)
UPDATE CUSTOMER
SET CUS_BALANCE = CUS_BALANCE + (110.00 * 1.08),
CUS_LAST_PURCHASE = '2018-05-11'
WHERE CUS_CODE = 10010;

-- Update product quantity on hand
UPDATE PRODUCT
SET P_QTYOH = P_QTYOH - 1
WHERE P_CODE = '11QER/31';

COMMIT;


(b) Cash Payment on June 3, 2018 by Customer 10010

sql
BEGIN TRANSACTION;

-- Insert payment record for customer 10010
INSERT INTO PAYMENT (PMT_ID, CUS_CODE, PMT_DATE, PMT_AMOUNT, PMT_TYPE)
VALUES (3428, 10010, '2018-06-03', 100.00, 'CASH');

-- Update customer's balance (decrease by payment amount)
UPDATE CUSTOMER
SET CUS_BALANCE = CUS_BALANCE - 100.00,
CUS_LAST_PAYMENT = '2018-06-03'
WHERE CUS_CODE = 10010;

COMMIT;


2️⃣ Transaction Log

Transaction ID Action Table Row/Column Affected Old Value New Value
1 Insert INVOICE INV_NUMBER=10983 NULL 10983
1 Insert INVOICE_LINE INV_NUMBER=10983, P_CODE=’11QER/31′ NULL 1 unit at $110
1 Update CUSTOMER CUS_BALANCE (10010) Previous Value +$118.80
1 Update CUSTOMER CUS_LAST_PURCHASE (10010) Previous Date 2018-05-11
1 Update PRODUCT P_QTYOH (11QER/31) Previous Value -1
1 Commit
2 Insert PAYMENT PMT_ID=3428 NULL 3428
2 Update CUSTOMER CUS_BALANCE (10010) Previous Value -$100.00
2 Update CUSTOMER CUS_LAST_PAYMENT (10010) Previous Date 2018-06-03
2 Commit

3️⃣ Locking Activities Without Two-Phase Locking Protocol (1a)

  1. Lock acquired on CUSTOMER table → Read balance
  2. Lock acquired on INVOICE table → Insert new invoice
  3. Lock acquired on INVOICE_LINE table → Insert invoice line
  4. Lock acquired on CUSTOMER table → Update balance & last purchase date
  5. Lock acquired on PRODUCT table → Update product quantity
  6. Unlock PRODUCT table
  7. Unlock CUSTOMER table
  8. Unlock INVOICE table
  9. Unlock INVOICE_LINE table
  10. Commit Transaction

4️⃣ Locking Activities With Two-Phase Locking Protocol (1a)

  1. Lock acquired on CUSTOMER table → Read balance
  2. Lock acquired on INVOICE table → Insert new invoice
  3. Lock acquired on INVOICE_LINE table → Insert invoice line
  4. Lock acquired on CUSTOMER table → Update balance & last purchase date
  5. Lock acquired on PRODUCT table → Update product quantity
  6. Commit Transaction
  7. Unlock all locks simultaneously

5️⃣ Locking Activities Without Two-Phase Locking Protocol (1b)

  1. Lock acquired on PAYMENT table → Insert payment
  2. Lock acquired on CUSTOMER table → Update balance & last payment date
  3. Unlock PAYMENT table
  4. Unlock CUSTOMER table
  5. Commit Transaction

6️⃣ Locking Activities With Two-Phase Locking Protocol (1b)

  1. Lock acquired on PAYMENT table → Insert payment
  2. Lock acquired on CUSTOMER table → Update balance & last payment date
  3. Commit Transaction
  4. Unlock all locks simultaneously

This covers all SQL transactions, transaction logs, and locking scenarios! 🚀

Place this order or similar order and get an amazing discount. USE Discount code “GET20” for 20% discount