From shasha@access2.cims.nyu.edu  Wed May  4 08:01:49 2011
Received: from mx2.cims.nyu.edu (mx2.cims.nyu.edu [128.122.49.96])
	by mail.cims.nyu.edu (8.14.4+Sun/8.14.4) with ESMTP id p44C1m4w013982
	for <shasha@mail.cims.nyu.edu>; Wed, 4 May 2011 08:01:48 -0400 (EDT)
Received: from access2.cims.nyu.edu (access2.cims.nyu.edu [128.122.49.16])
	by mx2.cims.nyu.edu (8.14.4+Sun/8.14.4) with ESMTP id p44C1dSu020152
	for <shasha@cs.nyu.edu>; Wed, 4 May 2011 08:01:39 -0400 (EDT)
Received: from access2.cims.nyu.edu (localhost [127.0.0.1])
	by access2.cims.nyu.edu (8.14.4+Sun/8.14.4) with ESMTP id p44C1SX6001135;
	Wed, 4 May 2011 08:01:28 -0400 (EDT)
Received: (from shasha@localhost)
	by access2.cims.nyu.edu (8.14.4+Sun/8.14.4/Submit) id p44C1S2e001134;
	Wed, 4 May 2011 08:01:28 -0400 (EDT)
Date: Wed, 4 May 2011 08:01:28 -0400 (EDT)
From: Dennis Shasha <shasha@courant.nyu.edu>
Message-Id: <201105041201.p44C1S2e001134@access2.cims.nyu.edu>
To: rosskaff@gmail.com, shasha@courant.nyu.edu
Subject: Re: questions
Cc: aml500@nyu.edu, lobascio@nyu.edu, shasha@cs.nyu.edu
X-Scanned-By: MIMEDefang 2.71 on 128.122.49.96
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.6 (mx2.cims.nyu.edu [128.122.49.96]); Wed, 04 May 2011 08:01:48 -0400 (EDT)
Content-Length: 1061

Ross,
I agree with this design philosophy.
Attributes should definitely be separate from ling and example.
Here are the current schemas.
Please tell me how they should be changed.

By the way,
1. What format do you want timestamp in?
2. I've called this group sswl
Thanks,
Dennis

==> Category.csv <==
id,name,depth,group,creator,timestamp

==> Example.csv <==
id,lingid,words,gloss,translation,comment,group,creator,timestamp

==> ExampleLingPropVal.csv <==
id,exampleid,LingPropValID,group,creator,timestamp

==> Group.csv <==
id,name,privacy

==> GroupMembership.csv <==
id,user_id,group_id,level

==> Ling.csv <==
id,name,description,parentid,depth,group,creator,timestamp

==> LingPropVal.csv <==
id,lingid,propid,value,group,creator,timestamp

==> Property.csv <==
id,name,description,category,group,creator,timestamp

==> User.csv <==
id,name,email,accesslevel


==> sswlmaster.csv <==
id, name, privacy, depth_maximum, ling0_name, ling1_name, property_name, category_name, lings_property_name, example_name, examples_lings_property_name, example_fields

From rosskaff@gmail.com  Thu May  5 07:08:21 2011
Received: from mx.cims.nyu.edu (mx.cims.nyu.edu [128.122.49.99])
	by mail.cims.nyu.edu (8.14.4+Sun/8.14.4) with ESMTP id p45B8LD6007286
	for <shasha@mail.cims.nyu.edu>; Thu, 5 May 2011 07:08:21 -0400 (EDT)
Received: from mail-fx0-f46.google.com (mail-fx0-f46.google.com [209.85.161.46])
	by mx.cims.nyu.edu (8.13.8+Sun/8.13.8) with ESMTP id p45B7w2I001279
	for <shasha@courant.nyu.edu>; Thu, 5 May 2011 07:07:59 -0400 (EDT)
Received: by fxm17 with SMTP id 17so1440712fxm.19
        for <shasha@courant.nyu.edu>; Thu, 05 May 2011 04:07:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:mime-version:in-reply-to:references:date
         :message-id:subject:from:to:cc:content-type;
        bh=CDOYgQapgZ65p5pZIyC9Rr7CZL9cl7YrT2blxWGypg0=;
        b=xIa1154GAMq3sKX5YoQOtyFfDAMZO+78KQ3ainAwNe29T46ZjXZjaLj1KVJlZOOWv9
         vD3befR9PQJbbmKOoIm4ihXvaCR2tdw6Uu0vsNSb5/6vN6KPaiEURZOC8fsliZt+uV8O
         mzJq2Lj1On+kQ7a6Ihirg4iwbjMHHxV6p1Cq0=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=mime-version:in-reply-to:references:date:message-id:subject:from:to
         :cc:content-type;
        b=Pr0eWZpTMLOblHeqXtf/UsdxlLYLTTRQmAEpRl8ZFKQwS9hnPPjA7D+5k+9SFvlrhP
         HddxaseLkXg38SRPkw1WI1Y+W70TE8IMS6gDp7uAKme+AfSIyXbdiITsO85i28uZHviA
         SEuENc7PbDu/Rz5rRWBJG5FQXU1f4u4lgWi1Q=
