-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path01_Db_Create.sql.sql
90 lines (74 loc) · 2.48 KB
/
01_Db_Create.sql.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
78
79
80
81
82
83
84
85
86
87
88
89
90
Use [master]
IF db_id('GroSharies') IS NULL
CREATE DATABASE [GroSharies]
GO
USE [GroSharies]
GO
DROP TABLE IF EXISTS [ListItem];
DROP TABLE IF EXISTS [Purchase];
DROP TABLE IF EXISTS [ShoppingList];
DROP TABLE IF EXISTS [HouseholdUser];
DROP TABLE IF EXISTS [Household];
DROP TABLE IF EXISTS [UserType];
DROP TABLE IF EXISTS [User];
GO
CREATE TABLE [Household] (
[Id] integer PRIMARY KEY IDENTITY,
[Name] nvarchar(50) NOT NULL
)
GO
CREATE TABLE [User] (
[Id] integer PRIMARY KEY IDENTITY,
[FirebaseId] nvarchar(28) NOT NULL,
[Email] nvarchar(50) NOT NULL,
[FirstName] nvarchar(50) NOT NULL,
[LastName] nvarchar(50) NOT NULL,
CONSTRAINT UQ_FirebaseId UNIQUE(FirebaseId)
)
GO
CREATE TABLE [UserType] (
[Id] integer PRIMARY KEY IDENTITY,
[Name] nvarchar(50) NOT NULL
)
GO
CREATE TABLE [ShoppingList] (
[Id] integer PRIMARY KEY IDENTITY,
[HouseholdId] integer NOT NULL,
[Name] nvarchar(50) NOT NULL,
[DateCreated] datetime NOT NULL,
CONSTRAINT [FK_ShoppingList_Household] FOREIGN KEY ([HouseholdId]) REFERENCES [Household] ([Id]) ON DELETE CASCADE
)
GO
CREATE TABLE [Purchase] (
[Id] integer PRIMARY KEY IDENTITY,
[ShoppingListId] integer NOT NULL,
[UserId] integer NOT NULL,
[Vendor] nvarchar(50) NOT NULL,
[PurchaseDate] datetime NOT NULL,
[TotalCost] decimal (18,2) NOT NULL,
CONSTRAINT [FK_Purchase_ShoppingList] FOREIGN KEY ([ShoppingListId]) REFERENCES [ShoppingList] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_Purchase_User] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id]) ON DELETE CASCADE
)
GO
CREATE TABLE [ListItem] (
[Id] integer PRIMARY KEY IDENTITY,
[ShoppingListId] integer NOT NULL,
[Name] nvarchar(50) NOT NULL,
[IsChecked] bit NOT NULL DEFAULT 0,
CONSTRAINT [FK_ListItem_ShoppingList] FOREIGN KEY ([ShoppingListId]) REFERENCES [ShoppingList] ([Id]) ON DELETE CASCADE
)
GO
CREATE TABLE [HouseholdUser] (
[Id] integer PRIMARY KEY IDENTITY,
[HouseholdId] integer NOT NULL,
[UserId] integer NOT NULL,
[UserTypeId] integer NOT NULL,
[IsAccepted] bit NOT NULL DEFAULT 0,
CONSTRAINT [FK_HouseholdUser_Household] FOREIGN KEY ([HouseholdId]) REFERENCES [Household] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_HouseholdUser_User] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_HouseholdUser_UserType] FOREIGN KEY ([UserTypeId]) REFERENCES [UserType] ([Id])
)
GO
INSERT INTO UserType ([Name]) VALUES ('Admin');
INSERT INTO UserType ([Name]) VALUES ('Member');
INSERT INTO UserType ([Name]) VALUES ('Invited');