-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTableDefinitions.sql
77 lines (67 loc) · 2.31 KB
/
TableDefinitions.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
CREATE TABLE Person (
username VARCHAR(32),
password VARCHAR(64),
firstName VARCHAR(32),
lastName VARCHAR(32),
email VARCHAR(32),
PRIMARY KEY (username)
);
CREATE TABLE Photo (
pID INT AUTO_INCREMENT,
posterUsername VARCHAR(32),
postingDate DATETIME,
allFollowers BOOLEAN,
caption VARCHAR(1000),
PRIMARY KEY (pID),
FOREIGN KEY (posterUsername) REFERENCES Person (username)
);
CREATE TABLE FriendGroup (
groupName VARCHAR(32),
creatorUsername VARCHAR(32),
description VARCHAR(1000),
PRIMARY KEY (groupName, creatorUsername),
FOREIGN KEY (creatorUsername) REFERENCES Person (username)
);
CREATE TABLE Reaction (
pID INT,
reactorUsername VARCHAR(32),
reactionTime DATETIME,
comment VARCHAR(1000),
emoji BLOB(32),
PRIMARY KEY (username, pID),
FOREIGN KEY (pID) REFERENCES Photo (pID),
FOREIGN KEY (reactorUsername) REFERENCES Person (username)
);
CREATE TABLE Tag (
pID INT,
taggedUsername VARCHAR(32),
tagStatus BOOLEAN,
PRIMARY KEY (pID, username),
FOREIGN KEY (pID) REFERENCES Photo (pID),
FOREIGN KEY (taggedUsername) REFERENCES Person (username)
);
CREATE TABLE Share (
pID INT,
groupName VARCHAR(32),
creatorUsername VARCHAR(32),
PRIMARY KEY (pID, groupName, creatorUsername),
FOREIGN KEY (groupName, creatorUsername) REFERENCES FriendGroup(groupName, creatorUsername),
FOREIGN KEY (pID) REFERENCES Photo (pID)
);
CREATE TABLE GroupMember (
memberUsername VARCHAR(32),
groupName VARCHAR(32),
creatorUsername VARCHAR(32),
PRIMARY KEY (memberUsername, groupName, creatorUsername),
FOREIGN KEY (memberUsername) REFERENCES Person (username),
FOREIGN KEY (groupName, creatorUsername) REFERENCES FriendGroup (groupName, creatorUsername)
);
CREATE TABLE Follow (
followerUsername VARCHAR(32),
followeeUsername VARCHAR(32),
followStatus BOOLEAN,
PRIMARY KEY (followerUsername, followeeUsername),
FOREIGN KEY (followerUsername) REFERENCES Person (username),
FOREIGN KEY (followeeUsername) REFERENCES Person (username)
);