MIME-Version: 1.0
Received: by 10.223.55.201 with SMTP id v9mr751280fag.76.1304593673565; Thu,
 05 May 2011 04:07:53 -0700 (PDT)
Received: by 10.223.105.201 with HTTP; Thu, 5 May 2011 04:07:53 -0700 (PDT)
In-Reply-To: <BANLkTi=LkGRqssTVb+mwJbwbLj-pXRx+mw@mail.gmail.com>
References: <BANLkTi=LkGRqssTVb+mwJbwbLj-pXRx+mw@mail.gmail.com>
Date: Thu, 5 May 2011 07:07:53 -0400
Message-ID: <BANLkTi=EH3=VpbMFSo8DJBjvzADx5MdE8g@mail.gmail.com>
Subject: Re: Revised schema
From: Ross K <rosskaff@gmail.com>
To: Dennis Shasha <shasha@courant.nyu.edu>
Cc: aml500@nyu.edu, lobascio@nyu.edu, shasha@cs.nyu.edu
Content-Type: multipart/alternative; boundary=001517478f927d36ae04a28562db
X-Scanned-By: MIMEDefang 2.71 on 128.122.49.99
X-Greylist: Sender DNS name whitelisted, not delayed by milter-greylist-4.2.6 (mx.cims.nyu.edu [128.122.49.99]); Thu, 05 May 2011 07:08:21 -0400 (EDT)
Status: RO
Content-Length: 25601

--001517478f927d36ae04a28562db
Content-Type: text/plain; charset=ISO-8859-1

Addendum:

==> Property.csv <==
id,name,description,category_id,group_id,creator_id


The CSV spec is now under version control on Github, here for reference:

https://github.com/linguisticexplorer/Linguistic-Explorer/blob/master/lib/group_data/importer.rb

On Wed, May 4, 2011 at 11:06 PM, Ross K <rosskaff@gmail.com> wrote:

