86 lines
3 KiB
SQL
86 lines
3 KiB
SQL
CREATE TABLE Organisations (
|
|
OrganisationalId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
Name TEXT NOT NULL COLLATE nocase,
|
|
FullAddress TEXT NOT NULL COLLATE nocase,
|
|
PostCode TEXT NOT NULL COLLATE nocase
|
|
);
|
|
|
|
CREATE TABLE AgeRanges (
|
|
AgeRangeId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
AgeRangeString TEXT NOT NULL UNIQUE
|
|
);
|
|
|
|
INSERT INTO AgeRanges (AgeRangeString) VALUES ('20-35');
|
|
INSERT INTO AgeRanges (AgeRangeString) VALUES ('35-50');
|
|
INSERT INTO AgeRanges (AgeRangeString) VALUES ('50+');
|
|
|
|
CREATE TABLE Customers (
|
|
CustomerId INTEGER PRIMARY KEY UNIQUE NOT NULL,
|
|
UserName TEXT NOT NULL UNIQUE,
|
|
AgeRange_FK INTEGER NOT NULL,
|
|
PostCode TEXT NOT NULL,
|
|
FOREIGN KEY (AgeRange_FK) REFERENCES AgeRanges (AgeRangeId)
|
|
);
|
|
|
|
CREATE TABLE Users (
|
|
UserId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
CustomerId_FK INTEGER UNIQUE,
|
|
OrganisationalId_FK INTEGER UNIQUE,
|
|
Email TEXT NOT NULL UNIQUE,
|
|
JoinDate INTEGER NOT NULL,
|
|
HashedPassword TEXT NOT NULL,
|
|
FOREIGN KEY (CustomerId_FK) REFERENCES Customers (CustomerId),
|
|
FOREIGN KEY (OrganisationalId_FK) REFERENCES Organisations (OrganisationalId),
|
|
CHECK ((CustomerId_FK NOTNULL AND OrganisationalId_FK ISNULL) OR (CustomerId_FK ISNULL AND OrganisationalId_FK NOTNULL))
|
|
);
|
|
|
|
CREATE TABLE Transactions (
|
|
TransactionId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
BuyerUserId_FK INTEGER NOT NULL,
|
|
SellerOrganisationId_FK INTEGER NOT NULL,
|
|
ValueMicroCurrency INTEGER NOT NULL,
|
|
ProofImage TEXT NOT NULL UNIQUE,
|
|
TimeDateSubmitted INTEGER NOT NULL,
|
|
FOREIGN KEY (BuyerUserId_FK) REFERENCES Users (UserId),
|
|
FOREIGN KEY (SellerOrganisationId_FK) REFERENCES Organisations (OrganisationalId)
|
|
);
|
|
|
|
CREATE TABLE AccountTokens (
|
|
AccountTokenId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
AccountTokenName TEXT UNIQUE NOT NULL,
|
|
Used INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
|
|
CREATE TABLE SessionTokens (
|
|
SessionTokenId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
SessionTokenName TEXT UNIQUE NOT NULL,
|
|
UserIdAssignedTo_FK INTEGER NOT NULL,
|
|
ExpireDateTime INTEGER NOT NULL,
|
|
FOREIGN KEY (UserIdAssignedTo_FK) REFERENCES Users (UserId)
|
|
);
|
|
|
|
CREATE TABLE PendingOrganisations (
|
|
PendingOrganisationId INTEGER PRIMARY KEY UNIQUE NOT NULL,
|
|
UserSubmitted_FK INTEGER NOT NULL,
|
|
TimeDateSubmitted INTEGER NOT NULL,
|
|
Name TEXT NOT NULL COLLATE nocase,
|
|
FullAddress TEXT COLLATE nocase,
|
|
Postcode TEXT COLLATE nocase,
|
|
FOREIGN KEY (UserSubmitted_FK) REFERENCES Users (UserId)
|
|
);
|
|
|
|
CREATE TABLE PendingTransactions (
|
|
PendingTransactionId INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
|
|
BuyerUserId_FK INTEGER NOT NULL,
|
|
PendingSellerOrganisationId_FK INTEGER NOT NULL,
|
|
ValueMicroCurrency INTEGER NOT NULL,
|
|
ProofImage TEXT NOT NULL UNIQUE,
|
|
TimeDateSubmitted INTEGER NOT NULL,
|
|
FOREIGN KEY (BuyerUserId_FK) REFERENCES Users (UserId),
|
|
FOREIGN KEY (PendingSellerOrganisationId_FK) REFERENCES PendingOrganisations (PendingOrganisationId)
|
|
);
|
|
|
|
CREATE TABLE Administrators (
|
|
UserId INTEGER PRIMARY KEY UNIQUE NOT NULL,
|
|
FOREIGN KEY (UserId) REFERENCES Users (UserId)
|
|
)
|