这里有一些东西可以让你开始......
- (P) 表示主键
- (F table.column) 表示外键和它应该指向的 table.column
我们需要一个表来存储地址:客户账单地址、客户送货地址等。
addresses
id unsigned int(P)
street1 varchar(75) // 123 South Main Street, etc.
street2 varchar(75) // Apt A, etc.
city_id unsigned int(F cities.id)
zip varchar(6) // 12345, A1A 1A1, etc. (CA, MX and US)
最好让用户从值列表中进行选择,而不是让他们自己输入值(即城市名称)......
cities
id unsigned int(P)
state_id unsigned int(F states.id)
name varchar(50) // Omaha, Detroit, Tampa, etc.
同样,最好提供可供选择的有效值,而不是让用户输入自己的值……参见ISO 3166-1。
countries //
id char(2)(P) // CA, MX, US, etc.
iso3 char(3)(U) // CAN, MEX, USA, etc.
iso_num char(3)(U)
name varchar(50)(U) // Canada, Mexico, United States, etc.
您肯定会希望在此表中添加更多信息,但这里有一些列可以帮助您入门……请参阅PHP 的 crypt() 函数了解如何对密码进行哈希处理。
customers
id unsigned int(P)
first_name varchar(50) // John, Mary, etc.
middle_name varchar(50) // Quincy, Louise, etc.
last_name varchar(50) // Doe, Public, etc.
email varchar(255) // me@privacy.com, etc.
username varchar(32) // blahblah, etc.
password varbinary(255) // hashed
...
此表将客户连接到无限数量的地址。
customers_addresses
id unsigned int(P)
customer_id unsigned int(F customers.id)
address_id unsigned int(F addresses.id)
您将希望向此表添加更多信息,但这里有一些列可以帮助您入门...
orders
id unsigned int(P)
created datetime // 2013-08-28 13:24:53, etc.
shipped datetime // 2013-08-28 15:12:10, etc.
customer_id unsigned int(F customer.id)
ship_address_id unsigned int(F addresses.id)
bill_address_id unsigned int(F addresses.id)
我们需要一个表格,将订单号与每个订单中的所有产品联系起来。
orders_products
id unsigned int(P)
order_id unsigned int(F orders.id)
product_id unsigned int(F products.id)
您将希望向此表添加更多信息,但这里有一些列可以帮助您入门...
products
id unsigned int(P)
name varchar(50) // Widget A, Widget B, etc.
height unsigned int // height in inches, centimeters, whatever.
width unsigned int // width in inches, centimeters, whatever.
depth unsigned int // depth in inches, centimeters, whatever.
weight double // weight in ounces, pounds, grams, kilograms, whatever.
与城市和国家一样,让用户从选择列表中进行选择,而不是输入潜在的错误数据。参见ISO 3166-2。
states
id unsigned int(P)
country_id char(2)(F countries.id)
code char(2) // AL, NF, NL, etc.
name varchar(50) // Alabama, Newfoundland, Nuevo León, etc.