zoukankan      html  css  js  c++  java
  • 【SQL数据库设计】数据库设计【小型数据库】

    数据库设计

    需求

    • 表结构
    • 字段类型、是否允许为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:不支持事务,查询效率相对较高;
    一个项目中,不不同的表,可以指定不不同的引擎。

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

    多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
  • 相关阅读:
    [LeetCode]98. SortColors颜色排序
    [LeetCode]97. Reorder List链表重排序
    [LeetCode]96. Min Stack带Min函数的栈
    [LeetCode]95. Implement Stack using Queues用队列实现栈
    opencv的学习笔记4
    opencv的学习笔记3
    RCNN 和SPPnet的对比
    CNN & RNN 及一些常识知识(不断扩充中)
    RCNN--对象检测的又一伟大跨越 2(包括SPPnet、Fast RCNN)(持续更新)
    【转】有监督训练 & 无监督训练
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/11271654.html
Copyright © 2011-2022 走看看