[NCUC E-team] Member database maintenance

Tapani Tarvainen ncuc at tapani.tarvainen.info
Thu Dec 12 14:39:56 CET 2013


Here's some basic documentation of the member database.

Maintaining the database here means simply keeping
member data up to date: adding new members,
correcting and updating data for old,
deleting resigned members.

(Unfortunately there's no interface for members
themselves to update their own data directly.
I was going to write one but... perhaps ICANN labs
will come up with something.)

The database is quite simple, with PostgreSQL as db engine.
As noted earlier there's no custom interface, but
phppgadmin is easy enough even if not exactly pretty.

Access details including URL, login &c can be found
in the ncuc1 server in /root/member-database-access.txt
(presently accessible to me, Wilson and Brenden;
just let one of us know who should be added).

Phppgadmin's main drawback is the lack of any content-specific
help or safety features like undo, and its error messages
are sometimes rather cryptic, but I've peppered the database
with a heavy dose of checks, constraints and triggers that make
it somewhat hard to do much irreversible damage.

There is only one database, 'ncuc', and only one table,
'ncucers', that normally need to be touched, with the
following columns:

id           internal index (autogenerated, never change)

name         name (no separation of first and last name,
	     by convention "firstname lastname" but
	     that's not checked in any way).

role         'OffRep' for an organization's official representative,
	     'AddRep' for additional (non-voting) represetatives,
	     'Ind' for individual members
	     (must be spelled exactly like that).

organization name of the organization.
	     Note, organizations are not listed separately,
	     only implied by their official representatives;
	     there should be exactly one official representative
	     per organization.
	     Also, organization probably should be null for
	     individual members but isn't in all cases
	     (these should be checked).

country      obvious (blank for several members, unfortunately)

domain       copied from NCSG data, not presently used anywhere
website      ditto

email        primary email address (used for ballots);
	     must be unique (but can be null if unknown),
	     forced to lower case

email2       alternate email (to be used in case primary fails)

orgsize      'SMALL' or 'LARGE', null for individuals

state        membership status, possible values:
	     0 = new member, no ballot (not included in voter roll)
	     1 = old member, contact info not confirmed, no ballot
	     2 = member in good standing, included in voter roll
	     3 = removed (ex-member due to be deleted but kept in db pending
	       	 verification; no ballot, not shown in member list in the web)

xkey         random identifier used in data confirmation emails
	     (should be regenerated if needed again, no need to edit)


Adding new members, updating member data and deleting
old ones, as well as simply browsing member data can be
done with phppgadmin GUI, which has buttons like Browse,
Search, Edit, Insert, Delete &c.

Various web pages showing member data use the database
and are automatically updated when it changes.

Mailing lists, however, are not linked to the db in any
way, in particular ncuc-discuss subscriptions must be
handled separately.

That's basically all there is to it - easy as pie.
If you managed to read this far and understood most of it,
you are qualified to take over. :-)


For completeness, here are other tables that may be of interest
(generally not editable):

ncucer_history	  history of changes made to ncucers (starting now):
		  usable for undoing mistakes,
		  reviewing changes, making statistics
		  (in the future this could even be used to plot
		  membership development graphs or something)

ncucer_states	  valid values for state

orgsizes	  valid values for orgsize
		  (no need to change unless bylaws are changed
		  adding medium size organizations or something)

roles		  valid values for role

There're also a couple of tables that have been used
for temporary purposes like comparing data with NCSG,
but they're not being used anymore (should really be
removed, I may do it yet).

-- 
Tapani Tarvainen



More information about the E-team mailing list