美文网首页Sql数据库
如何创建合理的数据库表?

如何创建合理的数据库表?

作者: IT飞牛 | 来源:发表于2017-11-22 12:38 被阅读59次

在创建数据库表之前,首先要考虑清楚以下几点:

1、程序要实现哪些功能?

规划好整体功能模块,例如我要做一个任务系统,那么需要这些功能:我接收的任务,我发布的任务,创建任务,编辑任务,删除任务,搜索任务,数据统计,用户管理,任务类型管理,客户管理,管理员管理,系统设置。

2、细化每个功能,设计功能页面,或者写出静态页面

这一步设计或者写静态页面,是程序最终的一个表现形态。

3、设计数据库

根据前两个步骤,考虑数据库设计:
a、需要创建几张表?
b、每张表需要哪些字段?
存在一对多关系的表,先建立好主从表中必备字段,然后考虑优化搜索需要用到的字段
c、每个字段是否有默认值?
d、主键是什么?
一般主键都只有一个,联合主键很少使用
e、是否需要建立索引?
主键字段默认是唯一索引。
如果需要建立非聚集索引(非唯一索引):
本着尽可能少的建立索引的原则,我们去考虑索引字段。
因为索引能够提升搜素效率,但是会影响写操作的效率,因为每次写操作,都会更新索引表。

建索引有几条原则:

假如有学校、班级和学生,schoolid、banji、xuesheng三张表。
School:schoolid、name
Banji有字段:banjiid schoolid bjname
Xuesheng有字段:id schoolid banjiid name age

1、目前记录数量在100条以下,禁止建立索引。
2、有关联关系,且经常要被where筛选的字段要加索引。如:Banji中schoolid字段,Xuesheng中schoolid、banjiid字段
Sql语句中:

A and B and C,B会在A的筛选结果中搜索,C会在A and B的筛选结果中搜索。ABC的顺序建议是:能使筛选结果最小化的条件放在前面;带索引的字段放在前面;
A or B or C,假如ABC中有一个字段没有建立索引,那么就会引起全表扫描。

有无索引int类型字段千外级数据执行耗时测试:
//id是主键,即使用户id是最后要条数据,耗时也是0ms
select * from A_user where id=用户id
//roleid不是索引,会全表搜索,耗时在800ms左右
select * from A_user where roleid=角色id

相关文章

  • 如何创建合理的数据库表?

    在创建数据库表之前,首先要考虑清楚以下几点: 1、程序要实现哪些功能? 规划好整体功能模块,例如我要做一个任务系统...

  • XUtils3框架之数据库操作

    如何创建删除一张表 如何对表进行增删查改操作如何创建数据库和删除数据库建立一表对一表,多表对一表,多表对多表的外键...

  • 应用T-SQL查询数据

    创建Students数据库 在Students数据库中,创建 StuInfo表,StuMarks表 检查创建的表中...

  • MySql join那些事

    创建数据库 创建表 员工表 部门表

  • 数据库第一周

    mysql的命令和查询语句: 登陆系统 数据库的操作 如何创建表 关于表的操作: DML:数据库操作语言:对于表中...

  • sqlite3命令行操作db巩固

    创建数据库 查看数据库 创建表 插入数据 更新表 更新表 删除数据

  • 2018.12.27 数据定义DDL-3.2

    3.2创建与管理数据库表 3.2.1创建数据库表 3.2.2管理数据库表 例3-4 假设已经创建了数据库books...

  • 创建表

    在数据库如何创建表 CREATE TABLE 表名(列名 数据类型 约束)创建如下两个表: 给两个表添加关联 de...

  • 数据库常用指令

    1、创建数据库 create database 数据库名称;2、创建数据库表 create tables 数据库表...

  • MySQL数据库访问(创建、删除数据库)2018-06-19

    现在我们知道数据、表和数据库的关系了,要学习如何创建这些东西,就得先从数据库开始,因为有了数据库才有表,有了表才能...

网友评论

    本文标题:如何创建合理的数据库表?

    本文链接:https://www.haomeiwen.com/subject/ndenvxtx.html