建议是程序开发的关键步骤,是将显示业务转换成数据运转的重要步骤
掌握了建表的要领是独立编程的前提。
表的关系 建表
pk uk fk ck nn
1列上多个约束
1约束定义在多个列上
表的关系:
service
id account_id
2002 1011 (在account表中是 唯一)
2003 1011
2004 1011
实现1对多
1对多关系 pl,uk fk 合表,违反第3范式
fk(保证1对多关系)
多对多关系 增加一张表,定义两个 fk . 用2个一对多实现多对多 .合表违反第二范式。
例如:
student course
stu_cour (sid ------ > student(id))
(sid ------ > course(id))
分开:没有数据冗余,没有数据不一致,dml的负担不重,数据记录很纯粹。
select join 负担小,操作复杂,慢 规范化做法
合表: dml 负担重,select简单,快 去规范化做法
1对1 实现方式
合表:夫妻表 一夫一妻 id hname ... ... wname
分表: 夫表 妻表
夫表 妻表
pk fk uk pk
pid name id id wid name
夫表 id hname
pk(id)
fk(id) --------->妻表 (id)
妻表 id wname
pk(id)
建表的注意事项:
初始化数据库环境:
sql脚本:是一个纯文本文件。
表时存储于数据库中
sql脚本:是存储在 操作系统的硬盘中。
E-R 模型图
实体表示图
不同表的列名可以重:
列名表示: 用户名.表名.列名
不同表的约束名不能重 .
用户名 约束名 (最长30个字符)
标识名 (30个字符限制) (表名,列名,约束名)
表名,同义名,视图,索引,序列号的名字也不能重.
column realname format a10 用于 sqlplus
定制列格式输出的。