From The Mana World
((fixed up last update))
m (Formatting)
Line 1: Line 1:
== Server Database Specification: ==
== SQL[ite] Table Specifications ==
'''SQL[ite] Table Specifications:'''
 
* Account Information Table
==== Account Information Table ====
 
<pre>
create table tmw_accounts (
create table tmw_accounts (
     -- Username
     -- Username
Line 10: Line 12:
     email varchar(128) unique not null
     email varchar(128) unique not null
);
);
</pre>
==== Character/Player Information Table ====


* Character/Player Information Table
<pre>
create table tmw_characters (
create table tmw_characters (
     -- [Unique] character name
     -- [Unique] character name
Line 38: Line 43:
     foreign key(user) references tmw_accounts(user)
     foreign key(user) references tmw_accounts(user)
);
);
</pre>
==== Item type table ====


* Item type table
<pre>
create table tmw_base_items (
create table tmw_base_items (
     -- Name of item
     -- Name of item
Line 46: Line 54:
     weight int not null
     weight int not null
);
);
</pre>
==== In-game object table ====


* In-game object table
<pre>
create table tmw_items (
create table tmw_items (
     id int unique primary key not null,
     id int unique primary key not null,
Line 55: Line 66:
     foreign key (name) references tmw_base_items(name)
     foreign key (name) references tmw_base_items(name)
);
);
</pre>
==== Character inventory table ====


* Character inventory table
<pre>
create table tmw_inventory (
create table tmw_inventory (
     -- Item
     -- Item
Line 66: Line 80:
     foreign key(name) references tmw_characters(name)
     foreign key(name) references tmw_characters(name)
);
);
</pre>
==== Character equipment table (items which are equipped) ====


* Character equipment table (items which are equipped)
<pre>
create table tmw_equipment (
create table tmw_equipment (
     -- Item
     -- Item
Line 79: Line 96:
     foreign key(name) references tmw_characters(name)
     foreign key(name) references tmw_characters(name)
);
);
</pre>


 
== Example queries ==
''Example queries''
* Count total number of in-game objects
* Count total number of in-game objects
    select count(*) from tmw_items;
select count(*) from tmw_items;


* Count total number of item types
* Count total number of item types
    select count(*) from tmw_base_items;
select count(*) from tmw_base_items;


* List player inventory
* List player inventory
    select distinct tmw_items.id, tmw_items.name
select distinct tmw_items.id, tmw_items.name
    from tmw_items, tmw_inventory
from tmw_items, tmw_inventory
    where tmw_items.id = tmw_inventory.id
where tmw_items.id = tmw_inventory.id
    and tmw_inventory.name = 'nym the great';
and tmw_inventory.name = 'nym the great';


* Find weight of player inventory
* Find weight of player inventory
    select sum(tmw_base_items.weight)
select sum(tmw_base_items.weight)
    from tmw_base_items, tmw_items, tmw_inventory
from tmw_base_items, tmw_items, tmw_inventory
    where tmw_base_items.name = tmw_items.name
where tmw_base_items.name = tmw_items.name
    and tmw_items.id = tmw_inventory.id
and tmw_items.id = tmw_inventory.id
    and tmw_inventory.name = 'nym the great';
and tmw_inventory.name = 'nym the great';

Revision as of 19:37, 7 June 2005

SQL[ite] Table Specifications

Account Information Table

create table tmw_accounts (
    -- Username
    user varchar(32) unique primary key not null,
    -- Password hash
    password varchar(32) not null,
    -- Email address
    email varchar(128) unique not null
);

Character/Player Information Table

create table tmw_characters (
    -- [Unique] character name
    name varchar(32) unique primary key not null,
    -- Username
    user varchar(32) not null,
    -- Player information
    gender int not null,
    level int not null,
    money int not null,
    -- Coordinates & map
    x int not null,
    y int not null,
    map text not null,
    -- Statistics
    strength int not null,
    agility int not null,
    vitality int not null,
    intelligence int not null,
    dexterity int not null,
    luck int not null,
    -- Player equipment
    --inventory blob not null,
    --equipment blob not null,
    -- Table relationship
    foreign key(user) references tmw_accounts(user)
);

Item type table

create table tmw_base_items (
    -- Name of item
    name varchar(32) unique primary key not null,
    -- Item attributes here
    weight int not null
);

In-game object table

create table tmw_items (
    id int unique primary key not null,
    name varchar(32) not null,
    -- Special (unique) item attribues
    -- Table relationship
    foreign key (name) references tmw_base_items(name)
);

Character inventory table

create table tmw_inventory (
    -- Item
    id int not null,
    -- Character who has the item
    name varchar(32) not null,
    -- Table relationship
    foreign key(id) references tmw_items(id),
    foreign key(name) references tmw_characters(name)
);

Character equipment table (items which are equipped)

create table tmw_equipment (
    -- Item
    id int not null,
    -- Character who has item
    name varchar(32) not null,
    -- Item slot equipped on
    slot int not null,
    -- Table relationship
    foreign key(id) references tmw_items(id),
    foreign key(name) references tmw_characters(name)
);

Example queries

  • Count total number of in-game objects
select count(*) from tmw_items;
  • Count total number of item types
select count(*) from tmw_base_items;
  • List player inventory
select distinct tmw_items.id, tmw_items.name
from tmw_items, tmw_inventory
where tmw_items.id = tmw_inventory.id
and tmw_inventory.name = 'nym the great';
  • Find weight of player inventory
select sum(tmw_base_items.weight)
from tmw_base_items, tmw_items, tmw_inventory
where tmw_base_items.name = tmw_items.name
and tmw_items.id = tmw_inventory.id
and tmw_inventory.name = 'nym the great';