web项目中数据库创建流程框架

web项目创建流程框架

1. 需求分析和规划阶段:

  • 1.1 项目定义: 确定项目的目标、范围、关键功能和期望的成果。明确项目的核心业务价值。
  • 1.2 制定需求文档: 将需求以文档的形式详细描述,包括功能需求、非功能需求和项目约束。
  • 1.3 制定项目计划: 规划项目的时间表、里程碑和资源分配。确定项目的开发周期和发布日期。

2. 技术选型阶段:

  • 2.1 选择技术栈: 根据项目需求和团队技能选择前端框架、后端框架、数据库等技术。
  • 2.2 确定开发工具: 选择适当的开发工具,包括代码编辑器、版本控制系统(如Git)、数据库管理工具等。

3. 设计阶段:

  • 3.1 制定数据库设计: 根据需求设计数据库结构,包括表格、字段、关系等。
  • 3.2 制定系统架构: 设计系统的整体架构,包括前端架构、后端架构、数据流程等。
  • 3.3 制定界面设计: 创建用户界面原型,定义页面布局、交互和设计风格。

4. 前端开发阶段:

  • 4.1 创建项目结构: 初始化项目,建立文件结构,配置开发环境。
  • 4.2 实现界面: 根据设计创建前端界面,使用HTML、CSS和JavaScript,可能结合前端框架。
  • 4.3 实现前端逻辑: 处理用户交互、表单验证等前端逻辑。
  • 4.4 单元测试: 针对前端组件编写和运行单元测试。

5. 后端开发阶段:

  • 5.1 创建项目结构: 初始化后端项目,建立文件结构,配置开发环境。
  • 5.2 实现业务逻辑: 根据需求实现后端业务逻辑,处理数据、控制流程等。
  • 5.3 数据库集成: 将数据库设计的表结构映射到后端代码,实现数据的增删改查操作。
  • 5.4 单元测试: 针对后端服务编写和运行单元测试。

6. 集成测试阶段:

  • 6.1 前后端集成: 将前端和后端集成,确保数据流畅通、界面正常显示。
  • 6.2 系统功能测试: 对整个系统进行功能测试,确保所有功能按照需求正常运作。

7. 优化和测试阶段:

  • 7.1 性能优化: 优化代码、数据库查询,确保系统在高负载情况下能够保持性能。
  • 7.2 安全性测试: 进行安全性测试,确保系统对于常见的安全攻击具有防御能力。
  • 7.3 用户测试: 将项目交给用户进行测试,收集反馈并进行修复。

8. 部署阶段:

  • 8.1 服务器配置: 配置生产服务器,包括操作系统、数据库服务器等。
  • 8.2 部署应用程序: 将项目部署到生产环境,确保配置正确。
  • 8.3 域名和SSL配置: 配置域名解析和SSL证书,确保网站的安全性。

9. 维护和更新阶段:

  • 9.1 监控和日志: 设置系统监控和日志,及时发现和解决潜在问题。

  • 9.2 定期更新: 进行定期的系统更新和维护 ,确保系统安全和稳定。

不管怎样,写项 目第一步永远是需求分析!!!

不管怎样,写项 目第一步永远是需求分析!!!

不管怎样,写项 目第一步永远是需求分析!!!

实例分析:

以目前写的投票系统为例分析

  • 需求分析:需要实现用户登录,创建投票项目,用户对不同投票项目中不同选项的投票,各种票数分析;

  • 技术选型:go,gin,gorm,mysql,前端各种工具等

  • 开发工具:goland,github,Datagrip,(chatgpt)

建表的分析

  1. 当只存在一对一关系时,最少只用一张表
  2. 当存在1对多关系时,最少需要两张表,例如学生和班级关系,最少需要班级表和学生表
  3. 当存在多对多关系时,最少需要创建三张表,例如学生和课程,一个学生可以选修多门课程,一门课程也可以被多个学生选修。,这时需要学生—课程中间表,关联学生id和课程id

按照此方法有助于减少数据冗余,查询起来也方便。

  • 数据库创建:既然用户要登录,肯定是要有用户表,投票需要有投票表,投票表中记录表的各种性质,包括id,类型,表名,持续时间等这种,而具体的单个表选项,需要再创建表表示表中各个选项的name,id,得票数等等,最后需要一个关联表,储存用户对哪个表的哪个选项进行了投票。

总的来说,对此项目,需要建4张表,用户表,投票项目表,选项表,关联表;

按照上边的建表规律,用户表,投票项目表是多对多的关系,一个项目可以有多个用户参加,一个用户能参加多个投票项目,项目表和选项表是一对多的关系,一个项目对应多个选项,用户表和选项表其实也是多对多关系,,所以至少需要四张表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习--React(4)路由

一、认识ReactRouter 一个路径path对应一个组件component,当我们在浏览器中访问一个path,对应的组件会在页面进行渲染 创建路由项目 // 创建项目 npx create router-demo// 安装路由依赖包 npm i react-router-dom// 启动项目 npm run start 简单的路…

Visdrone转为YOLO格式

import os from pathlib import Pathfrom ultralytics.utils.downloads import downloaddef visdrone2yolo(dir_path):dir = Path(dir_path)from PIL import Imagefrom tqdm import tqdm

小程序项目:springboot+vue基本微信小程序的电子书阅读器小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时…

ArcGIS制作广场游客聚集状态及密度图

