sql数据库开发-15:建表

建议是程序开发的关键步骤,是将显示业务转换成数据运转的重要步骤


掌握了建表的要领是独立编程的前提。

 

表的关系   建表


  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

      定制列格式输出的。
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值