Diketahui skema basisdata relasional sebuah toko online sbb.

Customer = (CustomerID, Name, Address, CreditCardNo, Email, Rating, Discount)

Product = (ProductID, Name, Brand, UnitPrice)

ShoppingCart = (CartID, CustomerID, Date, TotalPrice)

DetailShoppingCart = (CartID, ProductID, NbOfProduct)

Yang dicetak tebal adalah primary key dari tabel yang bersangkutan.

Untuk aturan bisnis di bawah ini:

  1. Sebutkan klasifikasi skema constraint: type, attribute, relation, atau database constraint.
  2. Sebutkan teknik yang paling sesuai digunakan untuk menjaga integritas data dan berikan penjelasan. Penjelasan minimum yang harus diberikan ada di keterangan di dalam tanda kurung di sebelah pilihan teknik. Satu persoalan dapat membutuhkan lebih dari satu teknik.

Berikut beberapa pilihan teknik yang dapat digunakan:

  • Mendefinisikan tipe atribut (sebutkan tipe yang digunakan pada atribut apa di tabel apa).
  • Not null constraint (sebutkan atribut mana yang harus diberikan not null constraint).
  • Unique constraint (sebutkan atribut dari tabel mana yang harus diberikan unique constraint).
  • Check constraint (sebutkan ekspresi constraint yang harus dipenuhi).
  • Foreign key references (sebutkan tabel dan atribut mana yang me-refer dan ke atribut dan tabel mana reference-nya).
  • Trigger (tuliskan trigger yang harus dibuat, gunakan cara penulisan trigger seperti yang ada di slide kuliah).

Anda boleh menambahkan pembuatan function/stored procedure untuk mendukung teknik yang Anda pilih. Jika Anda pakai, tuliskan spesifikasi dan kode program function/procedure tersebut (menggunakan cara penulisan seperti pada slide kuliah).

Aturan bisnis:

Atribut UnitPrice dari tabel Product bertype POSINTEGER. Type POSINTEGER terdiri atas nilai integer > 0.

  1. Type POSINTEGER terdiri atas nilai integer > 0.**
    1. Klasifikasi type constrain
    2. Teknik menjaga integritas data : mendefinisikan type POSINTEGER = Integer >0
  2. Atribut UnitPrice dari tabel Product bertype POSINTEGER
    1. Klasifikasi Atribute
    2. Teknik menjaga integritas data : type POSINTEGER digunakan di atribut Unitprice di table Product

Aturan bisnis:

Atribut Name di tabel Product harus unik dan tidak boleh null.

  1. Kelasifikasi relation
  2. Name di tabel product diberikan Not null constraint dan unique constraint

Pada tabel Customer, jika Rating bernilai >= 4, maka Discount bernilai 20% dan jika tidak (Rating < 4), maka Discount bernilai 10%. Rating tidak boleh null.

  1. klasifikasi relation constrain
  2. Teknik menjaga integritas data : check constrain pada tabels customer
    1. (Rating >= 4 and Discount = 0.2 ) or (Rating < 4 and discount 0.1)

CustomerID pada tabel ShoppingCart merupakan salah satu dari CustomerID di tabel Customer. Jika ada data Customer akan dihapus, sedangkan CustomerID-nya merupakan salah satu CustomerID di tabel ShoppingCart, maka data Customer tersebut tidak bisa dihapus.

  1. Klasifikasi constraint: database constraint
  2. Teknik menjaga integritas data:
    • Menerapkan foreign key reference dari atribut CustomerID di tabel ShoppingCart ke atribut CustomerID pada tabel Customer dan_
    • Menerapkan referential action restrict untuk operasi delete pada foreign key tersebut (on delete restrict)

Nilai atribut TotalPrice pada tabel ShoppingCart harus sesuai dengan total penjumlahan harga semua Product untuk IDCart yang bersesuaian di tabel DetailShoppingCart, yaitu penjumlahan dari DetailShopping.NbOfProduct * Product.UnitPrice untuk Product yang sesuai dengan DetailShoppingCart.ProductID.

  1. Klasifikasi constraint: database constraint
  2. Teknik menjaga integritas data:
    1. Menerapkan Trigger untuk meng-update nilai atribut total price pada tabel shopingcart secara otomatis setiap kali terjadi operasi