数据库设计

需求

  • 表结构
  • 字段类型、是否允许为null、是否有默认值
  • 索引设计
  • 数据库引擎的选择

根据产品原型分析,词性分析法,名词创建表或字段,动词表示关系。

数据存储:长期存储的数据,

1.主键:唯一、自增。

可以不用手动指定,mysql会默认生成自增主键;

不适合做主键:业务数据,比如mobile,id_card

2.表之间的关系:
一个用户可以发布文章数?一对多,用户是一方,文章是多方

3.外键:多表之间没有外键,可以进行行连表查询吗? 可以
作用:确保数据的完整性。

工作中:项目初期一般会使用外键,项目运行中后期,一般都会取消外键。

4.文章封面图片存储:在MySQL5.7版本后,新加如json数据类型;
json的类型底层是longtext
方便便存储多个键值对形式的字符串串,不不容易易发生的数据。

5.数据库设计—范式:
1.表字段的原子性
2.满足第1范式的基础上,有主键依赖
3.满足第1、2范式的基础上,非主属性之间没有依赖关系;

6.反范式:DBA的水平,反范式设计用的越多,水平越高。
设计数据库表,存储冗余字段;
利利用数据库表的存储空间,节省查询数据时间;

7.索引设计:
主键、外键、unique、index

哪些字段适合索引的设计:
适合:mobile,name,nick_name
不不适合:photo_url,intro,gender

结论:
1.数据形式比较复杂的;
2.查询语句句条件后面,where后面
3.数据形式单一的不适合。

8.数据库引擎:决定数据存储和查询的方式;
InnoDB:支持事务,更更安全,查询和插入的效率相对较低;
MyISAM:不支持事务,查询效率相对较高;
一个项目中,不不同的表,可以指定不不同的引擎。

下图是一个模拟表的设计:

【SQL数据库设计】数据库设计【小型数据库】的更多相关文章

  1. sql server 主从库设计和数据库镜像设计

    sql server 主从设计可以通过sql server 的发布订阅实现,在大数据量的时候不要用快照发布,要使用事务发布的方式实现. 主从的设计后,要将数据库的读写分离,实现数据库效率的提示 而数据 ...

  2. SQL语句优化、mysql不走索引的原因、数据库索引的设计原则

    SQL语句优化 1 企业SQL优化思路 1.把一个大的不使用索引的SQL语句按照功能进行拆分 2.长的SQL语句无法使用索引,能不能变成2条短的SQL语句让它分别使用上索引. 3.对SQL语句功能的拆 ...

  3. SQL Server数据库学习笔记-设计表时应该考虑的因素

    设计数据库其实就是设计数据库中的表.到底要注意些什么才能够设计好一个数据库呢?一个宗旨,8个建议. 一个宗旨“尽量少的表,每个表中尽量少的列,合理的表结构”. 8个建议: 第一个,首先要考虑的是咱们这 ...

  4. 关系型数据库与Key-value型数据库Mongodb模式设计对比

    MongoDb 相比于传统的 SQL 关系型数据库,最大的不同在于它们的模式设计( Schema Design )上的差别,正是由于这一层次的差别衍生出其它各方面的不同. 我们可以简单的认为关系型数据 ...

  5. MySQL数据库优化技术之数据库表的设计

    三范式介绍表的范式:只有符合的第一范式,才能满足第二范式,进一步才能满足第三范式. 1. 第一范式:表的列具有原子性,不可再分解.只要是关系型数据库都自动满足第一范式.数据库的分类:关系型数据库:My ...

  6. 从零一起学Spring Boot之LayIM项目长成记(三) 数据库的简单设计和JPA的简单使用。

    前言 今天是第三篇了,上一篇简单模拟了数据,实现了LayIM页面的数据加载.那么今天呢就要用数据库的数据了.闲言少叙,书归正传,让我们开始吧. 数据库 之前有好多小伙伴问我数据库是怎么设计的.我个人用 ...

  7. 树形结构的数据库表Schema设计-基于左右值编码

    树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门.栏目结构.商品分类等等,通常而言,这些树状结构需要借助于数据库完 成持久化.然而目前的 ...

  8. Atitit.数据库分区的设计 attilax  总结

    Atitit.数据库分区的设计 attilax  总结 1. 分区就是分门别类的文件夹 (what)1 2. 分区的好处(y)1 3. 分区原则(要不要分区,何时分区)how2 4. 主要的分表类型有 ...

  9. COSCon'19 | 如何设计新一代的图数据库 Nebula

    11 月 2 号 - 11 月 3 号,以"大爱无疆,开源无界"为主题的 2019 中国开源年会(COSCon'19)正式启动,大会以开源治理.国际接轨.社区发展和开源项目为切入点 ...

  10. MySQL数据库表的设计和优化(上)

    一.单表设计与优化: (1)设计规范化表,消除数据冗余(以使用正确字段类型最明显):数据库范式是确保数据库结构合理,满足各种查询需要.避免数据库操作异常的数据库设计方式.满足范式要求的表,称为规范化表 ...

随机推荐

  1. 如何确保TCP协议传输稳定可靠?

    TCP,控制传输协议,它充分实现了数据传输时的各种控制功能:针对发送端发出的数据包确认应答信号ACK:针对数据包丢失或者出现定时器超时的重发机制:针对数据包到达接收端主机顺序乱掉的顺序控制:针对高效传 ...

  2. Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务

    现有混合云平台的场景下,即有线下和线上的环境,又有测试与正式的场景,而且结合了Docker,导致打包内容有所区分,且服务的发布流程复杂起来,手工打包需要在编译阶段就要根据环境到处更改配置,因此纯手工发 ...

  3. 并发编程-concurrent指南-Lock-可重入锁(ReentrantLock)

    可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁:可以再次进入方法A,就是说在释放锁前此线程可以再次进入方法 ...

  4. 2018.12.1 万圣节的小L

    我回来啦 试题描述 今天是万圣节,小L同学开始了一年一度的讨要糖果游戏,但是在刚刚过去的比赛中小有成就的他打算给自己增加一点难度:如果没有讨到每一家的糖果就算输. 已知小L共有n(n不大于10000) ...

  5. Go - 循环

    目录 概述 循环 array 循环 slice 循环 map break continue goto switch 推荐阅读 概述 前几篇文章分享了 array 数组.slice 切片.map 集合, ...

  6. Tell Don’t Ask

    The Tell, Don’t Ask (TDA) principle suggests that it is better to issue an object a command do perfo ...

  7. VUE-CLI3.0脚手架安装

    文档:https://cli.vuejs.org/zh/guide/ 条件: npm 更至最新 node >=8.9 1.全局安装 npm install -g @vue/cli 或 yarn ...

  8. 详解rel 属性及noflow

    rel属性的意思是指: 当前页和指向页的关系. 而 rev 属性则指定从目标文档到源文档的关系.百度目前支持: rel='noflow'属性. rel属性的意思是指: 当前页和指向页的关系. < ...

  9. Managing Network Usage

    This lesson describes how to write applications that have fine-grained control over their usage of n ...

  10. MyBatis从入门到精通:各个实体类

    SysUser类: package tk.mybatis.simple.model; import java.util.Date; public class SysUser { public Long ...