zoukankan      html  css  js  c++  java
  • TSQL 基础学习 02

      1 数据库设计
      2 
      3        定义
      4 
      5               数据库设计就是将数据库中的数据实体以及这些数据实体之间关系,进行规划和结构化的过程
      6 
      7 在需求分析阶段,设计数据库的一般步骤
      8 
      9 A.     收集相信
     10 
     11 B.     标识实体
     12 
     13 C.     标记每个实体需要存储的详细信息/属性
     14 
     15 D.    标识实体之间的关系
     16 
     17 在概要设计阶段和详细设计阶段数据库设计步骤:
     18 
     19 1.      绘制E-R图
     20 
     21 2.      将E-R图转化为数据库模型图
     22 
     23 3.      应用三大范式规范化表设计
     24 
     25 数据库E-R图
     26 
     27        定义
     28 
     29               1.实体
     30 
     31                     现实世界中具有区分其他事物的特征或属性并与其他实体有联系的实体
     32 
     33               2.属性
     34 
     35                     实体的特征
     36 
     37               3.联系
     38 
     39                     两个或者多个实体之间的关联关系
     40 
     41               4.映射基数
     42 
     43                     表示通过联系与该实体关联的其他实体的个数
     44 
     45                     一对一:
     46 
     47                     X中的一个实体最多与Y中的一个实体关联,并且Y中的一个实体最多与X中的一个实体关联
     48 
     49                     一对多:
     50 
     51                                    X中的一个实体可以与Y中的任意数量的实体关联
     52 
     53                     多对一:
     54 
     55                                    X中的一个实体最多与Y中的一个实体关联
     56 
     57                     多对多:
     58 
     59                                    X中的一个实体可以与Y中的任意数量的实体关联
     60 
     61 关系数据库模式
     62 
     63        定义
     64 
     65              一个关系描述为属性名的集合称为关系模式.
     66 
     67              关系数据库模式是对关系数据库结构的描述,或者说是对关系数据库框架的描述
     68 
     69 规范设计
     70 
     71               第一范式(1NF,Normal Formate)
     72 
     73                     第一范式的目标是确保每列的原子性
     74 
     75               第二范式(2NF)
     76 
     77                     第二范式是在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关
     78 
     79               第三范式(3NF)
     80 
     81                       第三范式在第二范式的基础上更进一层.第三范式的目标是确保每列都和主键列直接相关,而不是间接相关
     82 
     83 满足三大范式之俗语
     84 
     85               第一范式
     86 
     87                     细到不能再分
     88 
     89               第二范式
     90 
     91                     必须和主键相关
     92 
     93               第三范式
     94 
     95                     各列必须和主键直接相关,不能间接相关
     96 
     97 数据库文件三大部分
     98 
     99               主数据文件:
    100 
    101                      *.mdf
    102 
    103               次要数据文件:
    104 
    105                      *.ndf
    106 
    107               日志文件:
    108 
    109                      *.ldf
    110 
    111               每个数据库至少要包含两个文件:一个数据库文件和一个日志文件
    112 
    113        经验
    114 
    115                为了保证数据的安全性,提高存储速度,我们应该将数据文件和日志文件分别放置在不同的驱动器上
    116 
    117 创建数据库
    118 
    119        语法
    120 
    121                      CREATE DATABASE数据库名
    122 
    123                      ON PRIMARY                                   --该选项是一个关键字,指定主文件组中的文件
    124 
    125                      (
    126 
    127                             NAME=’数据库名’                    --主数据文件的逻辑名称
    128 
    129                             FILENAME=’数据库路径’         –主数据文件的物理名称
    130 
    131                             SIZE=数据库大小                      –主数据库文件的初始大小
    132 
    133                             MAXSIZE=数据库最大大小       –主数据文件增长的最大值
    134 
    135                                                  UNLIMITED         --不受限制,大小为盘符的最大值
    136 
    137                             FILEGROWTH=’大小增长率’    --主数据文件的增长率,当值为0时不增长
    138 
    139                      )
    140 
    141  
    142 
    143                      LOG ON
    144 
    145                      (
    146 
    147                             NAME=’’,
    148 
    149                             FILENAME=’’,
    150 
    151                             SIZE=,
    152 
    153                             FILEGROWTH=
    154 
    155                      )
    156 
    157                      GO                                                   --和后续的SQL语句分隔开
    158 
    159 修改数据库
    160 
    161                      ALTER DATABASE数据库名
    162 
    163                      ADD FILE                                         --添加数据文件
    164 
    165                      (
    166 
    167                             …….
    168 
    169                      )
    170 
    171                      ADD LOG FILE                                 --添加日志文件
    172 
    173                      (
    174 
    175                             ……
    176 
    177                      )
    178 
    179 创建多个数据文件和多个日志文件
    180 
    181                      CREATE DATABASE数据库名
    182 
    183                             ON PRIMARY
    184 
    185                      (
    186 
    187                             …..
    188 
    189                      ),
    190 
    191                      (
    192 
    193                             …..
    194 
    195                      )
    196 
    197                      LOG ON
    198 
    199                      (
    200 
    201                             …..
    202 
    203                      ),
    204 
    205                      (
    206 
    207                             …..
    208 
    209                      )
    210 
    211 删除数据库
    212 
    213        语法
    214 
    215                      DROP DATABASE数据库名
    216 
    217 创建数据库前先判定一下
    218 
    219                      USE master        --设置当前为master数据库,以便访问指定表
    220 
    221                      GO
    222 
    223                      IF EXISTS(SELECT * FROM sysdatabasesWHERE name=’指定表名’)
    224 
    225                      DROP DATABASE数据库名
    226 
    227                      CREATE DATABASE数据库名
    228 
    229                      ON
    230 
    231                      (
    232 
    233                             …..
    234 
    235                      )
    236 
    237                      LOG ON
    238 
    239                      (
    240 
    241                             ….
    242 
    243                      )
    244 
    245                      GO
    246 
    247                     
    248 
    249                      EXISTS(查询语句)监测某个查询是否存在
    250 
    251 系统存储过程扩展
    252 
    253        xp_cmdshell是SQL Server扩展存储过程
    254 
    255               在操作系统的指定路径下创建文件夹
    256 
    257                      EXEC sp_configure ‘showadvanced options’,1  –在使用xp_cmdshell前先执行sp_configure
    258 
    259                      GO
    260 
    261                      RECONFIGURE                                             --重启RECONFIGURE
    262 
    263                      GO
    264 
    265                      EXEC sp_configure ‘xp_cmdshell’,1
    266 
    267                      GO
    268 
    269                      RECONFIGURE
    270 
    271                      GO
    272 
    273                      EXEC xp_cmdshell ‘MD D:\Student’           --用创建的xp_cmdshell来创建Student文件夹
    274 
    275                      GO
    276 
    277 查询当前数据库中是否有表
    278 
    279        语法
    280 
    281                     SELECT * FROM SYSOBJECTS WHERE XTYPE='U'
    282 
    283 创建表
    284 
    285        语法
    286 
    287                      CREATE TABLE   表名
    288 
    289                      (
    290 
    291                            列1 数据类型列的特征
    292 
    293                            列2 数据类型列的特征
    294 
    295                             ………
    296 
    297                      )
    298 
    299                     列的特征: 包括该列是否为空(NULL),是否是标识列(自动编号),是否有默认值/主键等
    300 
    301 修改表
    302 
    303        语法
    304 
    305                      ALTER TABLE表名
    306 
    307                             ALTER COLUMN列名 varchar(20) not null
    308 
    309                      GO
    310 
    311                      ALTER TABLE表名
    312 
    313                             ADD列名类型                               –创建一个列
    314 
    315                      GO
    316 
    317 删除表
    318 
    319        语法      
    320 
    321                      DROP TABLE表名
    322 
    323 数据库表存储位置
    324 
    325                     当前数据库系统表:sysobjects
    326 
    327                     所有数据库信息表:sysdatabases
    328 
    329 创建表的完整语法
    330 
    331                      USE数据库名
    332 
    333                      GO
    334 
    335                      IF EXISTS(SELECT * FROM sysobjectsWHERE name=’表名’)    //下面的3个表名必须一致
    336 
    337                             DROP TABLE表名
    338 
    339                      CREATE TABLE表名
    340 
    341                      (
    342 
    343                            列名类型是否允许为空约束名自动增长(种子,增长率)(IDENTITY(1,1))
    344 
    345                             ….
    346 
    347                      )
    348 
    349                      GO
    350 
    351        注意
    352 
    353                     使用DROP TABLE语句之前,首先要确认表中是否没有客户的业务数据了..
    354 
    355                     要养成随时备份数据库的习惯
    356 
    357 使用SQL语句创建和删除约束
    358 
    359        数据完整性
    360 
    361                     指数据的正确性和相容性
    362 
    363        实体完整性
    364 
    365                     唯一确定表中一行记录
    366 
    367        域完整性
    368 
    369                     表中特定列数据的有效性,以确保不会输入无效的数值
    370 
    371        引用完整性
    372 
    373                     插入或删除记录时,维护表之间定义的关系
    374 
    375        自定义完整性
    376 
    377                     定义不属于以上三种完整性的特定业务规则
    378 
    379 添加约束
    380 
    381        语法
    382 
    383                      ALTER TABLE表名
    384 
    385                      ADD CONSTRAINT约束名约束类型具体的约束说明
    386 
    387 常用约束即用法
    388 
    389        主键约束(Primary Key Constraint)
    390 
    391                      ALTER TABLE表名
    392 
    393                      ADD CONSTRAINT约束名 PRIMARY KEY(列名)       推荐约束名:PK_**
    394 
    395        非空约束(Not NULL)
    396 
    397                      NOT NULL
    398 
    399        唯一约束(Unique Constraint)
    400 
    401                      ALTER TABLE表名
    402 
    403                      ADD CONSTRAINT约束名 UNIQUE (列名)                       推荐约束名:UQ_**
    404 
    405        检查约束(Check Constaint)
    406 
    407                      ALTER TABLE表名
    408 
    409                      ADD CONSTRAINT约束名 CHECK (条件)                        推荐约束名:CK_**
    410 
    411        默认约束(Default Constraint)
    412 
    413                      ALTER TABLE表名
    414 
    415                      ADD CONSTRAINT约束名DEFAULT (‘默认值’) FOR列名 推荐约束名:DF_**
    416 
    417        外键约束(Foreign Key Constraint)
    418 
    419                      ALTER TABLE表名
    420 
    421                      ADD CONSTRAINT约束名                                               推荐约束名:FK_**
    422 
    423                             FOREIGN KEY(列名) REFERENCES表名(列名)
    424 
    425                      GO
    426 
    427 创建表的时候创建约束
    428 
    429                      CREATE TABLE表名
    430 
    431                      (
    432 
    433                            列名类型 NOT NULL 约束名(PRIMARY KEY)
    434 
    435                            列名类型 NOT NULL 约束名(UNIQUE)
    436 
    437                            列名类型 NOT NULL 约束名(DEFAULT) ‘默认值’
    438 
    439                             …….
    440 
    441                      )
    442 
    443 删除约束
    444 
    445        语法
    446 
    447                      ALTER TABLE表名
    448 
    449                             DROP CONSTRAINT约束名
    450 
    451 在已有表中添加约束
    452 
    453        方法
    454 
    455                     方法一:                               --数据正确性要求比较高
    456 
    457 1.      导出数据
    458 
    459 2.      在空记录表中添加约束
    460 
    461 3.      导入数据
    462 
    463                     方法二:                               --非金融行业
    464 
    465                                    ALTER TABLE表名 WITH NOCHECK 
    466 
    467                                           ADDCONSTRAINT约束名 CHECK (条件)
    468 
    469 同时添加多个约束
    470 
    471        例子
    472 
    473                     ALTER TABLEStudent
    474 
    475               ADD CONSTRAINT PK_StudentPRIMARYKEY (StudentNo),
    476 
    477                   CONSTRAINT UQ_StudentUNIQUE (IdentityCard),
    478 
    479                   CONSTRAINT DF_StudentDEFAULT ('地址不详')FOR Address,
    480 
    481                   CONSTRAINT CK_StudentCHECK(BornDate>1980-01-01),
    482 
    483                   CONSTRAINT FK_StudentFOREIGN KEY (GradeID)REFERENCES Grade(GradeID)
    484 
    485            GO

    转载出至:http://blog.csdn.net/heqingsong1/article/details/7495496
  • 相关阅读:
    Linux之vmware安装
    中秋之美
    青春无悔
    MSP430常见问题之指令系统类
    MSP430常见问题之LCD 显示驱动类
    MSP430常见问题之FLASH存储类
    MSP430常见问题之看门狗及定时器类
    MSP430常见问题之电源类
    MSP430常见问题之通信类
    MSP430常见问题之AD转换类
  • 原文地址:https://www.cnblogs.com/ciade/p/4788321.html
Copyright © 2011-2022 走看看