Re: GEDCOM to Wiki, anyone?

[email protected] (Darren Duncan) Fri, 28 May 2010 21:13:04 -0700
Newsgroups perl.gedcom
Message-ID <[email protected]>
FYI, the following message is a quick private exchange between Dave Patton and 
myself, where Dave had written me privately, apparently in response to a post I 
made to this list in February of 2007 with the same subject line; I am 
forwarding it in case my contained brief suggestions on how to design a 
genealogy database would be useful to others. -- Darren Duncan

[email protected] wrote [on 2010 May 28]:
> Darren
> 
> You are welcome to post  our conversation as you see fit.
> 
> Your suggestions are good ones.  We get in trouble when we try to put 
> these relationships (database and personal) inside the proverbial box.  
> And as you suggested, source information needs to be displayed and 
> linked according to some set of rules based on authenticity.  That 
> however should not limit folks from contributing what they believe to be 
> true, given that such information can prove to be extremely valuable.
> 
> Thanks for the additional information.  It will be quite useful.
> 
> Dave
>> [email protected] wrote [on 2010 May 28]:
>>> Hi Darren
>>
>> Hello Dave, thanks for writing.
>>
>> I assume that your email is a follow-up to a thread on the 
>> [email protected] mailing list from around February of 2007, given 
>> your subject line.
>>
>> I would also like to send my response there, so please tell me if this 
>> is okay or not.
>>
>>> Are you designing a relational database to display geneological 
>>> information on the internet?
>>
>> Yes I am, but this has been put on hiatus for awhile.
>>
>> Before I resume the genealogy project, I am currently dealing with a 
>> more fundamental project, which deals with improving relational DBMSs 
>> themselves and our interactions with them.
>>
>> As announced last week in other Perl lists, I have completed the 
>> specification of a new programming language which is meant to replace 
>> SQL in the long term, and be an intermediary format for translating 
>> SQL dialects in the short term.
>>
>> See http://muldis.com/Muldis_D.html for information on that.
>>
>> Around August or September I expect to have a (open source) reference 
>> implementation made so people can actually run Muldis D code like with 
>> a regular programming language, and then I'll work on other components 
>> to deal with SQL translation or using my language as a front for SQL 
>> databases, etc.  Hopefully the community will become involved at least 
>> when the reference is done, if not sooner, and they can be involved in 
>> other parts.
>>
>> Only after this is done, will I be looking back into my genealogy 
>> project, and be implementing it over Muldis D.
>>
>>> I'm building a relational database on a MYSQL server to display 
>>> family information on a public website.  The primary table, assigning 
>>> an ID number and basic identifying data for individuals, also 
>>> includes parental ID numbers.  I will establish ancestry with that 
>>> relationship.
>>>
>>> That been said, it would probably be a good idea for me to make any 
>>> changes now before I start writing PHP.
>>>
>>> Will your table design be proprietary?  I pride myself on learning 
>>> from others...
>>>
>>> Dave Patton
>>> Corvallis, OR.
>>
>> My design will be open source, but it will realistically be at least a 
>> full year before I start working on it.  I recommend you don't wait 
>> for me if you don't want to wait years to start your project.
>>
>> I only have a few things to say for now about what you should do for 
>> your design.  Any best practices you can find elsewhere are probably 
>> acceptable for now.  Using a nondescriptive ID number per person, as 
>> you indicated, is a good start.
>>
>> One thing I can suggest that may be less typical but is what I would 
>> do, is allow storage of multiple alternatives for the same 
>> information, such as who someone's parents are, and also store 
>> metadata for each piece of information you have saying how sure you 
>> are about that or what your sources are.
>>
>> So, for example, you can reflect that one source says these people are 
>> the parents of this person while another source says that different 
>> people are their parents.  And even in the sake of non conflicts, 
>> there are different kinds of parents, such as birth vs adopted vs 
>> other options.  And records about marriages should be separate from 
>> those about births, because who someone's married to may not be who 
>> they have children with, etc.  Besically, if you can think of any 
>> reason why one kind of information doesn't automatically mean another 
>> kind, then store both explicitly and give separate reasons for each.
>>
>> Note that valid sources which you should explicitly state are "first 
>> hand experience" and "assumed most likely considering X" and "just 
>> heard it somewhere".  This in addition to regular printed/etc records 
>> you might cite. But for everything, say why you believe what you are 
>> writing is true, or what is claiming it to be.
>>
>> I hope this is helpful to you.
>>
>> Also, I strongly recommend you ditch MySQL and use Postgres 
>> (PostgreSQL) instead, especially now before you're starting; the 
>> latter is a much more reliable and better quality DBMS, which all the 
>> savvy people prefer over MySQL.  Version 8.4.4 is the latest stable 
>> with 9.0 being in beta now.
>>
>> And PHP?  In response to a Perl list?  Well, that's your call.  And I 
>> consider the choice of DBMS to be a more important choice than that of 
>> front end language anyway.  But I strongly recommend you look at the 
>> Catalyst web framework for Perl, which savvy developers use these days.
>>
>> -- Darren Duncan