# Gossamer Links Help

Table of Contents

Links SQL Developers Guide: Database Structure

The Gossamer Links database is made up of several tables. The main three tables that hold all the data are: Links, Category and Users. The definition of the tables are show below. They use mysql syntax for the types, but GT::SQL will map these to the best type in other databases.

The tables are joined together as follows:

Note: These represent the core tables. There are a few other for managing mailing lists and tracking the status of links, but these are the primary ones.

The descriptions for the main three tables are below:

Links
Column | Type | Notes
ID | INT | Primay Key, auto incremented integer
Title | CHAR(100) | Title of the link
URL | CHAR(255) | URL of the link
LinkOwner | CHAR(50) | Foreign key to Users table. Represents user who owns this link.
Add_Date | DATE | Date the link was added
Mod_Date | DATE | Date the link was last changed
Description | TEXT | A description about the link
Hits | SMALLINT | Number of time the link has been clicked on
isNew | ENUM('Yes','No') | Flag saying whether the link is new
isChanged | ENUM('Yes','No') | Flag saying whether the link has changed
isPopular | ENUM('Yes','No') | Flag saying whether the link is popular
isValidated | ENUM('Yes','No') | Flag saying whether the link has been validated
Rating | FLOAT | Current rating of link
Votes | SMALLINT | Total number of votes cast
Status | SMALLINT | Status of link (HTTP Status code 200 => OK, 404 => Not found, etc)
Date_Checked | DATETIME | Last time the link has been checked
Timestmp | TIMESTAMP | Timestamp of last time link was modified.

Category
Column | Type | Notes
ID | INT | Primary Key, Auto Incremented integer
Name | CHAR(255) | Name of the category
FatherID | INT | ID Number of parent category, 0 for a root level category.
Full_Name | CHAR(255) | A slash (/) separated list of category name. i.e. if the category is named Video Cards and is in Hardware which is in Computers, then Full_Name would be Computers/Hardware/Video_Cards
Description | TEXT | Optional description used in category listings.
Meta_Description | TEXT | Optional meta description for generated HTML pages
Meta_Keywords | TEXT | Optional meta keywords for generated HTML pages.
Header | TEXT | Optional category header
Footer | TEXT | Optional category footer
Number_of_Links | INT | Total count of all links in this category and subcategories
Has_New_Links | ENUM('Yes','No') | Flag telling whether there are any new links anywhere within this category.
Has_Changed_Links | ENUM('Yes','No') | Flag telling whether there are any changed links anywhere within this category.
Newest_Link | DATE | The date of the most current link within this category tree.
Timestmp | TIMESTAMP | Auto generated timestamp of the last time this record was updated.
Category_Template | CHAR | Contains the name of a custom template to use, or template set to use when displaying a category.

Users
Column | Type | Notes
Username | CHAR(50) | Primary key representing the users login name
Password | CHAR(25) | Users password (default is not encrypted)
Email | CHAR(75) | Email address
Name | CHAR(75) | Real Name
Validation | CHAR(20) | Optional validation code that gets sent to users email to ensure its a real email address.
Status | ENUM('Not Validated', 'Registered','Administrator') | Flag saying what class of user this is.
ReceiveMail | ENUM('Yes','No') | Flag saying whether the user should get any email or not.
Newsletter | ENUM('Yes','No') | Flag saying whether the user is subscribed to the newsletter or not.

Table of Contents