Hello, I was starting a php/mysql project in december and seeked for help on
this mailing list, it has been a great help for solving problems.
My application is a website where you can order meals from restaurants that
are within your postcode area (UK only)

The database structure has grown up to 30 tables. My biggest project yet.
I would like to validate the database structure to SQL experts, in
particular regarding mySQL indexes that I am not sure if it'll help or not,
as there should be lots of select query while browsing the
restaurants/menus.
And I wonder how it will manage when there'll be 1000 restaurants or more.

Here the sql dump of the main tables, please don't get scared ;-)

CREATE TABLE `tgl_address` (
  `addressID` int(11) NOT NULL auto_increment,
  `address` varchar(255) NOT NULL default '',
  `postcode` varchar(10) NOT NULL default '',
  `city` varchar(30) NOT NULL default 'London',
  `website` varchar(255) NOT NULL default '',
  `email` varchar(100) NOT NULL default '',
  `phone` varchar(20) NOT NULL default '',
  `fax` varchar(20) NOT NULL default '',
  `sms` varchar(20) NOT NULL default '',
  `contact` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`addressID`),
  UNIQUE KEY `addressID` (`addressID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_basket` (
  `basketID` int(11) NOT NULL auto_increment,
  `status` smallint(1) NOT NULL default '0',
  `delivery_takeaway` varchar(100) NOT NULL default '',
  `paymode` varchar(50) NOT NULL default '',
  `delivery_time` varchar(50) NOT NULL default '',
  `comment` varchar(255) NOT NULL default '',
  `added_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `totalprice` decimal(4,2) NOT NULL default '0.00',
  `userID` int(11) NOT NULL default '0',
  `restID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`basketID`),
  UNIQUE KEY `basketID` (`basketID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_basket_item` (
  `basket_itemID` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `comment` varchar(255) NOT NULL default '',
  `price` decimal(4,2) NOT NULL default '0.00',
  `itemID` int(11) NOT NULL default '0',
  `basketID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`basket_itemID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_basket_item_size` (
  `basket_item_sizeID` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `price` float(4,2) NOT NULL default '0.00',
  `coef_topping` float(6,4) NOT NULL default '1.0000',
  `itemID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`basket_item_sizeID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_card` (
  `cardID` int(11) NOT NULL auto_increment,
  `name` varchar(40) NOT NULL default '',
  `description` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`cardID`),
  UNIQUE KEY `styleID` (`cardID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_course` (
  `courseID` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `image` varchar(100) NOT NULL default '',
  `rank` tinyint(3) unsigned NOT NULL default '0',
  `restID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`courseID`),
  UNIQUE KEY `typeID` (`courseID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_item` (
  `itemID` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `price` decimal(4,2) NOT NULL default '0.00',
  `single_choice` tinyint(1) NOT NULL default '0',
  `courseID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`itemID`),
  UNIQUE KEY `mealID` (`itemID`),
  KEY `itemID` (`itemID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_item_size` (
  `item_sizeID` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `price` float(4,2) NOT NULL default '0.00',
  `coef_topping` float(6,4) NOT NULL default '1.0000',
  `itemID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`item_sizeID`),
  KEY `itemID` (`itemID`),
  KEY `itemID_2` (`itemID`),
  KEY `itemID_3` (`itemID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_paymode` (
  `paymodeID` int(11) NOT NULL auto_increment,
  `paymode` varchar(255) NOT NULL default '',
  `rank` tinyint(3) unsigned NOT NULL default '0',
  PRIMARY KEY  (`paymodeID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_postcode` (
  `postcodeID` int(11) NOT NULL auto_increment,
  `name` varchar(10) NOT NULL default '',
  `description` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`postcodeID`),
  UNIQUE KEY `styleID` (`postcodeID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rel_basket_item_topping` (
  `basket_itemID` int(11) NOT NULL default '0',
  `toppingID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`basket_itemID`,`toppingID`),
  KEY `basket_itemID` (`basket_itemID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rel_item_topping` (
  `itemID` int(11) NOT NULL default '0',
  `toppingID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`itemID`,`toppingID`),
  KEY `itemID` (`itemID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rel_rest_card` (
  `restID` int(11) NOT NULL default '0',
  `cardID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`restID`,`cardID`),
  KEY `restID` (`restID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rel_rest_paymode` (
  `restID` int(11) NOT NULL default '0',
  `paymodeID` int(11) NOT NULL default '0',
  KEY `restID` (`restID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rel_rest_postcode` (
  `restID` int(11) NOT NULL default '0',
  `postcodeID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`restID`,`postcodeID`),
  KEY `restID` (`restID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rel_rest_time` (
  `restID` int(11) NOT NULL default '0',
  `timeID` int(11) NOT NULL default '0',
  `weekday` tinyint(4) NOT NULL default '0',
  KEY `restID` (`restID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_rest` (
  `restID` int(11) NOT NULL auto_increment,
  `active` tinyint(1) NOT NULL default '1',
  `name` varchar(255) NOT NULL default '',
  `istakeaway` char(1) NOT NULL default '1',
  `isdelivery` char(1) NOT NULL default '1',
  `description` text NOT NULL,
  `delivery_time` tinyint(3) NOT NULL default '30',
  `delivery_charge` decimal(4,2) NOT NULL default '0.00',
  `delivery_min_order` decimal(4,2) NOT NULL default '0.00',
  `img_badge` varchar(255) NOT NULL default '',
  `img_picture` varchar(255) NOT NULL default '',
  `openinghours` varchar(255) NOT NULL default '',
  `addressID` int(11) NOT NULL default '0',
  `styleID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`restID`),
  UNIQUE KEY `restaurantID` (`restID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_skin` (
  `skinID` int(11) NOT NULL auto_increment,
  `active` tinyint(1) NOT NULL default '1',
  `ad` varchar(100) NOT NULL default '',
  `ad_url` varchar(100) NOT NULL default '',
  `logo` varchar(100) NOT NULL default '',
  `web` varchar(100) NOT NULL default '',
  `prim_col1` varchar(6) NOT NULL default '',
  `prim_col2` varchar(6) NOT NULL default '',
  `prim_col3` varchar(6) NOT NULL default '',
  `prim_col4` varchar(6) NOT NULL default '',
  `dark_col1` varchar(6) NOT NULL default '',
  `dark_col2` varchar(6) NOT NULL default '',
  `corner1` varchar(100) NOT NULL default '',
  `corner2` varchar(100) NOT NULL default '',
  `scrolltop1` varchar(100) NOT NULL default '',
  `scrolltop2` varchar(100) NOT NULL default '',
  `restID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`skinID`),
  UNIQUE KEY `styleID` (`skinID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_style` (
  `styleID` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `photo` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`styleID`),
  UNIQUE KEY `styleID` (`styleID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_time` (
  `timeID` int(11) NOT NULL auto_increment,
  `time` time NOT NULL default '00:00:00',
  PRIMARY KEY  (`timeID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_topping` (
  `toppingID` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `price` float(4,2) NOT NULL default '0.00',
  `courseID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`toppingID`)
) TYPE=MyISAM;

CREATE TABLE `tgl_user` (
  `userID` int(11) NOT NULL auto_increment,
  `firstname` varchar(50) NOT NULL default '',
  `lastname` varchar(50) NOT NULL default '',
  `address` varchar(255) NOT NULL default '',
  `postcode` varchar(10) NOT NULL default '',
  `phone` varchar(30) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  `mobile` varchar(30) NOT NULL default '',
  `subscribe` tinyint(1) NOT NULL default '1',
  `referer` varchar(100) NOT NULL default '',
  `added_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `city` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`userID`),
  UNIQUE KEY `userID` (`userID`)
) TYPE=MyISAM;

That's it, I've deleted some tables that have nothing original
Cheers !

Damien



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to