# Compsci-345
## Class 7: ER Diagrams and Models
### Step 1:
See notes on iPad
### Step 2:
```sql
CREATE TABLE B (
c INTEGER PRIMARY KEY,
d INTEGER
)
CREATE TABLE A (
a INTEGER,
b INTEGER,
c INTEGER,
PRIMARY KEY (a, c),
FOREIGN KEY (c) REFERENCES B (c)
)
CREATE TABLE D (
g INTEGER PRIMARY KEY,
h INTEGER
)
CREATE TABLE C (
a INTEGER,
c INTEGER,
e INTEGER,
PRIMARY KEY (a, c),
FOREIGN KEY (a) REFERENCES A (a)
)
CREATE TABLE S (
f INTEGER,
a INTEGER,
c INTEGER,
g INTEGER,
PRIMARY KEY (a, c, g),
FOREIGN KEY (a, c) REFERENCES C (a, c),
FOREIGN KEY (g) REFERENCES D (g)
)
```
### Step 3:
Part 1:
- PRIMARY KEY:
- Single = TRUE
- Multiple = TRUE
- FOREIGN KEY:
- Single = TRUE
- Multiple = TRUE
- UNIQUE:
- Single = TRUE
- Multiple = TRUE
Part 2:
- PRIMARY KEY: FALSE
- FOREIGN KEY: TRUE
- UNIQUE: TRUE
Part 3:
- PRIMARY KEY: FALSE
- FOREIGN KEY: TRUE
- UNIQUE: FALSE
Part 4:
- PRIMARY KEY: FALSE
- FOREIGN KEY: TRUE
- UNIQUE: TRUE
Part 5:
- PRIMARY KEY: TRUE
- FOREIGN KEY: TRUE
- UNIQUE: TRUE
### Step 4:
Part 1:
```sql
CREATE TABLE Product (
pid INT PRIMARY KEY,
name VARCHAR(20)
)
CREATE TABLE Inventory (
pid INT PRIMARY KEY REFERENCES Product (pid), -- Part 1
quantity INT CHECK (quantity > 0) -- Part 2
)
CREATE TABLE Supplier (
sid INT PRIMARY KEY,
name VARCHAR(20),
address VARCHAR(50)
)
CREATE TABLE Supplies (
sid INT REFERENCES Supplier (sid) ON DELETE CASCADE, -- Part 1, Part 3
pid INT REFERENCES Product (pid), -- Part 1
PRIMARY KEY (sid, pid)
)
CREATE TABLE PurchaseOrder (
pid INT REFERENCES Product (pid), -- Part 1
quantity INT
)
```