Home   Ularu   Spice   ip-poster   gWizard   Connacht   Contact  
 

Connacht Database Tables

Connacht is a multi-user, multi-company web site. As a result it is necessary to ensure that clients of one company cannot be seen by employees or officers of another company. This is done by storing a unique company ID with both the user and each client record - the user is only allowed to see a client record if he or she is an employee or officer of the same company that owns the client record. (The current implementation only allows a user to be a member of one company)

Connacht implements client record versioning. Each time the client record is updated, the version number on the record is updated. If two users attempt to update the same client details at the same time, only one will succeed. The second user will receive a message saying that client details have been updated by another user and  his data is now out-of-date. The second user must then refresh the webpage and redo his changes before they can be resubmitted.

The alternative is that a second user overwrites the first users changes without being aware of it. The first user would almost certainly attribute this behaviour to a bug in the application.

No versioning is implemented on the User table - a User should correspond to a single person so it is unlikely that a single user would logon twice and then proceed to update his details twice. 

Client Table

SQL Create Table Statement

 

CREATE TABLE [Clients] 
(
	[ClientID] [int] IDENTITY (1, 1) NOT NULL ,
	[Version] [int] NOT NULL ,
	[CompanyID] [int] NOT NULL ,
	[Name] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[Address1] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[Address2] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[PostCode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[email] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Telephone] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	CONSTRAINT [PK_Clients] PRIMARY KEY  CLUSTERED <
	(
		[ClientID]
	)  ON [PRIMARY] ,
	CONSTRAINT [IX_Clients] UNIQUE  NONCLUSTERED
	(
		[Name]
	)  ON [PRIMARY]
) ON [PRIMARY]
 

Fields

ClientID - A unique client ID generated by the database when the record is first inserted, currently an integer (32bits).
Version - The version number used to detect updates based on out-of-date information. The version number starts at 0 and is incremented every time the client record is updated.
CompanyID - a unique ID specifying which company "owns" the record. 
Name - the clients name.
Address1 - the first line of the user's address.
Address2 - the second line of the user's address.
PostCode - the clients post code.
email - the client's email address. Optional (field can be null)
Telephone - the client's telephone number. Optional (field can be null)

 

User Table

SQL Create Table Statement

 

CREATE TABLE [Users] 
(
	[Login] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[CompanyID] [int] NOT NULL ,
	[Title] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[FirstName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[Surname] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[Address1] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[Address2] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[PostCode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	[email] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Telephone] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
	[Password] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
	CONSTRAINT [PK_Users] PRIMARY KEY  CLUSTERED 
	(
		[login]
	)  ON [PRIMARY] 
) ON [PRIMARY]
 

Fields

Login - the user's first name. 
CompanyID - a unique company ID, currently an integer (32 bits).
FirstName - the user's first name. 
Surname - the user's surname. 
Address1 - the first line of the user's address.
Address2 - the second line of the user's address.
PostCode - the user's post code.
email - the user's email address.  Optional (field can be null)
Telephone - the user's telephone number. Optional (field can be null)
Password - the user's password. 

Connacht Sample Home