天猫整站J2EE项目之表结构设计
程序员文章站
2023-12-24 12:08:15
...
一.表关系图
二.表介绍
三.建表
表与表之间可能会存在约束关系,如:外键约束,所以我们先建立被依赖的表(即:外键指向的表),从前面的图中可以看出,我们应该先建立表User,Category
建表语句示例:
CREATE TABLE [用户名.]表名
(
列名 数据类型 [约束],
列名 数据类型 [约束],...
)
TABLESPACE 表空间名;
这里只举两个表:
1.用户表User
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
password varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
部分语句解释:
NOT NULL AUTO_INCREMENT 解释:id名不允许为空 且 值自动增长
DEFAULT NULL 解释:DEFAULT即默认值 ;DEFAULT NULL即默认值为null
PRIMARY KEY (id) 解释:id为该use表的主键
ENGINE=InnoDB 解释:mysql引擎使用innodb引擎(使我们设置的外键约束生效)
DEFAULT CHARSET=utf8 解释:数据库默认编码为utf-8
2.属性表property
外键约束定义外键的方法
方法1:列名+ references 主表(列名)
方法2: constraint 逻辑名 foreign key(列名) references 主表(列名)
方法3: foreign key references 主表(列名)
CREATE TABLE property (
id int(11) NOT NULL AUTO_INCREMENT,
cid int(11) DEFAULT NULL,
name varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_property_category FOREIGN KEY (cid) REFERENCES category (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
部分语句解释:
CONSTRAINT fk_property_category FOREIGN KEY (cid) REFERENCES category (id)
外键约束语句,逻辑名:fk_property_category,
列名(定义在property表中):cid ,主表(外键存在的表):category
列名(category中取得列名):id
该数据库完整sql语句:
DROP DATABASE IF EXISTS tmall;
CREATE DATABASE tmall DEFAULT CHARACTER SET utf8;
USE tmall;
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
password varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE category (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE property (
id int(11) NOT NULL AUTO_INCREMENT,
cid int(11) DEFAULT NULL,
name varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_property_category FOREIGN KEY (cid) REFERENCES category (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE product (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
subTitle varchar(255) DEFAULT NULL,
orignalPrice float DEFAULT NULL,
promotePrice float DEFAULT NULL,
stock int(11) DEFAULT NULL,
cid int(11) DEFAULT NULL,
createDate datetime DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_product_category FOREIGN KEY (cid) REFERENCES category (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE propertyvalue (
id int(11) NOT NULL AUTO_INCREMENT,
pid int(11) DEFAULT NULL,
ptid int(11) DEFAULT NULL,
value varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_propertyvalue_property FOREIGN KEY (ptid) REFERENCES property (id),
CONSTRAINT fk_propertyvalue_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE productimage (
id int(11) NOT NULL AUTO_INCREMENT,
pid int(11) DEFAULT NULL,
type varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_productimage_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE review (
id int(11) NOT NULL AUTO_INCREMENT,
content varchar(4000) DEFAULT NULL,
uid int(11) DEFAULT NULL,
pid int(11) DEFAULT NULL,
createDate datetime DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_review_product FOREIGN KEY (pid) REFERENCES product (id),
CONSTRAINT fk_review_user FOREIGN KEY (uid) REFERENCES user (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE order_ (
id int(11) NOT NULL AUTO_INCREMENT,
orderCode varchar(255) DEFAULT NULL,
address varchar(255) DEFAULT NULL,
post varchar(255) DEFAULT NULL,
receiver varchar(255) DEFAULT NULL,
mobile varchar(255) DEFAULT NULL,
userMessage varchar(255) DEFAULT NULL,
createDate datetime DEFAULT NULL,
payDate datetime DEFAULT NULL,
deliveryDate datetime DEFAULT NULL,
confirmDate datetime DEFAULT NULL,
uid int(11) DEFAULT NULL,
status varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_order_user FOREIGN KEY (uid) REFERENCES user (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE orderitem (
id int(11) NOT NULL AUTO_INCREMENT,
pid int(11) DEFAULT NULL,
oid int(11) DEFAULT NULL,
uid int(11) DEFAULT NULL,
number int(11) DEFAULT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_orderitem_user FOREIGN KEY (uid) REFERENCES user (id),
CONSTRAINT fk_orderitem_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;