[edit] Welcome to the Muscatelli Research Center
Development
From Muscatelli Genealogy Wiki
Below I am going to try to disclose as much as I can about the programming code and logic. My hope is that other users will be able to both validate as well as add to the decisions I've already made about how Muscatelli Genealogy Wiki functions.
Please see Known Issues
Contents |
[edit] Architecture
- Programming Language: PHP
- Database: MySQL
- OS: Windows XP
- Webserver: Apache
I'm most comfortable with LAMP and should be switching back shortly.
[edit] Database Design
The genealogical data is centered around 3 main concepts: Person, Family, Event. All three of these tables have history tracking that enables time slicing. This means that when a change is made to a record, the entire row is copied, the change is applied to the new row and start/stop datetimes are set to know when the change is effective. Although this is more complicated when saving, it makes it super easy to read records as of any point in time as well as prune historical records when necessary.
[edit] Person
Person represents a single individual in history. Duplicate people are highly discouraged and largely impossible to maintain. Person and Individual mean the same thing on Muscatelli Genealogy Wiki.
[edit] Family
In the most simple terms, a Family is the union of two individuals (people). This could represent a legal marriage, homosexual partners, or just an unplanned pregnancy with a sexual partner. It's simply a link between person1 and person2. It could also be boy friend/girl friend relationship but that's probably not a very useful relationship to track for genealogy.
Every person can link to a biological family or an adopted family (adoptions are not implemented yet). You cannot link a person to a father without a marriage/family first.
[edit] Event
Events are significant activities that occur to an individual or family. There are a list of standard events such Birth, Death, and Marriage. There are also several religious events such as Baptism and LDS Endowment. Each event can have a single date (not ranges), location, and a half dozen other parameters including Source and Notes.
[edit] Stats
I may add a stats page:
SELECT YEAR(creation_date), MONTH(creation_date), count(*) FROM tree_person WHERE actual_start_date <= NOW() AND actual_end_date > NOW() GROUP BY YEAR(creation_date), MONTH(creation_date)
