2.数据库设计与搭建

本文介绍了在Django项目中如何设计数据库,包括表之间的关系(一对一、一对多、多对多),并给出了书籍、作者、借阅人和借阅记录四个基础模型的详细字段和外键设置。读者需根据项目需求调整表结构。
摘要由CSDN通过智能技术生成

就我个人而言,我觉得任何项目的最重要的事情就是数据库的设计,这是支撑着所有的功能的最底层的支持。那么这篇文章我们继续上文,开始搭建我们的数据库。

a.设计

我们需要明白我们想要的项目到底是个什么效果,数据库中各个表之间的关系?一对一,一对多,还是多对多?
让我们来理清思路,我们首先需要多少数据表。

由于权限功能我们所使用的Django框架自己有携带,所以我们不用操心这个最复杂的表,只需要考虑如图所示的四个功能表。其中,最为重要的是表中字段的关系,即主键外键,例如:书籍表中的书本名-外键-借阅记录表的书本名;借阅人表的借阅人名-外键-借阅记录表的借阅人。可以看出其中的关系错综复杂,所以各位读者在开始编写代码构建数据库的结构时一定要理清楚思路与业务逻辑。
在这里我放出本次项目的各个表所需要的字段,当然,这是我所做的最基础的,具体设计需要各位读者根据自己的项目需要来调整:
书籍表:
image.png
作者表:
image.png
借阅记录表:
image.png
借阅人:
image.png

b.代码

具体的项目代码介绍大家可以看我的专栏Django中的ORM操作来具体了解,在这里我仅仅给出代码:

from django.db import models

# Create your models here.
#书籍模型
class book(models.Model):
      book_name = models.CharField(verbose_name="书籍名称", max_length=20,unique=True)
      author = models.ForeignKey(verbose_name="作者",to='author', to_field='id', on_delete=models.CASCADE,default=None)
      book_price = models.DecimalField(verbose_name='书本价格', max_digits=10, decimal_places=2)
      book_img = models.ImageField(verbose_name="书籍封面", default='none',upload_to='book')
      book_info = models.CharField(verbose_name='书籍简介', max_length=500, default='none')
      book_press = models.CharField(verbose_name='书籍出版社', max_length=50)
      book_time = models.DateField(verbose_name='书籍出版时间')
      book_address = models.CharField(verbose_name='书籍所在',max_length=20)
      book_status = models.CharField(verbose_name="书本状态",choices=(("0","下架"),("1","在架")),max_length=20,default="0")
      create_time = models.DateTimeField(verbose_name="数据创建时间", auto_now_add=True)
      alter_time = models.DateTimeField(verbose_name='数据修改时间', auto_now=True)

      class Meta:
           db_table = "book"
           verbose_name = "书籍管理"
           verbose_name_plural = '书籍管理'

      def __str__(self):
           return self.book_name

#作者模型
class author(models.Model):
      author_name = models.CharField(verbose_name="作者姓名", max_length=20)
      author_age = models.IntegerField(verbose_name="年龄")

      class Meta:
           db_table = "author"
           verbose_name = "作者管理"
           verbose_name_plural = '作者管理'

      def __str__(self):
            return self.author_name

#借阅人模型
class taker(models.Model):
      taker_name = models.CharField(verbose_name="借阅人姓名",max_length=20,unique=True)
      taker_number = models.IntegerField(verbose_name="借阅人ID",default='0000')
      taker_identity = models.CharField(verbose_name="借阅人身份",choices=(("0","学生"),("1","教师")),max_length=20,default="0")

      class Meta:
           db_table = "taker"
           verbose_name = "借阅人管理"
           verbose_name_plural = '借阅人管理'

      def __str__(self):
           return self.taker_name

#借阅记录模型
class bore(models.Model):
    bore_taker_name = models.ForeignKey(verbose_name='借阅人',to='taker',to_field='id',on_delete=models.CASCADE,default='挂失')
    bore_book_name = models.ForeignKey(verbose_name='借阅书名',to='book',to_field='id',on_delete=models.CASCADE,default='挂失')
    bore_lend_time = models.DateTimeField(verbose_name="借出时间")
    bore_back_time = models.DateTimeField(verbose_name='归还时间')
    bore_status = models.CharField(verbose_name='归还状态',choices=(("0","已归还"),("1","未归还")),max_length=20,default="1")

    class Meta:
        db_table = "bore"
        verbose_name = "借阅记录管理"
        verbose_name_plural = '借阅记录管理'

    def __str__(self):
        return self.bore_status

这只是初版代码,在后期根据具体的项目功能会再进行调整,所以各位读者请不要直接粘贴复制。

本篇文章只讲述了项目的数据库的设计与搭建,欢迎各位读者大大在评论区留言与作者交流!!!!

希望可以三连支持一波!!😍😍😍😍😍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是少爷.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值