Re: Simple Database Design Problem
Posted by: Rick James
Date: June 15, 2011 07:31PM

Disambiguation of persons is beyond the scope of a database engine.
* Alternate spellings
* Nicknames (Superfreak)
* Initials instead of names (R. James)
* etc.
Those lead to having two records of one "person"

Date of birth helps in assuring that two persons are the same.

In the database, you should move quickly to a person_id, or author_id, etc, where the id is an AUTO_INCREMENT. The `name` field should be indexed (not UNIQUE) to assist in lookups during the disambiguation phase.

If you don't have control over names...

To do a "complete" job, you need a UI (or other mechanism) for allowing a human to examine two `person` records and declare that they should be merged. And similarly, have a way to split a person into two persons.

For now, simply assume that a different name is a different thing (person, template, etc.)

If you do have control over names...

If you allow a user to "name" a template (etc), then be sure to direct him down two paths:
* Create new template -- squawk if the name already exists.
* Locate an existing template -- squawk if the name does NOT exist.
Users will be comfortable with that.

In either case, use an AUTO_INCREMENT, PRIMARY KEY, id under the covers.

Options: ReplyQuote

Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.