> Hi Dennis,
>
> Thanks for providing the schema. I've made some changes to each with notes.
> I've also added a new csv, StoredValue.csv, which is an extraction from the
> Example.csv and removed sswlmaster.csv and merged those columns with
> Group.csv. Alex, please review this as well since you have more intimate
> knowledge of the requirements for these tables.
>
> Some general notes:
> - Renames were made to get exact matches with our schema
> - Removes were done for unnecessary or unsupported columns
> - Additions were made when addition columns were required.
> - Anything marked as an id (id, group_id, creator_id, etc) are useful for
> the script, but will likely have no relation to the ids used to create the
> database rows. For example, the category in your csv with id 123 will likely
> have a completely different id in production. The advantage is that you will
> not need to be aware of the preexisting ids in the database when you
> generate additional csvs in the future. You must still ensure that the ids
> you use are consistent so that we can match up the information correctly in
> the script.
> - Tables with foreign keys will be rely on their belongs_to having been
> created to succeed. Therefore, users and groups must be created first, then
> memberships, then lings, etc. If a foreign_key references an object that
> does not exist, then the row will not be created.
>
> Additional notes and changes below:
>
> ==> Category.csv <==
> id, name, depth, group_id, creator_id,description
>
> + description
> - timestamp
> > creator => creator_id
> > group   => group_id
> # description is supported in the schema
>
>
> ==> Example.csv <==
> id,ling_id,group_id,creator_id,name
>
> - words, gloss, translation, comment, timestamp,
> + ling_id, creator_id, name
> > lingid  => ling_id
> > creator => creator_id
>
>
> ==> ExampleLingsProperty.csv <===
> id,example_id,lings_property_id,group_id,creator_id
>
> - timestamp
> > ExampleLingPropVal.csv => ExampleLingsProperty.csv
> > LingPropValID => lings_property_id
> > creator       => creator_id
> > group         => group_id
> > exampleid     => example_id
>
>
> ==> Group.csv <==
> id, name, privacy, depth_maximum, ling0_name, ling1_name, property_name,
> category_name, lings_property_name, example_name,
> examples_lings_property_name, example_fields
>
> # merged with sswlmaster.csv
>
>
> ==> Ling.csv <==
> id,name,parent_id,depth,group_id,creator_id
>
> - description, timestamp
> > parentid  => parent_id
> > group     => group_id
> > creator   => creator_id
> # description is NOT currently supported in the schema
>
>
> ==> LingsProperty.csv <==
> id,ling_id,prop_id,value,group_id,creator_id
>
> - timestamp
> > LingPropVal.csv => LingsProperty.csv
> > lingid    => ling_id
> > propid    => prop_id
> # Renamed csv for clarity: LingsProperty is the name used in the
> application
>
>
> ==> Membership.csv <==
> id,user_id,group_id,level,creator_id
>
> + creator_id
> > GroupMembership.csv => Membership.csv
> # Renamed csv for clarity: Membership is the name used in the application
>
>
> ==> Property.csv <==
> id,name,description,category,group,creator
>
> - timestamp
> > category  => category_id
> > group     => group_id
> > creator   => creator_id
>
>
> ==> User.csv <==
> id,name,email,accesslevel, password
>
> + password
> > accesslevel => access_level
> # password is required to create users. You can randomly generate this or
> pick a single dummy password if you want, but you'll have to save these
> passwords to send them to the owners and instruct them to change to
> something secure they can remember.
>
> Adding:
>
> ===> StoredValue.csv <=====
> id, storable_id, storable_type, key, value, group_id
>
> Examples (4 attributes added to the ling with id 2 in group with id 3):
> 1, 2, Ling, words, words value, 3
> 2, 2, Ling, gloss, gloss value, 3
> 3, 2, Ling, translation, translation value, 3
> 4, 2, Ling, comment, comment value, 3
>
> # storable_id is foreign key to id to which this value is attached
> # storable_type is type indicates which table (CSV) contains this
> storable_id
>
>
> Removing:
>
> ==> sswlmaster.csv <==
> id, name, privacy, depth_maximum, ling0_name, ling1_name, property_name,
> category_name, lings_property_name, example_name,
> examples_lings_property_name, example_fields
>
> # redundant - all this data should be contained in Group.csv
>
>
>
>
> On Wed, May 4, 2011 at 8:17 AM, Dennis Shasha <shasha@courant.nyu.edu>wrote:
>
>> Ok, will do. Thanks.
>> Dennis
>>
>> From rosskaff@gmail.com  Wed May  4 08:13:45 2011
>> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
>>        d=gmail.com; s=gamma;
>>        h=domainkey-signature:mime-version:in-reply-to:references:date
>>         :message-id:subject:from:to:cc:content-type;
>>        bh=wmlTQjyG6GZicm+3Vo8+W5b4zLG2rz20LErE23GztkM=;
>>
>>  b=mpVsfYUGfE5VliPTUZGULvM1x1MxJ1sJgD0WaRu7PTHU1qzSyCyENw4k00/L+CiM1v
>>
>> POkxKPLsnMeo0HgGqaOod1YsMQ2fD+GD2K3CxhSEyASDYLD0yeeluisMOB2WRKtScQU8
>>         65MvuGN2aktKUat72G39VMOP+p8QAKaya/yoo=
>> DomainKey-Signature: a=rsa-sha1; c=nofws;
>>        d=gmail.com; s=gamma;
>>
>>  h=mime-version:in-reply-to:references:date:message-id:subject:from:to
>>         :cc:content-type;
>>
>>  b=WcCxSgLHQ3Qc8p+tFR0qUb6kB0ynX1a4cyQVAH5vfr9/bBbtj6/aNNQEXr7GLMikh+
>>
>> qpb/hbcDCEjg89VZhzvb3SLgrEsqBkTesbRpy3Jgo43dH8dKUXvBd9JU7mpqA/4pOAiO
>>         aEMHVu9cBsivDEXV8EqLxBpngQY6C2UURHh8E=
>> MIME-Version: 1.0
>> Date: Wed, 4 May 2011 08:13:26 -0400
>> Subject: Re: questions
>> From: Ross K <rosskaff@gmail.com>
>> To: Dennis Shasha <shasha@courant.nyu.edu>
>> Cc: aml500@nyu.edu, lobascio@nyu.edu, shasha@cs.nyu.edu
>> X-Scanned-By: MIMEDefang 2.71 on 128.122.49.96
>> X-Greylist: Sender DNS name whitelisted, not delayed by
>> milter-greylist-4.2.6 (mx2.cims.nyu.edu [128.122.49.96]); Wed, 04 May
>> 2011 08:13:45 -0400 (EDT)
>>
>> --001517491d54127b4c04a2722fa3
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> You can omit the timestamp columns altogether... our application will
>> manage
>> these appropriately as the records are created.
>>
>> I hope to dive into the script later tonight after work. I'll more have
>> time
>> to check your schemas then.
>>
>> Thanks,
>> Ross
>>
>> On Wed, May 4, 2011 at 8:01 AM, Dennis Shasha <shasha@courant.nyu.edu
>> >wrote:
>>
>> > Ross,
>> > I agree with this design philosophy.
>> > Attributes should definitely be separate from ling and example.
>> > Here are the current schemas.
>> > Please tell me how they should be changed.
>> >
>> > By the way,
>> > 1. What format do you want timestamp in?
>> > 2. I've called this group sswl
>> > Thanks,
>> > Dennis
>> >
>> > ==> Category.csv <==
>> > id,name,depth,group,creator,timestamp
>> >
>> > ==> Example.csv <==
>> > id,lingid,words,gloss,translation,comment,group,creator,timestamp
>> >
>> > ==> ExampleLingPropVal.csv <==
>> > id,exampleid,LingPropValID,group,creator,timestamp
>> >
>> > ==> Group.csv <==
>> > id,name,privacy
>> >
>> > ==> GroupMembership.csv <==
>> > id,user_id,group_id,level
>> >
>> > ==> Ling.csv <==
>> > id,name,description,parentid,depth,group,creator,timestamp
>> >
>> > ==> LingPropVal.csv <==
>> > id,lingid,propid,value,group,creator,timestamp
>> >
>> > ==> Property.csv <==
>> > id,name,description,category,group,creator,timestamp
>> >
>> > ==> User.csv <==
>> > id,name,email,accesslevel
>> >
>> >
>> > ==> sswlmaster.csv <==
>> > id, name, privacy, depth_maximum, ling0_name, ling1_name, property_name,
>> > category_name, lings_property_name, example_name,
>> > examples_lings_property_name, example_fields
>> >
>>
>> --001517491d54127b4c04a2722fa3
>> Content-Type: text/html; charset=ISO-8859-1
>> Content-Transfer-Encoding: quoted-printable
>>
>> You can omit the timestamp columns altogether... our application will
>> manag=
>> e these appropriately as the records are created.<div><br></div><div>I
>> hope=
>>  to dive into the script later tonight after work. I&#39;ll more have time
>> =
>> to check your schemas then.</div>
>> <div><br></div><div>Thanks,</div><div>Ross=A0<br><br><div
>> class=3D"gmail_qu=
>> ote">On Wed, May 4, 2011 at 8:01 AM, Dennis Shasha <span
>> dir=3D"ltr">&lt;<a=
>>  href=3D"mailto:shasha@courant.nyu.edu">shasha@courant.nyu.edu
>> </a>&gt;</spa=
>> n> wrote:<br>
>> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0
>> .8ex;border-left:1p=
>> x #ccc solid;padding-left:1ex;">Ross,<br>
>> I agree with this design philosophy.<br>
>> Attributes should definitely be separate from ling and example.<br>
>> Here are the current schemas.<br>
>> Please tell me how they should be changed.<br>
>> <br>
>> By the way,<br>
>> 1. What format do you want timestamp in?<br>
>> 2. I&#39;ve called this group sswl<br>
>> Thanks,<br>
>> Dennis<br>
>> <br>
>> =3D=3D&gt; Category.csv &lt;=3D=3D<br>
>> id,name,depth,group,creator,timestamp<br>
>> <br>
>> =3D=3D&gt; Example.csv &lt;=3D=3D<br>
>> id,lingid,words,gloss,translation,comment,group,creator,timestamp<br>
>> <br>
>> =3D=3D&gt; ExampleLingPropVal.csv &lt;=3D=3D<br>
>> id,exampleid,LingPropValID,group,creator,timestamp<br>
>> <br>
>> =3D=3D&gt; Group.csv &lt;=3D=3D<br>
>> id,name,privacy<br>
>> <br>
>> =3D=3D&gt; GroupMembership.csv &lt;=3D=3D<br>
>> id,user_id,group_id,level<br>
>> <br>
>> =3D=3D&gt; Ling.csv &lt;=3D=3D<br>
>> id,name,description,parentid,depth,group,creator,timestamp<br>
>> <br>
>> =3D=3D&gt; LingPropVal.csv &lt;=3D=3D<br>
>> id,lingid,propid,value,group,creator,timestamp<br>
>> <br>
>> =3D=3D&gt; Property.csv &lt;=3D=3D<br>
>> id,name,description,category,group,creator,timestamp<br>
>> <br>
>> =3D=3D&gt; User.csv &lt;=3D=3D<br>
>> id,name,email,accesslevel<br>
>> <br>
>> <br>
>> =3D=3D&gt; sswlmaster.csv &lt;=3D=3D<br>
>> <div><div></div><div class=3D"h5">id, name, privacy, depth_maximum,
>> ling0_n=
>> ame, ling1_name, property_name, category_name, lings_property_name,
>> example=
>> _name, examples_lings_property_name, example_fields<br>
>> </div></div></blockquote></div><br></div>
>>
>> --001517491d54127b4c04a2722fa3--
>>
>>
>

