----- Original Message ----- 
From: "Gloria L. McMillan" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, June 15, 2004 11:16 AM
Subject: Test greeting & question


> Hi, once again!
> \I tend to get on and off this list.
>
> I have myCC and I was wondering what this means in my CREATE file.
>
> ) TYPE=MyISAM;
>
> Could somebody please translate this into English?
>
The 'TYPE=' parameter identifies the TYPE or ENGINE used to store your data.
(Until recently, the term used was 'TYPE' but now they prefer 'ENGINE' and
will probably drop support for the 'TYPE' syntax in MySQL 5.) Check out
http://dev.mysql.com/doc/mysql/en/CREATE_TABLE.html. About halfway down the
page, you'll see an HTML table that lists all of the Engine types that are
currently available in MySQL.

Each type/engine has different features/capabilities. There are links
describing each type in that HTML table. Basically, you have to select the
Engine that you prefer for your tables. That is a non-trivial decision so
you'll want to read the description of each engine type before selecting the
engine you want for your table(s).

> I am interested in the UNIQUE property.
>
> Would making my replies to survey subject to UNIQUE make thej less easy to
> enter in multiples for purposes of ballot-stuffing?
>
I think you'd be better using a PRIMARY KEY than UNIQUE to prevent
duplicates in a table. They are closely related concepts but not quite the
same.

A primary key's main function is to ensure uniqueness of rows in a
relational table. A primary key can contain one or many columns. A table can
only have a *single* primary key (or none at all). Most inserts, updates, or
deletes are done on the basis of the primary key and ensure that only a
single row is affected by the insert, update, or delete.

A unique key also indicates uniqueness of a value within a column. A unique
key can also contain one or many columns. A table can have *many* unique
keys.

For example, consider an Employee table. Most Employee tables that you see
will have an internally-generated employee number that will serve as the
primary key. By internally generated, I mean that a person or program in the
organization generates it. Primary keys that are short,
internally-generated, stable and reside in a single column are preferred
over primary keys that are long, multi-column, externally-generated and
subject to change. That's why the employee's name isn't a very good choice
for a primary key: it could change (in the case of a woman marrying and
taking her husband's name or in the case of someone changing their name
legally); it is multicolumn (a primary key based on the last name alone
would fall apart pretty quickly: as soon as you tried to add a second
'Smith' or 'Jones', you'd realize that a last name made a lousy primary
key); and it is long, which makes it easier to mistype. That is not to say
that primary keys are always generated internally; that is far from true,
although it is quite common.

That same employee table may have one or more unique keys. For instance, a
Social Security Number for each employee might be stored on the table and
would also represent a unique quantity. However, it would be less desireable
than an employee number as a primary key because there is some risk that it
could change. For instance, the government might issue a new SSN if the
employee loses her SSN card. However, the SSN is still a unique value (or
should be!!) so it should be defined as unique.

By the same token, the employee may have a private parking space in the
company lot so their parking space number could also be a unique column in
the table, assuming that parking spaces weren't shared by multiple
employees, as might be the case for shift workers.

Primary keys are normally determined via a process called "normalization"
which is way beyond the scope of this note to explain. It is a data
modelling technique that uses "normal forms" to help decide which columns
belong in each table and what the primary key of each table is, among other
things.

Normalization is not terribly hard to learn but is involved enough that it
just doesn't lend itself to a note like this. I would suggest you do a
Google search on "normalization" to find a tutorial that will guide you
through the steps involved. I've never looked for one - I already know how
to normalize ;-) - but there must be some tutorials out there that will show
you how to do it. Very few professionals go beyond Third or Fourth Normal
Form so don't go further than that in the tutorial unless you really find it
interesting.

For your situation, you will want to consider carefully what the primary key
of your survey table is, then define the column(s) that make up the key as a
primary key. This will likely be problematic assuming your survey is
anonymous. You're not likely to ask for - or receive - the full name or SSN
or phone number of the person completing the survey so you will have to
improvise something that precludes the same person from completing
additional surveys. I'm really not sure what you could use short of
biometrics (fingerprints, retina scans) that would really be reliable.

Rhino


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to