数据库建模-面向对象程序设计(ER图,类层级结构图)

数据库表(ORM对象)是Django-web开发的基本单位,是整个项目的操作对象,所以项目开始时,首要任务就是数据库建模,设计ER图。
利用Mysql自带工具画ER图
1.分析功能
博客功能
1.点赞
2.发博客
3.评论区

2.研究功能,写下量词,动词,名词: 从而确定model关系(一对多),类名,实例名,函数名(方法名)
用户可以发布一篇博客,用户可以对一篇博客或一条评论发起点赞
实体:
一个用户,
一篇博客,
一条评论,
一个点赞,
写出所有实体
在这里插入图片描述
写出实体(类)间关系与基本属性(主键,外键)
在这里插入图片描述
外键即形成映射关系
post-picture: 一对多,一个post_id可以找到多个picture_id, 所以在picture中生成外键 post_post_id. 有这样的逻辑存在,前端就可以实现了

3.补充属性,实体,完成功能
1.实现post可发多张照片,多个视频的功能:如果将照片设为post一个属性则一个说说一次只能发一张图片。 将picture抽象为一个类(实体), 然后使post与picture一对多
设置属性存储图片,视频路径(数据库_文件系统原理
在这里插入图片描述
2.实现可对post,comment点赞功能: 将likes抽象为一个类, 属性记录对user, post
在这里插入图片描述
3.实现记录发说说时间: 添加date属性,用于抽奖等
在这里插入图片描述
完整版:
在这里插入图片描述
补充:
1.数据库-文件系统的存储
数据库的优点是查询非常快, 文件系统是存储能力强 电脑上用文件系统,不用数据库
数据库用来查询,文件系统用来存储
数据库可以存储文字等小类型信息, 视频,图片放在文件系统中
所以用数据库存储文件,视频在文件系统中的路径即可。

2,ORM字段:
Foreignkey: 当你在Django中删除了一个有着外键关联的数据时,比如一个作者和他名下的所有的书的信息,书的外键是作者(一个作者可有好多本书),当你把作者的信息从数据库中删除时,Django提供了一下几个参数来对作者的书的数据进行操作

CASCADE:删除作者信息一并删除作者名下的所有书的信息;
PROTECT:删除作者的信息时,采取保护机制,抛出错误:即不删除Books的内容;
SET_NULL:只有当null=True才将关联的内容置空;
SET_DEFAULT:设置为默认值;
SET( ):括号里可以是函数,设置为自己定义的东西;
DO_NOTHING:字面的意思,啥也不干,你删除你的干我毛线关系

3.面向对象的程序设计思想:摘自笨方法学python
1.描述功能,摘除关键的动词,名词,量词,描述修饰词
2.建立ER图和类层次结构图:
ER图:名词即类名,动词即方法函数名,量词即类之间的关系,描述修饰词即类的属性(如:用户1的点赞,点赞的次数,点赞的时间)
类层次结构图:找类的共同点,归纳父类,去除重复
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体代码
在这里插入图片描述

发布了54 篇原创文章 · 获赞 1 · 访问量 2730

猜你喜欢

转载自blog.csdn.net/weixin_44682507/article/details/104859594