|=--------------------------------------------------=|
     _________________  .____     ___________________
    /   _____/\_____  \ |    |    \_   _____/\______ \
    \_____  \  /  / \  \|    |     |    __)_  |    |  \
    /        \/   \_/.  \    |___  |        \ |    `   \
   /_______  /\_____\ \_/_______ \/_______  //_______  /
           \/        \__>       \/        \/         \/


   |=--------------------------------------------------=|
   . |03.02 - Table Definition                          .
   |=--------------------------------------------------=|

     The  very  first   real  object  representation  in
   database is a  table. The table is  divided into rows
   and  columns. If  You want  to represent  property of
   object  You  will  use  a  column.  If  You  want  to
   represent an instance of the object You will use row.

   TABLE Structure:

     COLUMN1    COLUMN2    COLUMN3    ...
     ---------  ---------  ---------  ...
     ROW_1      ROW_1      ROW_1      ...
     ROW_2      ROW_2      ROW_2      ...
     ROW_3      ROW_3      ROW_3      ...
     ...        ...        ...

     To define the table You have to use Data Definition
   Subset of SQL. The command to do so is:

     CREATE TABLE ...

     When You want  create a table You  must specify the
   columns.  Each column  has  to have  data type.  With
   SQLite You can choose between INTEGER, REAL, TEXT and
   BLOB.

     Each  of the  data type  represents either  natural
   number,  real number,  text  or  binary object.  Each
   column has to have it's name.

     We  will  try to  create  table  of information  on
   users. It will  contain User key, user  name and user
   password. The best practice is to create a table with
   primary key to distinct the unique objects instance.

     This  can  be achieved  either  by  natural key  or
   surrogate  key. In  the  above case  the natrual  key
   would be unique key across  the username. In the case
   of surrogate key we would add another column (in this
   case user's  key. That  would be an  artifical number
   from sequence. Usage of sequence would assure the key
   is unique  if we  would select new  key each  time we
   would insert a row.

     When  You  create  primary  key  it's  create  with
   constraint. This constraint ensures  there will be no
   two rows with the same key in the given table.

     We will try to create our very first table. It will
   have 3 columns. That will be:

     USER_KEY - user's unique numeric identification
     USER_NAME - name of the user
     USER_PASSWORD - user's password

     The  next task  is  to determine  the correct  data
   types for the given columns. We want user key to be a
   number. And the others columns to be as a text.

     This brings  as to  following DDL Query  to specify
   this table:

   > CREATE TABLE users (
     user_key integer primary key autoincrement,
     user_name text,
     user_password text
   );

     The syntax for column definition is followin. First
   we speicfy the  column name. Then we  give the column
   data  type.  The  rest  on  the  user_key  column  of
   integers is specification of  primary key. That means
   there cannot be  any two rows with the  same value in
   this  column. Autoincrement  caluse binds  the column
   to  the sequence  and  each consecutive  row is  then
   inserted with unique number.

     In next chapter we  will populate the created users
   table with some data.


   |=--------------------------------------------------=|
   |=--------------------------------------------------=|