Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 46 additions & 44 deletions SQL/schema.sql
Original file line number Diff line number Diff line change
@@ -1,74 +1,76 @@
-- Exported from QuickDBD: https://www.quickdatabasediagrams.com/
-- Exported from QuickDBD: https://www.quickdatabasediagrams.com/
-- Link to schema: https://app.quickdatabasediagrams.com/#/d/s8Wnqm
-- NOTE! If you have used non-SQL datatypes in your design, you will have to change these here.

--Card Holder
-- Card Holder Table

CREATE TABLE "card_holder" (
"id" SERIAL NOT NULL,
"name" VARCHAR(50) NOT NULL,
CONSTRAINT "pk_card_holder" PRIMARY KEY (
"id"
)
"id" SERIAL NOT NULL,
"name" VARCHAR(50) NOT NULL,
CONSTRAINT "pk_card_holder" PRIMARY KEY ("id")
);

-- Credit Card
-- Credit Card Table

CREATE TABLE "credit_card" (
"card" VARCHAR(20) NOT NULL,
"id_card_holder" INT NOT NULL,
CONSTRAINT "pk_credit_card" PRIMARY KEY (
"card"
)
"card" VARCHAR(20) NOT NULL,
"id_card_holder" INT NOT NULL,
CONSTRAINT "pk_credit_card" PRIMARY KEY ("card")
);

-- Merchant
-- Merchant Table

CREATE TABLE "merchant" (
"id" SERIAL NOT NULL,
"name" VARCHAR(255) NOT NULL,
"id_merchant_category" INT NOT NULL,
CONSTRAINT "pk_merchant" PRIMARY KEY (
"id"
)
"id" SERIAL NOT NULL,
"name" VARCHAR(255) NOT NULL,
"id_merchant_category" INT NOT NULL,
CONSTRAINT "pk_merchant" PRIMARY KEY ("id")
);

-- Merchant Category
-- Merchant Category Table

CREATE TABLE "merchant_category" (
"id" SERIAL NOT NULL,
"name" VARCHAR(50) NOT NULL,
CONSTRAINT "pk_merchant_category" PRIMARY KEY (
"id"
)
"id" SERIAL NOT NULL,
"name" VARCHAR(50) NOT NULL,
CONSTRAINT "pk_merchant_category" PRIMARY KEY ("id")
);

-- Transaction
-- Transaction Table

CREATE TABLE "transaction" (
"id" INT NOT NULL,
"date" TIMESTAMP NOT NULL,
"amount" FLOAT NOT NULL,
"card" VARCHAR(20) NOT NULL,
"id_merchant" INT NOT NULL,
CONSTRAINT "pk_transaction" PRIMARY KEY (
"id"
)
"id" INT NOT NULL,
"date" TIMESTAMP NOT NULL,
"amount" FLOAT NOT NULL,
"card" VARCHAR(20) NOT NULL,
"id_merchant" INT NOT NULL,
CONSTRAINT "pk_transaction" PRIMARY KEY ("id")
);


ALTER TABLE "credit_card" ADD CONSTRAINT "fk_credit_card_id_card_holder" FOREIGN KEY("id_card_holder")
-- Add Foreign Key Constraint to Credit Card Table
ALTER TABLE "credit_card"
ADD CONSTRAINT "fk_credit_card_id_card_holder"
FOREIGN KEY("id_card_holder")
REFERENCES "card_holder" ("id");

ALTER TABLE "credit_card" ADD CONSTRAINT "check_credit_card_length" CHECK (char_length("card") <= 20);

--ALTER TABLE "credit_card" DROP CONSTRAINT check_credit_card_length
-- Add Check Constraint to Credit Card Table for Card Length
ALTER TABLE "credit_card"
ADD CONSTRAINT "check_credit_card_length"
CHECK (char_length("card") <= 20);

ALTER TABLE "merchant" ADD CONSTRAINT "fk_merchant_id_merchant_category" FOREIGN KEY("id_merchant_category")
-- Add Foreign Key Constraint to Merchant Table
ALTER TABLE "merchant"
ADD CONSTRAINT "fk_merchant_id_merchant_category"
FOREIGN KEY("id_merchant_category")
REFERENCES "merchant_category" ("id");

ALTER TABLE "transaction" ADD CONSTRAINT "fk_transaction_card" FOREIGN KEY("card")
-- Add Foreign Key Constraint to Transaction Table for Card
ALTER TABLE "transaction"
ADD CONSTRAINT "fk_transaction_card"
FOREIGN KEY("card")
REFERENCES "credit_card" ("card");

ALTER TABLE "transaction" ADD CONSTRAINT "fk_transaction_id_merchant" FOREIGN KEY("id_merchant")
REFERENCES "merchant" ("id");
-- Add Foreign Key Constraint to Transaction Table for Merchant
ALTER TABLE "transaction"
ADD CONSTRAINT "fk_transaction_id_merchant"
FOREIGN KEY("id_merchant")
REFERENCES "merchant" ("id");