--001517478f927d36ae04a28562db
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Addendum:<div><br></div><div><span class=3D"Apple-style-span" style=3D"font=
-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><=
div>=3D=3D&gt; Property.csv &lt;=3D=3D</div><div>id,name,description,catego=
ry_id,group_id,creator_id</div>
<div><br></div><div><br></div><div>The CSV spec is now under version contro=
l on Github, here for reference:</div><div><br></div><div><a href=3D"https:=
//github.com/linguisticexplorer/Linguistic-Explorer/blob/master/lib/group_d=
ata/importer.rb">https://github.com/linguisticexplorer/Linguistic-Explorer/=
blob/master/lib/group_data/importer.rb</a></div>
</span><br><div class=3D"gmail_quote">On Wed, May 4, 2011 at 11:06 PM, Ross=
 K <span dir=3D"ltr">&lt;<a href=3D"mailto:rosskaff@gmail.com">rosskaff@gma=
il.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"=
margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div>Hi Dennis,</div><div><br></div><div>Thanks for providing the schema. I=
&#39;ve made some changes to each with notes. I&#39;ve also added a new csv=
, StoredValue.csv, which is an extraction from the Example.csv and removed =
sswlmaster.csv and merged those columns with Group.csv. Alex, please review=
 this as well since you have more intimate knowledge of the requirements fo=
