Hello Mark,

> I am looking at OSCommerce for design comparisons and wonder what others 
> think about the below table design,
> 
> CREATE TABLE `customers` (
>   `customers_id` int(11) NOT NULL auto_increment,
>   `customers_gender` char(1) NOT NULL,
>   `customers_firstname` varchar(32) NOT NULL,
>   `customers_lastname` varchar(32) NOT NULL,
>   `customers_dob` datetime NOT NULL default '0000-00-00 00:00:00',
>   `customers_email_address` varchar(96) NOT NULL,
>   `customers_default_address_id` int(11) default NULL,
>   `customers_telephone` varchar(32) NOT NULL,
>   `customers_fax` varchar(32) default NULL,
>   `customers_password` varchar(40) NOT NULL,
>   `customers_newsletter` char(1) default NULL,
>   PRIMARY KEY  (`customers_id`)
> 
> 
> 
> CREATE TABLE `orders` (
>   `orders_id` int(11) NOT NULL auto_increment,
>   `customers_id` int(11) NOT NULL,
>   `customers_name` varchar(64) NOT NULL,
>   `customers_company` varchar(32) default NULL,
>   `customers_street_address` varchar(64) NOT NULL,
>   `customers_suburb` varchar(32) default NULL,
>   `customers_city` varchar(32) NOT NULL,
>   `customers_postcode` varchar(10) NOT NULL,
>   `customers_state` varchar(32) default NULL,
>   `customers_country` varchar(32) NOT NULL,
>   `customers_telephone` varchar(32) NOT NULL,
>   `customers_email_address` varchar(96) NOT NULL,
>   `customers_address_format_id` int(5) NOT NULL,
>   `delivery_name` varchar(64) NOT NULL,
>   `delivery_company` varchar(32) default NULL,
>   `delivery_street_address` varchar(64) NOT NULL,
>   `delivery_suburb` varchar(32) default NULL,
>   `delivery_city` varchar(32) NOT NULL,
>   `delivery_postcode` varchar(10) NOT NULL,
>   `delivery_state` varchar(32) default NULL,
>   `delivery_country` varchar(32) NOT NULL,
>   `delivery_address_format_id` int(5) NOT NULL,
>   `billing_name` varchar(64) NOT NULL,
>   `billing_company` varchar(32) default NULL,
>   `billing_street_address` varchar(64) NOT NULL,
>   `billing_suburb` varchar(32) default NULL,
>   `billing_city` varchar(32) NOT NULL,
>   `billing_postcode` varchar(10) NOT NULL,
>   `billing_state` varchar(32) default NULL,
>   `billing_country` varchar(32) NOT NULL,
>   `billing_address_format_id` int(5) NOT NULL,
>   `payment_method` varchar(32) NOT NULL,
>   `cc_type` varchar(20) default NULL,
>   `cc_owner` varchar(64) default NULL,
>   `cc_number` varchar(32) default NULL,
>   `cc_expires` varchar(4) default NULL,
>   `last_modified` datetime default NULL,
> `date_purchased` datetime default NULL,
>   `orders_status` int(5) NOT NULL,
>   `orders_date_finished` datetime default NULL,
>   `currency` char(3) default NULL,
>   `currency_value` decimal(14,6) default NULL,
>   PRIMARY KEY  (`orders_id`)
> 
> Why have customer info in both? Delivery and Billing info makes sense, 
> but why the redundant info in both? Anyone got views on this? Do/would 
> you do it differently, and could you tell us why? Cheers.

Well, one reason could be, for example, that the address changes
over time and they want to know what address the customer was
when the order was processed.

Hogwash IMO though ;-)

I wouldn't enter the "delivery" and "billing" info either, but create
some sort of "customer_address" table or "order_customer_address"
in which records would be inserted if and only if the addresses used
for billing and delivery differ from the normal customer address.

Martijn Tonies
Database Workbench - development tool for MySQL, and more!
Upscene Productions
http://www.upscene.com
My thoughts:
http://blog.upscene.com/martijn/
Database development questions? Check the forum!
http://www.databasedevelopmentforum.com

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

Reply via email to