121 lines
5.1 KiB
SQL
121 lines
5.1 KiB
SQL
create database if not exists testfk;
|
|
drop table if exists testfk.fkdifferentdb;
|
|
|
|
use test;
|
|
# drop tables in proper order to avoid foreign key constraint violations
|
|
drop table if exists lineitem;
|
|
drop table if exists shoppingcart;
|
|
drop table if exists customerdiscount;
|
|
drop table if exists customer;
|
|
drop table if exists item;
|
|
drop table if exists discount;
|
|
|
|
# Customer has a oneToZeroOrOne relationship to ShoppingCart
|
|
# Customer has a manyToMany relationship to Discount via table customerdiscount
|
|
create table customer (
|
|
id int not null,
|
|
firstname varchar(32),
|
|
lastname varchar(32),
|
|
primary key(id)
|
|
);
|
|
|
|
# ShoppingCart has a oneToOne relationship to Customer
|
|
# ShoppingCart has a oneToMany relationship to LineItem
|
|
create table shoppingcart (
|
|
id int not null,
|
|
customerid int not null,
|
|
created datetime not null default now(),
|
|
foreign key fkcustomerid(customerid) references customer(id),
|
|
primary key(id)
|
|
);
|
|
|
|
# Item has a oneToMany relationship to LineItem
|
|
create table item(
|
|
id int not null,
|
|
description varchar(99),
|
|
primary key(id)
|
|
);
|
|
|
|
# LineItem has a manyToOne relationship to ShoppingCart
|
|
# LineItem has a manyToOne relationship to Item
|
|
create table lineitem (
|
|
line int not null,
|
|
shoppingcartid int not null,
|
|
quantity int not null,
|
|
itemid int not null,
|
|
primary key(shoppingcartid, line),
|
|
foreign key fkitemid(itemid) references item(id),
|
|
foreign key fkshoppingcartid(shoppingcartid) references shoppingcart(id)
|
|
);
|
|
|
|
# Discount has a manyToMany relationship to Customer via table customerdiscount
|
|
create table discount(
|
|
id int not null,
|
|
description varchar(32) not null,
|
|
percent int not null,
|
|
primary key(id)
|
|
);
|
|
|
|
# customerdiscount is a simple join table
|
|
create table customerdiscount(
|
|
customerid int not null,
|
|
discountid int not null,
|
|
foreign key fkcustomerid(customerid) references customer(id),
|
|
foreign key fkdiscountid(discountid) references discount(id),
|
|
primary key (customerid, discountid)
|
|
);
|
|
|
|
insert into customer(id, firstname, lastname) values (100, 'Craig', 'Walton');
|
|
insert into customer(id, firstname, lastname) values (101, 'Sam', 'Burton');
|
|
insert into customer(id, firstname, lastname) values (102, 'Wal', 'Greeton');
|
|
insert into customer(id, firstname, lastname) values (103, 'Burn', 'Sexton');
|
|
|
|
insert into shoppingcart(id, customerid) values(1000, 100);
|
|
insert into shoppingcart(id, customerid) values(1002, 102);
|
|
insert into shoppingcart(id, customerid) values(1003, 103);
|
|
|
|
insert into item(id, description) values(10000, 'toothpaste');
|
|
insert into item(id, description) values(10001, 'razor blade 10 pack');
|
|
insert into item(id, description) values(10002, 'deodorant');
|
|
insert into item(id, description) values(10003, 'hatchet');
|
|
insert into item(id, description) values(10004, 'weed-b-gon');
|
|
insert into item(id, description) values(10005, 'cola 24 pack');
|
|
insert into item(id, description) values(10006, 'diet cola 24 pack');
|
|
insert into item(id, description) values(10007, 'diet root beer 12 pack');
|
|
insert into item(id, description) values(10008, 'whole wheat bread');
|
|
insert into item(id, description) values(10009, 'raisin bran');
|
|
insert into item(id, description) values(10010, 'milk gallon');
|
|
insert into item(id, description) values(10011, 'half and half');
|
|
insert into item(id, description) values(10012, 'tongue depressor');
|
|
insert into item(id, description) values(10013, 'smelling salt');
|
|
insert into item(id, description) values(10014, 'holy bible');
|
|
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(0, 1000, 1, 10000);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(1, 1000, 5, 10014);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(2, 1000, 2, 10011);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(0, 1002, 10, 10008);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(1, 1002, 4, 10010);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(2, 1002, 40, 10002);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(3, 1002, 100, 10011);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(4, 1002, 1, 10013);
|
|
insert into lineitem(line, shoppingcartid, quantity, itemid) values(5, 1002, 8, 10005);
|
|
|
|
insert into discount(id, description, percent) values(0, 'new customer', 10);
|
|
insert into discount(id, description, percent) values(1, 'good customer', 15);
|
|
insert into discount(id, description, percent) values(2, 'spring sale', 10);
|
|
insert into discount(id, description, percent) values(3, 'internet special', 20);
|
|
insert into discount(id, description, percent) values(4, 'closeout', 50);
|
|
|
|
insert into customerdiscount(customerid, discountid) values(100, 0);
|
|
insert into customerdiscount(customerid, discountid) values(101, 1);
|
|
insert into customerdiscount(customerid, discountid) values(101, 3);
|
|
insert into customerdiscount(customerid, discountid) values(101, 4);
|
|
insert into customerdiscount(customerid, discountid) values(102, 2);
|
|
insert into customerdiscount(customerid, discountid) values(103, 3);
|
|
|
|
create table testfk.fkdifferentdb (
|
|
id int not null primary key,
|
|
foreign key fkcustomerid(id) references test.customer(id)
|
|
);
|
|
|