r these tables.</div>

<div><br></div><div>Some general notes:</div><div>- Renames were made to ge=
t exact matches with our schema</div><div>- Removes were done for unnecessa=
ry or unsupported columns</div><div>- Additions were made when addition col=
umns were required.</div>

<div>- Anything marked as an id (id, group_id, creator_id, etc) are useful =
for the script, but will likely have no relation to the ids used to create =
the database rows. For example, the category in your csv with id 123 will l=
ikely have a completely different id in production. The advantage is that y=
ou will not need to be aware of the preexisting ids in the database when yo=
u generate additional csvs in the future. You must still ensure that the id=
s you use are consistent so that we can match up the information correctly =
in the script.</div>

<div>- Tables with foreign keys will be rely on their belongs_to having bee=
n created to succeed. Therefore, users and groups must be created first, th=
en memberships, then lings, etc. If a foreign_key references an object that=
 does not exist, then the row will not be created.</div>

<div><br></div><div>Additional notes and changes below:</div><div><br></div=
><div><div>=3D=3D&gt; Category.csv &lt;=3D=3D</div><div>id, name, depth, gr=
oup_id, creator_id,description</div><div><br></div><div>+ description</div>=
<div>

- timestamp</div><div>&gt; creator =3D&gt; creator_id</div><div>&gt; group =
=A0 =3D&gt; group_id</div><div># description is supported in the schema</di=
v><div><br></div><div><br></div><div>=3D=3D&gt; Example.csv &lt;=3D=3D</div=
><div>id,ling_id,group_id,creator_id,name</div>

<div><br></div><div>- words, gloss, translation, comment, timestamp,</div><=
div>+ ling_id, creator_id, name</div><div>&gt; lingid =A0=3D&gt; ling_id</d=
iv><div>&gt; creator =3D&gt; creator_id</div><div><br></div><div><br></div>=
<div>

=3D=3D&gt; ExampleLingsProperty.csv &lt;=3D=3D=3D</div><div>id,example_id,l=
ings_property_id,group_id,creator_id</div><div><br></div><div>- timestamp</=
div><div>&gt; ExampleLingPropVal.csv =3D&gt; ExampleLingsProperty.csv</div>=
<div>&gt; LingPropValID =3D&gt; lings_property_id</div>

<div>&gt; creator =A0 =A0 =A0 =3D&gt; creator_id</div><div>&gt; group =A0 =
=A0 =A0 =A0 =3D&gt; group_id</div><div>&gt; exampleid =A0 =A0 =3D&gt; examp=
le_id</div><div><br></div><div><br></div><div>=3D=3D&gt; Group.csv &lt;=3D=
=3D</div><div>id, name, privacy, depth_maximum, ling0_name, ling1_name, pro=
perty_name, category_name, lings_property_name, example_name, examples_ling=
s_property_name, example_fields</div>

<div><br></div><div># merged with sswlmaster.csv</div><div><br></div><div><=
br></div><div>=3D=3D&gt; Ling.csv &lt;=3D=3D</div><div>id,name,parent_id,de=
pth,group_id,creator_id</div><div><br></div><div>- description, timestamp</=
div>

