设为首页 加入收藏

TOP

10分钟掌握数据库建模(三)
2014-11-24 07:14:03 来源: 作者: 【 】 浏览:62
Tags:10分钟 掌握 数据库 建模
AT=DEFAULT

AUTO_INCREMENT=1

本版控制表,用于记录每次变动

CREATE TABLE `article_history` (

`id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,

`article_id` MEDIUMINT(8) UNSIGNED NOT NULL,

`cat_id` SMALLINT(5) NOT NULL DEFAULT '0',

`title` VARCHAR(150) NOT NULL DEFAULT '',

`content` LONGTEXT NOT NULL,

`author` VARCHAR(30) NOT NULL DEFAULT '',

`keywords` VARCHAR(255) NOT NULL DEFAULT '',

PRIMARY KEY (`id`),

INDEX `article_id` (`article_id`)

)

ENGINE=MyISAM

ROW_FORMAT=DEFAULT

AUTO_INCREMENT=1

版本控制触发器

DROP TRIGGER article_history;

DELIMITER //

CREATE TRIGGER article_history BEFORE update ON article FOR EACH ROW

BEGIN

INSERT INTO article_history SELECT * FROM article WHERE article_id = OLD.article_id;

END; //

DELIMITER;

我的建表规则很多是基于Form建模(但不是全部都按form走,这样说让各位好理解),例如用户登录表单:

user

password

submit

当做用户认证的时候只需要读user即可。此时profile空闲

当点击编辑个人信息的时候才读取profile表。

用户user表只有user,passwd等几个字段,性能远比一个大user表好。

像MySQL这样的数据库,有些操作会锁表,将user 分为两个1:1的表可以避开一部分锁表影响

现在我们来设计个order(订单系统表),会用到上面的product与user表。

order 表

id

user_id

sn 订单编号

...

created 创建时间

order_item表

id

order_id

product_id

....

当点击我的订单时查询order表,当点击定点细节时读order_item表。以此类推,不多举例。

延伸阅读

http://netkiller.sourceforge.net

http://netkiller.github.com

首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇讲解更改MySQL数据库root密码的具.. 下一篇Mysql ON子句和USING子句

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)