DictionaryDatabase

Here are current thoughts for the Dictionary Database:

=big picture= A database design for a completely free and kid-safe dictionary.
 * Definitions will reached a frozen state. (Hence they are kid-safe)
 * Access plans
 * binary versions (ebooks, etc.)
 * text base versions including xml and raw text
 * I hope to allow anonymous read only access to the database
 * Known users will edit the definitions, the dictionary (word list) will be provided.

=database structure= I see one database and two tables initially: a dictionary (of words) and definitions. I imagine new dictionaries may be added, but only one table of definitions ever.

Table: dict
There may be n dictionaries. All the words for a given dictionary will be here. The definitions will live elsewhere.


 * char(64) word (primary key)
 * text discussion A history of thoughts regarding the definitions of the word.

Table: def
This is a giant database of words with the possibility of different reading levels. A dictionary will pull the words it uses from here.


 * int(11) recno
 * char(64) word (primary key)
 * enum(head, archive, deleted, frozen) state
 * timestamp mark date of this edit
 * int(4) unsigned ip
 * varchar(255) user
 * varchar(64) pkey pronunciation
 * text def
 * text comment

Future tables
Using the def table as a guide we could have audio, pictures, and possibly video.

=specific functionality=

revision history
We could use the date, but I assume we can order sequentially (reversed) since each edit will create a new record. Records can be deleted and we will leave them in place, but skip them when we see them.

saving edits
I assume we do enough of a diff so as not to save an unaltered copy of a record.

reverted changes
It's probably best to make a new head from the version we are reverting to.

searching
I assume there is basic alphabet ordering, maybe divided into one and two letter organization. We will need some kind of loose word matching functionality.

=questions=
 * Does LaTeX figure into the output side of things? If we want to offer printable versions I believe it may.
 * How to do user logins with PHP, verses adding users through Apache?

=research=
 * starting point: 1913 US Webster's Unabridged Dictionary link
 * The longest word in a major dictionary is 45 letters source.
 * Notes on measuring readability source. In case we want to automate this. Content created collaboratively will surely vary in style and readability. This needs to be monitored.

test