基于.NET平台的分层架构实战(二)——需求分析与数据库设计

 基于.NET平台的分层架构实战(五)——接口的设计与实现
· 基于.NET平台的分层架构实战(四)——实体类的设计与实现
· 基于.NET平台的分层架构实战(三)——架构概要设计
· 基于.NET平台的分层架构实战(一)——综述

 

在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影响项目的开发过程和质量。实际中,这个环节不但需要系统分析师、软件工程师等计算机方面的专家,还需要相关领域的领域专家参与才能完成。

但是,在这个文章系列中,所要使用的Demo仅仅是一个例子,而且其业务极为简单,因此,这里并不是真正的需求分析和数据库设计,而是将Demo的需求和数据库罗列至此,使朋友们对Demo有一个大体的了解,方便后续文章中开发过程的理解。

需求分析:
这个项目是一个留言本,其业务极为简单,现将其描述如下。
1.任何访问者可以进行留言,留言完成后,不会立即显示正文,而是要经过管理员验证后才可显示。
2.任何访问者可以对留言发表评论,未通过验证的留言不可以评论。
3.管理员可以对留言进行回复(这个回复不同于评论,是直接显示在正文下面,而且是一个留言只能有一个回复),并可对留言与评论实行删除,以及对留言进行通过验证操作。
4.管理员分为超级管理员和普通管理员。超级管理员只有一个,负责对普通管理员实行添加、删除操作。普通管理员可偶多个,负责对留言的管理,并可以修改自己的登录密码。

这个项目的用例图如下:

图2.1、NGuestBook的用例图

数据库设计:
设计数据表之前,首先进行实体和关系的识别与确定。
通过需求分析,可以观察得出,本项目的实体有:管理员(不包括超级管理员),留言,评论。本项目的关系有:留言与评论间的一对多关系。

进一步,数据库各表的设计如下:

管理员表(TAdmin)
ID    int    管理员ID    NotNull    主键,自增
Name    varchar(20)    登录名    NotNull
Password    varchar(50)    登录密码    NotNull    使用MD5加密

留言表(TMessage)
ID    int    留言ID    NotNull    主键,自增
GuestName    varchar(20)    留言者用户名    NotNull
GuestEmail    varchar(100)    留言者E-mail    Null
Content    text    留言内容    NotNull
Time    datetime    发表留言时间    NotNull    
Reply    text    回复    Null

IsPass    varchar(10)    是否通过验证    NotNull

评论表(TComment)
ID    int    评论ID    NotNull    主键,自增
Content    text    评论内容    NotNull
Time    datetime    发表评论时间    NotNull
MessageID    int    所属留言的ID    外键

Creative Commons License

本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名张洋(包含链接),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系。

 

 

评论表中没有主键。管理员表中用户名应该就是主键,你的管理员登录时候用户名就应该不能重复。不是什么都用自增长类型的。 
系统是东亚用户为主的话应该考虑使用nvarchar而不是varchar。 
如果考虑使用的是ORM的话表名推荐不要加T了,应该是你的老师让你这样做的,2000年以前的程序员到挺习惯加这个。可是加了,操作实体对象很累,毕竟已经有命名空间做限制了。 
如果用户有需求提出可以对评论进行评论的,这个设计就OVER了。 

需求中2的后半句有疑问,看不到的留言如何进行评论?

 

首先,说一下楼主辛苦了。
对LZ数据库的设计,个人建议如下:
1.管理员表(TAdmin)里有个假删除的字段(冻结),因为对于管理员来说不能说删除就删除吧!如果哪天需要重新启用了,在添加感觉挺麻烦;对于24楼的建议,偶也有此意,不过,楼主有回复。
2.留言表(TMessage) 一个留言有一个回复可能有他本身的业务需求吧?
3.评论表(TComment) 虽然可以匿名回复,但是,还是建议有个GuestName的字段,这样对于登录的用户还是可以显示用户名的,从而可以实现其互动性的作用。
以上只是个人观点,欢迎讨论。

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

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

相关文章

PWN-PRACTICE-CTFSHOW-5

PWN-PRACTICE-CTFSHOW-5BJDCTF2020-router36D杯-签到36D杯-babyFmtstr36D杯-MagicStringBJDCTF2020-router 36D杯-签到 栈溢出&#xff0c;用ROPgadget找到一个"sh"字符串&#xff0c;ROP&#xff0c;程序过滤了cat和空格&#xff0c;more<flag绕过即可 # -*- c…

Hexo 博客自定义一个不使用主题模板渲染的独立页面

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; Hexo 是一个轻量、快速&#xff0c;简单和强大的博客框架&#xff0c;当我们需要发布博文的时候&#xff0c;只需要…

log4net部分配置说明

第一步&#xff1a; 添加并应用Log4net.dll。然后在Web.config文件中添加下面的配置局 <configSections> <section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> 第二步…

网站ICP备案和公安备案流程

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 文章目录-- ICP备案 1、填写信息验证备案类型2、产品验证3、填写网站信息4、上传资料5、人脸核验或幕布拍照核验6、…

7款免费原型设计工具

身为一位产品经理或设计师&#xff0c;原型设计工具是必不可少的工作伙伴。但我们难免会遇到预算有限的时候&#xff0c;这时候&#xff0c;去哪里寻找一款好用的免费原型设计工具呢&#xff1f;以下&#xff0c;小编为大家精心挑选了7款免费的原型工具&#xff0c;并对其进行了…

PWN-PRACTICE-CTFSHOW-7

