egroupware_official/doc/create_tables.orasql

417 lines
9.7 KiB
Plaintext
Executable File

------------------------------------------------------------------------------
-- Create_Tables Script for Oracle --
-- not yet completed and not yet fully working. The trigger functions still --
-- need to be built and I couldn't figure out yet how to do this... --
------------------------------------------------------------------------------
-- $Id$
------------------
-- APPLICATIONS --
------------------
connect system/system;
CREATE TABLESPACE phpgw
DATAFILE 'diskb:tablespace_phpgw.dat' SIZE 500K REUSE
AUTOEXTEND ON NEXT 500K MAXSIZE 10M;
CREATE USER phpgw IDENTIFIED BY phpgw
DEFAULT TABLESPACE phpgw
QUOTA 10M ON phpgw;
GRANT connect TO phpgw;
GRANT dba TO phpgw;
connect phpgw/phpgw;
CREATE TABLE applications (
app_name varchar2(25) NOT NULL,
app_title varchar2(50),
app_enabled number
app_order int,
app_tables varchar2(255),
);
create unique index applications_app_name
on applications (app_name);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('admin', 'Administration', 1, 1, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('tts', 'Trouble Ticket System', 0, 2, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('inv', 'Inventory', 0, 3, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('chat', 'Chat', 0, 4, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('headlines', 'Headlines', 0, 5, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('filemanager', 'File manager', 1, 6, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('addressbook', 'Address Book', 1, 7, 'addressbook');
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('todo', 'ToDo List', 1, 8, 'todo');
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('calendar', 'Calendar', 1, 9, 'webcal_entry,webcal_entry_users,webcal_entry_groups,webcal_repeats');
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('email', 'Email', 1, 10,NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('nntp', 'NNTP', 1, 11, NULL);
insert into applications (app_name, app_title, app_enabled, app_order, app_tables) values ('cron_apps', 'cron_apps', 0, 0, NULL);
--------------
-- ACCOUNTS --
--------------
CREATE TABLE accounts (
con number NOT NULL,
loginid varchar2(25) NOT NULL,
passwd varchar2(32) NOT NULL,
firstname varchar2(50),
lastname varchar2(50),
permissions varchar2(255),
groups varchar2(30),
lastlogin number(11),
lastloginfrom varchar2(255),
lastpasswd_change number(11),
status varchar2(40) DEFAULT 'A' check (status in ('A','L')) NOT NULL,
PRIMARY KEY (con)
);
create unique index accounts_loginid
on accounts (loginid);
create sequence accounts_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger accounts_bri
before insert on accounts
for each row
begin
select accounts_seq.nextval into :new.con from dual;
end;
/
insert into accounts (loginid,passwd,firstname,lastname,permissions,groups,
status) values ('demo','81dc9bdb52d04dc20036dbd8313ed055','Demo','Account',
':admin:email:todo:addressbook:calendar:hr:',',1,','A');
------------
-- GROUPS --
------------
create table groups (
group_id number NOT NULL,
group_name varchar2(255),
group_apps varchar2(255),
primary key(group_id)
);
create sequence groups_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger groups_bri
before insert on groups
for each row
begin
select groups_seq.nextval into :new.group_id from dual;
end;
/
insert into groups (group_name) values ('Default');
-----------------
-- PREFERENCES --
-----------------
CREATE TABLE preferences (
owner varchar2(20),
name varchar2(50),
value varchar2(50)
);
insert into preferences values ('demo','maxmatchs','10');
insert into preferences values ('demo','mainscreen_showbirthdays','True');
insert into preferences values ('demo','mainscreen_showevents','True');
insert into preferences values ('demo','timeformat','12');
insert into preferences values ('demo','dateformat','m/d/Y');
insert into preferences values ('demo','theme','default');
insert into preferences values ('demo','tz_offset','0');
--------------
-- SESSIONS --
--------------
CREATE TABLE sessions (
sessionid varchar2(255) NOT NULL,
loginid varchar2(20),
passwd varchar2(255),
ip varchar2(255),
logintime number(11),
dla number(11)
);
create unique index sessions_sessionid
on sessions (sessionid);
------------------
-- APP_SESSIONS --
------------------
CREATE TABLE app_sessions (
sessionid varchar2(255) NOT NULL,
loginid varchar2(20),
app varchar2(20),
content varchar2(2000)
);
----------------
-- ACCESS_LOG --
----------------
create table access_log (
sessionid varchar2(30),
loginid varchar2(30),
ip varchar2(30),
li number(11),
lo number(11)
);
--------------
-- PROFILES --
--------------
CREATE TABLE profiles (
con number NOT NULL,
owner varchar2(20),
title varchar2(255),
phone_number varchar2(255),
comments varchar2(4000),
picture_format varchar2(255),
picture blob,
PRIMARY KEY (con)
);
create sequence profiles_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger profiles_bri
before insert on profiles
for each row
begin
select profiles_seq.nextval into :new.con from dual;
end;
/
-----------------
-- ADDRESSBOOK --
-----------------
CREATE TABLE addressbook (
ab_id number(11) DEFAULT '0' NOT NULL , --auto-increment
ab_owner varchar2(25),
ab_addr_access varchar2(10),
ab_firstname varchar2(255),
ab_lastname varchar2(255),
ab_email varchar2(255),
ab_hphone varchar2(255),
ab_wphone varchar2(255),
ab_fax varchar2(255),
ab_pager varchar2(255),
ab_mphone varchar2(255),
ab_ophone varchar2(255),
ab_street varchar2(255),
ab_city varchar2(255),
ab_state varchar2(255),
ab_zip varchar2(255),
ab_bday varchar2(255),
ab_notes varchar2(4000),
ab_company varchar2(255),
PRIMARY KEY (ab_id)
);
create sequence addressbook_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger addressbook_bri
before insert on addressbook
for each row
begin
select addressbook_seq.nextval into :new.con from dual;
end;
/
----------
-- TODO --
----------
CREATE TABLE todo (
todo_id number NOT NULL,
todo_owner varchar2(25),
todo_access varchar2(10),
todo_des varchar2(4000),
todo_pri number(11),
todo_status number(11),
todo_datecreated number(11),
todo_datedue number(11),
PRIMARY KEY (todo_id)
);
create sequence todo_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger todo_bri
before insert on todo
for each row
begin
select todo_seq.nextval into :new.con from dual;
end;
/
------------------
-- WEBCAL_ENTRY --
------------------
CREATE TABLE webcal_entry (
cal_id number NOT NULL,
cal_group_id number(11),
cal_create_by varchar2(25) NOT NULL,
cal_date number(11) DEFAULT '0' NOT NULL,
cal_time number(11),
cal_mod_date number(11),
cal_mod_time number(11),
cal_duration number(11) DEFAULT '0' NOT NULL,
cal_priority number(11) DEFAULT '2',
cal_type varchar2(10),
cal_access char(10),
cal_name varchar2(80) NOT NULL,
cal_description varchar2(4000),
PRIMARY KEY (cal_id)
);
create sequence webcal_entry_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger webcal_entry_bri
before insert on webcal_entry
for each row
begin
select webcal_entry_seq.nextval into :new.cal_id from dual;
end;
/
--------------------------
-- WEBCAL_ENTRY_REPEATS --
--------------------------
CREATE TABLE webcal_entry_repeats (
cal_id number NOT NULL,
cal_type varchar2(40) DEFAULT 'daily' check (cal_type in ('daily','weekly','monthlyByDay','monthlyByDate','yearly')) NOT NULL,
cal_end number(11),
cal_frequency number(11) DEFAULT '1',
cal_days char(7)
);
------------------------
-- WEBCAL_ENTRY_USERS --
------------------------
CREATE TABLE webcal_entry_user (
cal_id number NOT NULL,
cal_login varchar2(25) NOT NULL,
cal_status char(1) DEFAULT 'A',
PRIMARY KEY (cal_id, cal_login)
);
-------------------------
-- WEBCAL_ENTRY_GROUPS --
-------------------------
create table webcal_entry_groups (
cal_id number not null,
groups varchar2(255)
);
----------------
-- NEWSGROUPS --
----------------
CREATE TABLE newsgroups (
con number NOT NULL,
name varchar2(255) NOT NULL,
messagecount number(11) NOT NULL,
lastmessage number(11) NOT NULL,
active char DEFAULT 'N' NOT NULL,
lastread number(11),
PRIMARY KEY (con)
);
create unique index newsgroups_name
on newsgroups (name);
create sequence newsgroups_seq
increment by 1
start with 0
maxvalue 999999999
minvalue 0
nocycle
nocache;
create trigger newsgroups_bri
before insert on newsgroups
for each row
begin
select newsgroups_seq.nextval into :new.con from dual;
end;
/
---------------------
-- USERS_NEWSGOUPS --
---------------------
CREATE TABLE users_newsgroups (
owner number NOT NULL,
newsgroup number NOT NULL
);
----------
-- LANG --
----------
CREATE TABLE lang (
message_id varchar2(150) NOT NULL,
app_name varchar2(100) DEFAULT 'common' NOT NULL,
lang varchar2(5) NOT NULL,
content varchar2(4000) NOT NULL,
PRIMARY KEY (message_id,app_name,lang)
);
connect system/system;
REVOKE dba FROM phpgw;
commit;