文章目录 一、加载实验数据二、平均最近邻法介绍1. 平均最近邻工具2. 广场游客聚集状态3. 结果分析三、游客密度制图一、加载实验数据 二、平均最近邻法介绍 1. 平均最近邻工具 “平均最近邻”工具将返回五个值:“平均观测距离”、“预期平均距离”、“最近邻指数”、z 得分和…

leetcode 最大整除子集

给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足: answer[i] % answer[j] 0 ,或 answer[j] % answer[i] 0,如果存在多个有效解子集&a…

黑马点评Redis笔记

黑马点评Redis笔记 Redis基础篇:https://cyborg2077.github.io/2022/10/21/RedisBasic/ Redis实战篇:https://cyborg2077.github.io/2022/10/22/RedisPractice/ 一、手机号验证码注册登录 RandomUtil 生成定长随机数列 String code RandomUtil.ran…

4.一维数组——用数组处理求Fibonacci数列前20项

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、结果显示 前言 本系列为一维数组编程题,点滴成长,一起逆袭。 一、题目描述 用数组处理求Fibonacci数列前20项 二、题目分析 前两项:f[20]{1,1} 后18项:for(…

2022年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2022 年全国硕士研究生入学统一考试管理类专业学位联考数学试题一、问题求解:第 1∼15 小题,每小题 3 分,共 45 分。下列每题给出的 A、B、C、D、E 五个选项中,只有一项是符合试题要求的,请在答.题…

1panel在应用商店里面安装jenkins

文章目录 目录 文章目录 前言 一、使用步骤 1.1 填写安装参数 1.2 在界面中进入容器拿到自动生成的jenkins密码 前言 一、使用步骤 1.1 填写安装参数 在应用商店里面搜索jenkins,然后点击安装 填写参数 1.2 在界面中进入容器拿到自动生成的jenkins密码 命令 cat /var/jenki…

Go 本地搭建playground

搭建go playground 的步骤 1、安装docker 如果你使用的Ubuntu,docker的安装步骤可以参见这里,这是我之前写的在Ubuntu18.04下安装fabric,其中有docker的安装步骤,这里就不再赘述了。 CentOS下安装docker的,可以参见…

《数据结构、算法与应用C++语言描述》-二叉树与其他树-二叉树的C++实现-设置信号放大器与并查集问题

二叉树和其他树 可编译运行程序见:Github::Jasmine-up/Data-Structures-Algorithms-and-Applications/_23BinaryTree 定义 树 定义 11-1 一棵树 t是一个非空的有限元素的集合,其中一个元素为根(root),其余的元素&a…

04_MySQL备份与恢复

任务背景 一、真实案例 某天,公司领导安排刚入职不久的小冯同学将生产环境中的数据(MySQL数据库)全部导入到测试环境给测试人员使用。当小冯去拿备份数据时发现,备份数据是1个礼拜之前的。原因是之前运维同事通过脚本每天对数据库进行备份,…

51单片机蜂鸣器发出悦耳的声音

51单片机蜂鸣器发出悦耳的声音 1.概述 这篇文章介绍单片机控制蜂鸣器入门小实验,通过该实验掌握蜂鸣器发声的原理,控制声音发出我们想听的音乐。 2.蜂鸣器发声 2.1.硬件原理 1.蜂鸣器正极接单片机20号引脚VCC,负极接19号引脚P1.7 2.20MH…

【RTP】2:RtpPacket、RtpPacketToSend 创建、修改的简要分析

【RTP】1: RTPSenderAudio::SendAudio继续对如何做修改,比如修改扩展 做分析。查找扩展 一个已知的已经在packet中存在的扩展bool RtpPacket::IsExtensionReserved(ExtensionType type) const {uint8_t id = extensions_.GetId(type);

【数据处理】 -- 【两分钟】了解【最好】的方式 -- 【正则表达式】

直接匹配; 普通字符 元匹配: . 任意单字符 r’表示单引号里字符为其特殊含义,比如.不是句号是匹配符的意思 *任意次数(换行结束) 一次及以上 {3,4}指定次数,至少3次,最多4次|{3}固定4次 [\d.]单个任意…

Kotlin学习——kt里的作用域函数scope function,let,run,with,apply,also

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

什么是分布式锁?Redis实现分布式锁详解

目录 前言: 分布式系统买票示例 引入redis做分布式锁 引入过期时间 引入校验id 引入lua脚本 过期时间续约问题 redlock算法 小结: 前言: 在分布式系统中,涉及多个主机访问同一块资源,此时就需要锁来做互斥控制…

【Java】线程池的简单实用

1、什么是线程池 Java当中,为了规避频繁创建调度进程的开销,我们引入了线程。但是如果进一步提高创建销毁频率,线程的开销也不容忽视。 对此我们有两个解决方案 协程(轻量级线程):相比线程,把…

大数据平台/大数据技术与原理-实验报告--部署全分布模式Hadoop集群

实验名称 部署全分布模式Hadoop集群 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.16-2023.10.20 实验仪器设备以及实验软硬件要求 专业实验室(配有cen…

HarmonyOS应用开发者高级认证(题库)

判断题 每一个自定义组件都有自己的生命周期 正确Worker线程不支持UI操作 正确首选项preferences是以key-value形式存储数据,其中key是可以重复的。 错误HarmonyOS应用可以兼容OpenHarmony生态 正确使用端云一体化开发,无需自己搭建服务器 正确只要…