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


|=--------------------------------------------------=|
. |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  following.
First we  specify 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  clause 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.


|=--------------------------------------------------=|
; v  | Thanks Linux and Vim | buy me a coffee   | o |;
|=--------------------------------------------------=|