-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDDL.sql
112 lines (101 loc) · 2.8 KB
/
DDL.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
create table users
(username varchar(20),
password varchar(20) check (length(password) >= 8),
name varchar(20) not null,
email_id varchar(20) not null,
primary key (username)
);
create table documents
(doc_id integer check (doc_id >= 0),
doc_name varchar(20) not null,
created_on timestamp,
created_by varchar(20),
primary key (doc_id),
foreign key (created_by) references users
on delete cascade
);
create table sheets
(sheet_id integer check (sheet_id >= 0),
sheet_name varchar(20) not null,
total_columns integer check (total_columns > 0),
total_rows integer check (total_rows > 0),
sheet_last_modified timestamp,
sheet_created_on timestamp,
primary key (sheet_id)
);
create table cell
(cell_id integer check (cell_id >= 0),
cell_x integer not null,
cell_y integer not null,
cell_color varchar(20),
primary key (cell_id)
);
create table data_object
(data_id integer check(data_id >= 0),
data_size integer check(data_size >= 0),
data_type varchar(20) check(data_type in ('image','text','video')),
primary key (data_id)
);
create table image
(data_id integer,
image_data oid,
image_title varchar(20),
primary key (data_id),
foreign key (data_id) references data_object
on delete cascade
);
create table text
(data_id integer,
text_data varchar(1000),
text_font varchar(20),
font_size integer check(font_size > 0),
text_color varchar(20),
primary key (data_id),
foreign key (data_id) references data_object
on delete cascade
);
create table video
(data_id integer,
video_data oid,
video_title varchar(20),
primary key (data_id),
foreign key (data_id) references data_object
on delete cascade
);
create table ownership
(username varchar(20),
doc_id integer check(doc_id >= 0),
rights varchar(20) check(rights in ('read','admin','edit')),
primary key (username,doc_id),
foreign key (username) references users
on delete cascade,
foreign key (doc_id) references documents
on delete cascade
);
create table contained_in
(doc_id integer check(doc_id >= 0),
sheet_id integer check(sheet_id >= 0),
primary key (sheet_id,doc_id),
foreign key (sheet_id) references sheets
on delete cascade,
foreign key (doc_id) references documents
on delete cascade
);
create table is_in
(cell_id integer check(cell_id >= 0),
sheet_id integer check(sheet_id >= 0),
primary key (sheet_id,cell_id),
foreign key (sheet_id) references sheets
on delete cascade,
foreign key (cell_id) references cell
on delete cascade
);
create table has
(data_id integer check(data_id >= 0),
cell_id integer check(cell_id >= 0),
primary key (cell_id,data_id),
foreign key (cell_id) references cell
on delete cascade,
foreign key (data_id) references data_object
on delete cascade
);