<div>&gt; parentid =A0=3D&gt; parent_id</div><div>&gt; group =A0 =A0 =3D&gt=
; group_id</div><div>&gt; creator =A0 =3D&gt; creator_id</div><div># descri=
ption is NOT currently supported in the schema</div><div><br></div><div><br=
></div><div>

=3D=3D&gt; LingsProperty.csv &lt;=3D=3D</div><div>id,ling_id,prop_id,value,=
group_id,creator_id</div><div><br></div><div>- timestamp</div><div>&gt; Lin=
gPropVal.csv =3D&gt; LingsProperty.csv</div><div>&gt; lingid =A0 =A0=3D&gt;=
 ling_id</div>

<div>&gt; propid =A0 =A0=3D&gt; prop_id</div><div># Renamed csv for clarity=
: LingsProperty is the name used in the application</div><div><br></div><di=
v><br></div><div>=3D=3D&gt; Membership.csv &lt;=3D=3D</div><div>id,user_id,=
group_id,level,creator_id</div>

<div><br></div><div>+ creator_id</div><div>&gt; GroupMembership.csv =3D&gt;=
 Membership.csv</div><div># Renamed csv for clarity: Membership is the name=
 used in the application</div><div><br></div><div><br></div><div>=3D=3D&gt;=
 Property.csv &lt;=3D=3D</div>

<div>id,name,description,category,group,creator</div><div><br></div><div>- =
timestamp</div><div>&gt; category =A0=3D&gt; category_id</div><div>&gt; gro=
up =A0 =A0 =3D&gt; group_id</div><div>&gt; creator =A0 =3D&gt; creator_id</=
div><div>
<br>
</div><div><br></div><div>=3D=3D&gt; User.csv &lt;=3D=3D</div><div>id,name,=
email,accesslevel, password</div><div><br></div><div>+ password</div><div>&=
gt; accesslevel =3D&gt; access_level</div><div># password is required to cr=
eate users. You can randomly generate this or pick a single dummy password =
if you want, but you&#39;ll have to save these passwords to send them to th=
e owners and instruct them to change to something secure they can remember.=
</div>

<div><br></div><div>Adding:</div><div><br></div><div>=3D=3D=3D&gt; StoredVa=
lue.csv &lt;=3D=3D=3D=3D=3D</div><div>id, storable_id, storable_type, key, =
value, group_id</div><div><br></div><div>Examples (4 attributes added to th=
e ling with id 2 in group with id 3):</div>

<div>1, 2, Ling, words, words value, 3</div><div>2, 2, Ling, gloss, gloss v=
alue, 3</div><div>3, 2, Ling, translation, translation value, 3</div><div>4=
, 2, Ling, comment, comment value, 3</div><div><br></div><div># storable_id=
 is foreign key to id to which this value is attached</div>

<div># storable_type is type indicates which table (CSV) contains this stor=
able_id</div><div><br></div><div><br></div><div>Removing:</div><div><br></d=
iv><div>=3D=3D&gt; sswlmaster.csv &lt;=3D=3D</div><div>id, name, privacy, d=
epth_maximum, ling0_name, ling1_name, property_name, category_name, lings_p=
roperty_name, example_name, examples_lings_property_name, example_fields</d=
iv>

<div><br></div><div># redundant - all this data should be contained in Grou=
p.csv</div></div><div><br></div><div><br></div><br><br><div class=3D"gmail_=
quote">On Wed, May 4, 2011 at 8:17 AM, Dennis Shasha <span dir=3D"ltr">&lt;=
<a href=3D"mailto:shasha@courant.nyu.edu" target=3D"_blank">shasha@courant.=
nyu.edu</a>&gt;</span> wrote:<br>

<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">Ok, will do. Thanks.<br>
Dennis<br>
<br>
>From <a href=3D"mailto:rosskaff@gmail.com" target=3D"_blank">rosskaff@gmail=
.com</a> =A0Wed May =A04 08:13:45 2011<br>
DKIM-Signature: v=3D1; a=3Drsa-sha256; c=3Drelaxed/relaxed;<br>
 =A0 =A0 =A0 =A0d=3D<a href=3D"http://gmail.com" target=3D"_blank">gmail.co=
m</a>; s=3Dgamma;<br>
 =A0 =A0 =A0 =A0h=3Ddomainkey-signature:mime-version:in-reply-to:references=
:date<br>
 =A0 =A0 =A0 =A0 :message-id:subject:from:to:cc:content-type;<br>
 =A0 =A0 =A0 =A0bh=3DwmlTQjyG6GZicm+3Vo8+W5b4zLG2rz20LErE23GztkM=3D;<br>
 =A0 =A0 =A0 =A0b=3DmpVsfYUGfE5VliPTUZGULvM1x1MxJ1sJgD0WaRu7PTHU1qzSyCyENw4=
