前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[数据库基础]——编码标准之结构

[数据库基础]——编码标准之结构

作者头像
数据分析
发布2018-03-01 16:33:05
8050
发布2018-03-01 16:33:05
举报
文章被收录于专栏:数据分析数据分析

数据库是由若干表构成,表是由数据行构成,数据行由若干列组成。由于数据库这样的结构,这就要求我们在构成数据库表时,需要注意一些问题。现在提出一些注意的问题。

1. 主键

每一个表必须有一个主键列。大多数情况,存在一个命名为ID的列作为主键列

直接创建

代码语言:js
复制
   1:  CREATE TABLE Products
   2:  {
   3:  [ID] int NOT NULL PRIMARY KEY,
   4:  [Name] varchar(255) NOT NULL
   5:  }

添加主键约束

代码语言:js
复制
   1:  CREATE TABLE Products
   2:  {
   3:  [ID] int NOT NULL,
   4:  [Name] varchar(255) NOT NULL
   5:  }
   6:  ALTER TABLE Products
   7:  ADD CONSTRAINT pk_ProductsID PRIMARY KEY ([ID])

 还存在复合主键的情况,将多个列作为复合主键

直接创建

代码语言:javascript
复制
1  CREATE TABLE Products
2 {
3 [Name] varchar(255) NOT NULL,
4 [CreateTime] datetime NOT NULL,
5 [Address] varchar(255) NOT NULL
6 CONSTRAINT pk_Products PRIMARY KEY ([Name], [CreateTime])
7  }

添加主键约束

代码语言:javascript
复制
1 CREATE TABLE Products
2 {
3 [Name] varchar(255) NOT NULL,
4 [CreateTime] datetime NOT NULL,
5 [Address] varchar(255) NOT NULL
6 }
7 
8 ALTER TABLE Products
9 ADD CONSTRAINT pk_Products PRIMARY KEY ([Name], [CreateTime])

2. 第三范式

不要为了使用第三范式,而损失了数据库性能。有时,非规范化的数据库设计可能会比规范化的数据库设计性能更好。

代码语言:javascript
复制
第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的

3. TEXT、NTEXT、IMAGE类型

不要使用TEXT类型,而使用VARCHAR设置最大长度来代替。

代码语言:javascript
复制
   1:  [Name] varchar(MAX) NOT NULL

注:在 Microsoft SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。 避免在新开发中使用这些数据类型,需考虑修改当前已使用这些数据类型的应用程序改用 nvarchar(max)、varchar(max) 和 varbinary(max)。

4. VARCHAR类型

在VARCHAR类型列中,不要使用NULL作为默认值,最好使用一个空字符串代替。

代码语言:javascript
复制
   1:  [Name] varchar(255) DEFAULT ''

5. 默认值

数据列最好有默认值,最好不要使用NULL作为任何一个列的默认值。

代码语言:javascript
复制
   1:  [Name] varchar(255) DEFAULT '我没有名字'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档