[Wplug-web] db schema

Robert Dale rdale at wplug.org
Sat Mar 24 20:24:13 EST 2001


--- stores events.  any sort of group activity is an event

create table events (
  event_id serial primary key,
  name varchar(32),
  topic varchar(64),
  date timestamp default now(),
  event_type_id int4 references event_types(event_type_id),
  location_id int4 references locations(location_id),
  minutes_id int4 references minutes(minutes_id),
  user_id int4 references users(user_id)
);

--- event types are like "GUM", "Installfest", "Other"

create table event_types (
  event_type_id serial primary key,
  event_type_name varchar(32)
);

--- locations for events
--- location can be physical, on irc, or at a url (ie. radio broadcast)

create table locations (
  location_id serial primary key,
  moniker varchar(16) unique,
  address varchar(64),
  city varchar(24),
  state varchar(12),
  zip_code varchar(10),
  country varchar(12),
  irc_channel varchar(16),
  url varchar(80),
  phone varchar(16),
  directions text,
--  map, -- need more details
  user_id int4 references users(user_id),
);

--- minutes taken at events

create table minutes (
  minutes_id serial primary key,
  author int4 references users(user_id),
  subject varchar(64),
  body text,
  attendees int4 references users(user_id)
);

create table users (
  user_id serial primary key,
  date_created timestamp default now(),
  first_name varchar(16),
  last_name varchar(24),
  email varchar(64) unique,
  password varchar(8),
  url varchar(80),
  primary_phone varchar(16),
  secondary_phone varchar(16),
  city varchar(24),
  state varchar(12)
  preference_id int4 references preferences(preference_id)
);


--- confirm table is a temporary store while we verify the email address
--- when we get back a matching hash, we create the account
--- these fields are therefor require info

create table confirm (
  confirm_id serial primary key,
  hash varchar(64) unique,
  expire_date timestamp,
  first_name varchar(16),
  last_name varchar(24),
  email varchar(64) unique,
  password varchar(8),
  url varchar(80),
  city varchar(24),
  state varchar(12)
);

--- presentations at events

create table presentations (
  presentation_id serial primary key,
  topic varchar(64),
  presentation_url varchar(128),
  user_id int4 references users(user_id)
);

--- there can be many presentations per event

create table event_presentations_map (
  presentation_id int4 references presentations(presentation_id),
  event_id int4 references events(event_id)
);

--- website session data

create table sessions (
  session_id serial primary key,
  session_hash varchar(64) unique,
  ip_addr varchar(128),
  expirey timestamp,
  user_id int4 references users(user_id)
);

--- news can be generated from an event or stand by itself
--- news types are event types since news describes some sort of an event

create table news (
  news_id serial primary key,
  date timestamp,
  expirey timestamp,
  topic varchar(64),
  body text,
  user_id int4 references users(user_id),
  event_type_id int4 references event_types(event_type_id)
);

--- capabilities

create table capabilities (
  capability_id serial primary key,
  name varchar(16)
);

create table groups (
  group_id serial primary key,
  name varchar(16)
);

create table group_capability_map (
  group_id int4 references groups(group_id),
  capability_id int4 references capabilities(capability_id)
);

--- user preferences

create table preferences (
  preference_id serial primary key,
  preference_name_id int4 references preference_names(preference_name_id),
  preference_data varchar(24)
);

create table preference_names (
  preference_name_id serial primary key,
  preference_name varchar(24)
);

-- 
Robert Dale

wplug member since 1998





More information about the Wplug-web mailing list