k00/L+CiM1v<br>
 =A0 =A0 =A0 =A0 POkxKPLsnMeo0HgGqaOod1YsMQ2fD+GD2K3CxhSEyASDYLD0yeeluisMOB=
2WRKtScQU8<br>
 =A0 =A0 =A0 =A0 65MvuGN2aktKUat72G39VMOP+p8QAKaya/yoo=3D<br>
DomainKey-Signature: a=3Drsa-sha1; c=3Dnofws;<br>
 =A0 =A0 =A0 =A0d=3D<a href=3D"http://gmail.com" target=3D"_blank">gmail.co=
m</a>; s=3Dgamma;<br>
 =A0 =A0 =A0 =A0h=3Dmime-version:in-reply-to:references:date:message-id:sub=
ject:from:to<br>
 =A0 =A0 =A0 =A0 :cc:content-type;<br>
 =A0 =A0 =A0 =A0b=3DWcCxSgLHQ3Qc8p+tFR0qUb6kB0ynX1a4cyQVAH5vfr9/bBbtj6/aNNQ=
EXr7GLMikh+<br>
 =A0 =A0 =A0 =A0 qpb/hbcDCEjg89VZhzvb3SLgrEsqBkTesbRpy3Jgo43dH8dKUXvBd9JU7m=
pqA/4pOAiO<br>
 =A0 =A0 =A0 =A0 aEMHVu9cBsivDEXV8EqLxBpngQY6C2UURHh8E=3D<br>
MIME-Version: 1.0<br>
Date: Wed, 4 May 2011 08:13:26 -0400<br>
Subject: Re: questions<br>
From: Ross K &lt;<a href=3D"mailto:rosskaff@gmail.com" target=3D"_blank">ro=
sskaff@gmail.com</a>&gt;<br>
To: Dennis Shasha &lt;<a href=3D"mailto:shasha@courant.nyu.edu" target=3D"_=
blank">shasha@courant.nyu.edu</a>&gt;<br>
Cc: <a href=3D"mailto:aml500@nyu.edu" target=3D"_blank">aml500@nyu.edu</a>,=
 <a href=3D"mailto:lobascio@nyu.edu" target=3D"_blank">lobascio@nyu.edu</a>=
, <a href=3D"mailto:shasha@cs.nyu.edu" target=3D"_blank">shasha@cs.nyu.edu<=
/a><br>

X-Scanned-By: MIMEDefang 2.71 on 128.122.49.96<br>
X-Greylist: Sender DNS name whitelisted, not delayed by milter-greylist-4.2=
.6 (<a href=3D"http://mx2.cims.nyu.edu" target=3D"_blank">mx2.cims.nyu.edu<=
/a> [128.122.49.96]); Wed, 04 May 2011 08:13:45 -0400 (EDT)<br>
<br>
--001517491d54127b4c04a2722fa3<br>
Content-Type: text/plain; charset=3DISO-8859-1<br>
<div><div></div><div><br>
You can omit the timestamp columns altogether... our application will manag=
e<br>
these appropriately as the records are created.<br>
<br>
I hope to dive into the script later tonight after work. I&#39;ll more have=
 time<br>
to check your schemas then.<br>
<br>
Thanks,<br>
Ross<br>
<br>
On Wed, May 4, 2011 at 8:01 AM, Dennis Shasha &lt;<a href=3D"mailto:shasha@=
courant.nyu.edu" target=3D"_blank">shasha@courant.nyu.edu</a>&gt;wrote:<br>
<br>
&gt; Ross,<br>
&gt; I agree with this design philosophy.<br>
&gt; Attributes should definitely be separate from ling and example.<br>
&gt; Here are the current schemas.<br>
&gt; Please tell me how they should be changed.<br>
&gt;<br>
&gt; By the way,<br>
&gt; 1. What format do you want timestamp in?<br>
&gt; 2. I&#39;ve called this group sswl<br>
&gt; Thanks,<br>
&gt; Dennis<br>
&gt;<br>
&gt; =3D=3D&gt; Category.csv &lt;=3D=3D<br>
&gt; id,name,depth,group,creator,timestamp<br>
&gt;<br>
&gt; =3D=3D&gt; Example.csv &lt;=3D=3D<br>
&gt; id,lingid,words,gloss,translation,comment,group,creator,timestamp<br>
&gt;<br>
&gt; =3D=3D&gt; ExampleLingPropVal.csv &lt;=3D=3D<br>
&gt; id,exampleid,LingPropValID,group,creator,timestamp<br>
&gt;<br>
&gt; =3D=3D&gt; Group.csv &lt;=3D=3D<br>
&gt; id,name,privacy<br>
&gt;<br>
&gt; =3D=3D&gt; GroupMembership.csv &lt;=3D=3D<br>
&gt; id,user_id,group_id,level<br>
&gt;<br>
&gt; =3D=3D&gt; Ling.csv &lt;=3D=3D<br>
&gt; id,name,description,parentid,depth,group,creator,timestamp<br>
&gt;<br>
&gt; =3D=3D&gt; LingPropVal.csv &lt;=3D=3D<br>
&gt; id,lingid,propid,value,group,creator,timestamp<br>
&gt;<br>
&gt; =3D=3D&gt; Property.csv &lt;=3D=3D<br>
&gt; id,name,description,category,group,creator,timestamp<br>
&gt;<br>
&gt; =3D=3D&gt; User.csv &lt;=3D=3D<br>
&gt; id,name,email,accesslevel<br>
&gt;<br>
&gt;<br>
&gt; =3D=3D&gt; sswlmaster.csv &lt;=3D=3D<br>
&gt; id, name, privacy, depth_maximum, ling0_name, ling1_name, property_nam=
e,<br>
&gt; category_name, lings_property_name, example_name,<br>
&gt; examples_lings_property_name, example_fields<br>
&gt;<br>
<br>
</div></div>--001517491d54127b4c04a2722fa3<br>
Content-Type: text/html; charset=3DISO-8859-1<br>
Content-Transfer-Encoding: quoted-printable<br>
<br>
You can omit the timestamp columns altogether... our application will manag=
=3D<br>
e these appropriately as the records are created.&lt;div&gt;&lt;br&gt;&lt;/=
div&gt;&lt;div&gt;I hope=3D<br>
=A0to dive into the script later tonight after work. I&amp;#39;ll more have=
 time =3D<br>
