如何设计一个项目的数据库?

1、为什么需要设计

当数据库比较复杂的时候,我们就需要设计了

糟糕的数据库设计

  • 数据冗余,浪费空间
  • 数据库插入和删除都会麻烦、异常(屏蔽使用物理外键)
  • 程序的性能差

良好的数据库设计

  • 节省内存空间
  • 保证数据库的完整性
  • 方便我们开发系统

软件开发中,关于数据库的设计

  • 分析需求,分析业务和需要处理的数据库的需求
  • 概要设计:设计关系图E-R图

设计数据库步骤:(例如博客网站)

收集信息,分析需求

  • 用户表(用户登录注销,用户的个人信息,写博客,创建分类)
  • 分类表(文章分类,谁创建的)
  • 文章表(文章信息)
  • 评论表
  • 友链表(友情链接信息)
  • 自定义表(系统信息,某个关键的字,或者一些主字段) key:value
  • 关注表(粉丝数)
  • 说说表(发表心情, id…content…create_time)

标识实体(把需求落到每个字段)

标识实体之间的关系

  • 写博客:user --> blog
  • 创建分类:user --> category
  • 关注:user --> user
  • 友链:links
  • 评论:user --> user --> blog
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,设计一个简单的 Django 项目数据库。 假设我们要设计一个博客网站,数据库需要存储以下信息: 1. 用户信息:包括用户名、密码、电子邮箱等。 2. 文章信息:包括文章标题、作者、发布时间、内容等。 3. 评论信息:包括评论人、评论时间、评论内容等。 4. 标签信息:包括标签名称、标签描述等。 根据以上需求,我们可以设计出如下的数据库模型: ```python from django.db import models # 用户 class User(models.Model): username = models.CharField(max_length=50, unique=True) password = models.CharField(max_length=50) email = models.EmailField(unique=True) def __str__(self): return self.username # 文章 class Article(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(User, on_delete=models.CASCADE) pub_date = models.DateTimeField(auto_now_add=True) content = models.TextField() tags = models.ManyToManyField('Tag') def __str__(self): return self.title # 评论 class Comment(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) article = models.ForeignKey(Article, on_delete=models.CASCADE) pub_date = models.DateTimeField(auto_now_add=True) content = models.TextField() def __str__(self): return self.content # 标签 class Tag(models.Model): name = models.CharField(max_length=50, unique=True) description = models.CharField(max_length=100) def __str__(self): return self.name ``` 以上就是一个简单的 Django 项目数据库设计,其中 `User`、`Article`、`Comment` 和 `Tag` 分别对应四个表。在 `Article` 中,使用了 `ForeignKey` 来建立作者与文章之间的关联,使用了 `ManyToManyField` 来建立文章与标签之间的关联。在 `Comment` 中,使用了两个 `ForeignKey` 分别建立了评论人和文章与评论之间的关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值