PWN-PRACTICE-CTFSHOW-7大吉大利杯-easyrop大牛杯-guess吃鸡杯-win_pwn吃鸡杯-easy_canary大吉大利杯-easyrop 栈溢出&#xff0c;SROP # -*- coding:utf-8 -*- from pwn import * context.log_level"debug" context.arch"amd64" #32位和64位的sigframe结…

【译】谨慎使用CSS中的波浪选择器

最近我的一些项目都遇到了一些类似的样式问题。它们都错误地使用了波浪选择器&#xff0c;并造成了很多地方的CSS代码臃肿( CSS Bloat )。大家可能以前也都遇到或者使用过波浪选择器&#xff0c;毕竟它作为CSS选择器已经很长时间了&#xff0c; 甚至IE7都支持 。波浪选择器用来…

HTML + CSS 实现 GitHub 项目标签、徽章样式

经常会在GitHub上项目介绍的README.md文件中看到许多漂亮的标签&#xff0c;这些标签可以显示version、stars、license等信息 我们可以通过 https://shields.io/ 这个网站在线制作图标&#xff0c;填写label、message、color三个字段&#xff0c;点击Make Badge就可以生成图标…

instant.page —— 一个 JS 脚本实现网站预加载,提升页面加载速度

instant.page 使用即时预加载技术&#xff0c;在用户点击之前预先加载页面。当用户的鼠标悬停在一个链接上超过 65 毫秒时&#xff0c;浏览器会对此页面进行预加载&#xff0c;当用户点击链接后&#xff0c;就从预加载的缓存中直接读取页面内容&#xff0c;从而达到缩短页面加载…

PWN-COMPETITION-HGAME2022-Week1

PWN-COMPETITION-HGAME2022-Week1enter_the_pwn_landenter_the_evil_pwn_landoldfashion_orwser_per_fatest_your_nctest_your_gdbenter_the_pwn_land 栈溢出&#xff0c;需要注意的是下标 i 的地址比输入s的地址更高 s溢出会覆盖 i &#xff0c;于是需要小心地覆写 i 的值&am…

Hexo 博客添加 README.md 以及部署到 GitHub 丢失/显示不正常解决方法

GitHub 项目的README.md为自述文件&#xff0c;可对该项目进行介绍&#xff0c;解释等。 使用 Github Pages 和 Hexo 搭建的博客&#xff0c;如果在最开始建立仓库的时候没有创建README.md文件&#xff0c;那么在后期如何添加呢&#xff1f; 添加方法&#xff1a;在根目录 so…

REVERSE-COMPETITION-HGAME2022-Week1

REVERSE-COMPETITION-HGAME2022-Week1easyasmcreakmeFlag Checker猫头鹰是不是猫easyasm 程序一开始将si设置为0&#xff0c;然后si和28比较&#xff0c;如果si小于28则进入循环 循环体中&#xff0c;si作为下标&#xff0c;从输入中取值存入al&#xff0c;然后al左移4位&…

谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 -- system level)

谷歌浏览器检查更新报错&#xff1a;检查更新时出错&#xff1a;无法启动更新检查&#xff08;错误代码为 3: 0x80080005 – system level&#xff09;&#xff0c;如下图所示&#xff1a; 网上的解决方法都是因为谷歌被墙&#xff0c;所以要重新下载&#xff0c;事实上并不是…

PWN-COMPETITION-HGAME2022-Week2

PWN-COMPETITION-HGAME2022-Week2blindecho_severoldfashion_noteblind 访问/proc/self/mem即可修改当前进程的内存&#xff0c;.text段也是可修改的 程序开始的时候直接输出了write的地址&#xff0c;泄露libc&#xff0c;然后在__libc_start_main上喷射shellcode # -*- cod…

Sharepoint学习笔记—Site Definition系列-- 1、创建Site Columns

https://www.cnblogs.com/wsdj-ITtech/archive/2012/08/12/2470219.html Site Columns是Sharepoint网站的一个重要底层结构&#xff0c;它是一类可重用的列定义或模板&#xff0c;可以将其分配给一个或多个 SharePoint 网站的一个或多个列表。 一个Site Column是由几个属性定义…

利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 文章目录● 前言● 注册 Cloudflare● 添加站点● 修改DNS● 开启 HTTPS● 重定向强制 HTTPSHTTP&#xff08;超文本…

REVERSE-COMPETITION-HGAME2022-Week2

REVERSE-COMPETITION-HGAME2022-Week2xD MAZEupx magic 0fake shellcreakme2upx magic 1xD MAZE 迷宫题&#xff0c;不过不是上下左右&#xff0c;而是只有前进 0-512&#xff0c;1-64&#xff0c;2-8&#xff0c;3-1 每一次v14加上前进的单位后&#xff0c;需要保证map[v14]3…

Github+jsDelivr+PicGo 打造稳定快速、高效免费图床

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 本文原创首发于我的个人博客&#xff1a;www.itrhx.com&#xff0c;欢迎访问&#xff01; 本文在我个人博客上的链接…

用于科研的移动机器人平台推荐

作者&#xff1a;知乎用户 链接&#xff1a;https://www.zhihu.com/question/59738106/answer/268510238 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 最近看到一篇介绍机器人移动平台的文章&#xff0c;与题主分…

turtlebot3入门教程

旨在用于教育&#xff0c;研究&#xff0c;产品原型和爱好应用的目的。 TurtleBot3的目标是大幅降低平台的尺寸和价格&#xff0c;而不会牺牲性能&#xff0c;功能和质量。 由于提供了不同可选&#xff0c;如底盘&#xff0c;计算机和传感器&#xff0c;TurtleBot3可以通过各…