to check your schemas then.&lt;/div&gt;<br>
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks,&lt;/div&gt;&lt;div&gt;R=
oss=3DA0&lt;br&gt;&lt;br&gt;&lt;div class=3D3D&quot;gmail_qu=3D<br>
ote&quot;&gt;On Wed, May 4, 2011 at 8:01 AM, Dennis Shasha &lt;span dir=3D3=
D&quot;ltr&quot;&gt;&amp;lt;&lt;a=3D<br>
=A0href=3D3D&quot;mailto:<a href=3D"mailto:shasha@courant.nyu.edu" target=
=3D"_blank">shasha@courant.nyu.edu</a>&quot;&gt;<a href=3D"mailto:shasha@co=
urant.nyu.edu" target=3D"_blank">shasha@courant.nyu.edu</a>&lt;/a&gt;&amp;g=
t;&lt;/spa=3D<br>

n&gt; wrote:&lt;br&gt;<br>
&lt;blockquote class=3D3D&quot;gmail_quote&quot; style=3D3D&quot;margin:0 0=
 0 .8ex;border-left:1p=3D<br>
x #ccc solid;padding-left:1ex;&quot;&gt;Ross,&lt;br&gt;<br>
I agree with this design philosophy.&lt;br&gt;<br>
Attributes should definitely be separate from ling and example.&lt;br&gt;<b=
r>
Here are the current schemas.&lt;br&gt;<br>
Please tell me how they should be changed.&lt;br&gt;<br>
&lt;br&gt;<br>
By the way,&lt;br&gt;<br>
1. What format do you want timestamp in?&lt;br&gt;<br>
2. I&amp;#39;ve called this group sswl&lt;br&gt;<br>
Thanks,&lt;br&gt;<br>
Dennis&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; Category.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,name,depth,group,creator,timestamp&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; Example.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,lingid,words,gloss,translation,comment,group,creator,timestamp&lt;br&gt;=
<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; ExampleLingPropVal.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,exampleid,LingPropValID,group,creator,timestamp&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; Group.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,name,privacy&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; GroupMembership.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,user_id,group_id,level&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; Ling.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,name,description,parentid,depth,group,creator,timestamp&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; LingPropVal.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,lingid,propid,value,group,creator,timestamp&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; Property.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,name,description,category,group,creator,timestamp&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; User.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
id,name,email,accesslevel&lt;br&gt;<br>
&lt;br&gt;<br>
&lt;br&gt;<br>
=3D3D=3D3D&amp;gt; sswlmaster.csv &amp;lt;=3D3D=3D3D&lt;br&gt;<br>
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=3D3D&quot;h5&quot;&gt;id, n=
ame, privacy, depth_maximum, ling0_n=3D<br>
<div>ame, ling1_name, property_name, category_name, lings_property_name, ex=
ample=3D<br>
</div>_name, examples_lings_property_name, example_fields&lt;br&gt;<br>
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&g=
t;<br>
<br>
--001517491d54127b4c04a2722fa3--<br>
<br>
</blockquote></div><br>
</blockquote></div><br></div>

--001517478f927d36ae04a28562db--

