数据库设计

「用户标签」在数据库设计时应该如何存储?

偶尔善良 提交于 2019-12-01 09:49:24
业务逻辑是这样的: 用户可以给自己贴标签,以供他人搜索。比如我给自己贴上“90后 程序员”的标签,那么别人就能通过“90后”或者“程序员”搜到我。 用户最多可以给自己贴10个标签。标签可以随时更新。 方案一:在User表里设置一个tags字段,里面存的是“90后,程序员”这样的字符串,用逗号分隔不同标签。缺点:不便于搜索,建立索引的话会很低效,因为“90后,程序员”和“程序员,90后”被认为是不同的。 方案二:在User表里设置10个tag_n字段(n=1,2,3...10),每个字段存一个标签。缺点:不利于Update。比如我现在把我的标签改为“程序员,90后,帅哥”,那么我要逐个检查“程序员”、“90后”和“帅哥”是否已存在,不存在才能添加。 不知道有什么好方法。 我在问问题的时候想到可以先给标签排序在存到数据库里。 注1:存tag的id而不是存tag的内容这一点已经采用了,我在问题里直接用tag内容是为了表述方面。 注2:我使用的是关系型数据库。 解决方案1:多对多 这应该是一个多对多的问题。 对于小型系统,我的设计方案通常是这样 user表 ===================== userId userName ===================== 1 test 2 test2 ... tag表 ===================== tagId

阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)

∥☆過路亽.° 提交于 2019-12-01 08:48:55
一、谈谈你对 MyBatis 的理解? 1. Mybatis是一个半ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 Statement 等繁杂的过程。程序员直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高。 2. MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。3. 通过 XML 文件或注解的方式将要执行的各种 Statement 配置起来,并通过 Java 对象和 Statement 中 SQL 的动态参数进行映射生成最终执行的 SQL 语句,最后由 MyBatis 框架执行 SQL并将结果映射为 Java 对象并返回。(从执行 SQL到返回 Result 的过程)。 二、MyBaits 的优缺点有哪些? § 优点: 1. 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 SQL 与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态 SQL 语句,并可重用; 2. 与 JDBC 相比,减少了代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接; 3. 很好的与各种数据库兼容(因为

构建之法——团队第三次作业

牧云@^-^@ 提交于 2019-12-01 07:41:18
第三次团队作业 (1).简介 作业属于的课程 课程地址 作业的要求 要求的链接 团队名称 Running Man 作业目标 团队进行概要设计、详细设计、数据库设计,撰写设计说明书、数据库设计说明书、详细设计说明书,制作答辩ppt (2).成员学号 李星晨 201731091410 刘伊凡 201731062603 陈嘉莹 201731104215 唐财伟 201731062416 谭伟 201731062415 (3).分工情况 人员 任务 李星晨 撰写概要设计说明书 刘伊凡 撰写详细设计说明书 陈嘉莹 ppt的制作以及答辩 谭伟 进行博客的撰写 唐才伟 进行数据库设计,编写数据库说明书 (4).概要设计 软件体系结构: 主要业务模块: 1.注册 模块名称 注册 功能描述 用户利用自己的信息进行注册账户 输入项 用户信息 输出项 提示框提示注册成功或者失败原因 2.登陆 模块名称 登陆 功能描述 用户利用账户登陆 输入项 用户信息 输出项 提示框提示登陆成功或者失败原因 3.发布任务 模块名称 发布跑腿任务 功能描述 用户发布自己需要的跑腿任务 输入项 任务需求 输出项 提示框提示发布成功或者失败 4.接受任务 模块名称 接受跑腿任务 功能描述 用户接受自己感兴趣的任务 输入项 无 输出项 接受成功或者失败 5.排序 模块名称 智能排序 功能描述 对每项任务进行排序

团队项目-----系统设计 认真不马虎队

允我心安 提交于 2019-12-01 07:17:05
格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://www.cnblogs.com/harry240/p/11524148.html 团队名称 认真不马虎队 这个作业的目标 开展概要设计、详细设计、数据库设计 一.团队成员 学号 姓名 201731024101 李楠(组长) 201731024105 汪小萍 201731024203 黄耀萱 201731024201 孙颖 201731131317 杨也 201731022104 张莹 二.本阶段任务分工情况 学号 姓名 分工 201731024101 李楠(组长) 组织项目组开展概要设计、详细设计、数据库设计,撰写博客 201731024105 汪小萍 进行主要概要设计并撰写概要设计说明书 201731024203 黄耀萱 进行主要数据库设计并撰写数据库设计说明书 201731024201 孙颖 进行主要详细设计并撰写详细设计说明书 201731131317 杨也 制作答辩用的ppt 201731022104 张莹 信息收集处理 三.概要设计 1.软件体系结构 2.主要业务模块描述 2.1功能 2.1.1开始游戏功能 当用户进入游戏主界面时,可在界面中下方显眼的位置找到“开始游戏”按钮

团队项目——系统设计

ぐ巨炮叔叔 提交于 2019-12-01 07:11:25
团队设计——系统设计 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作业要求在哪里 https://www.cnblogs.com/harry240/p/11524148.html 团队名称 运气王团队 这个作业的目标 为实现软件做好理论和实践基础,熟悉流程,以便提高工作效率 1.团队成员的学号列表 何宸锐(组长) 201731024227 刘俊 201731024208 姜仪 201731024206 匡小娟 201731024210 吴明益 201731024202 涂才森 201731024129 雷槟源 201731024116 2.本阶段任务分工情况 原型设计和统筹安排 何宸锐 需求分析部分 吴明益、刘俊 详细设计和概要设计部分 雷槟源、涂才森 数据库设计部分 匡小娟、姜仪 3.概要设计 1)软件体系结构 2)主要业务模块描述 1.系统登陆模块 |模块名称 |系统登陆模块 | |--|--| |输入 | 用户名、密码 | |输出 |登陆成功及用户的角色 |功能说明|实现用户的安全登陆并表示出登陆用户的角色| 2.系统界面模块 |模块名称 |系统界面模块 | |--|--| |输入 | 点击功能模块 | |输出 |进入功能板块 |功能说明|实现考勤系统多功能| 3

团队第三次作业

爷,独闯天下 提交于 2019-12-01 06:13:20
第三次团队作业 (1).简介 作业属于的课程 课程地址 作业的要求 要求的链接 团队名称 Running Man 作业目标 团队进行概要设计、详细设计、数据库设计,撰写设计说明书、数据库设计说明书、详细设计说明书,制作答辩ppt (2).成员学号 李星晨 201731091410 刘伊凡 201731062603 陈嘉莹 201731104215 唐财伟 201731062416 谭伟 201731062415 (3).分工情况 人员 任务 李星晨 撰写概要设计说明书 刘伊凡 撰写详细设计说明书 陈嘉莹 ppt的制作以及答辩 谭伟 进行博客的撰写 唐才伟 进行数据库设计,编写数据库说明书 (4).概要设计 软件体系结构: 主要业务模块: 1.注册 模块名称 注册 功能描述 用户利用自己的信息进行注册账户 输入项 用户信息 输出项 提示框提示注册成功或者失败原因 2.登陆 模块名称 登陆 功能描述 用户利用账户登陆 输入项 用户信息 输出项 提示框提示登陆成功或者失败原因 3.发布任务 模块名称 发布跑腿任务 功能描述 用户发布自己需要的跑腿任务 输入项 任务需求 输出项 提示框提示发布成功或者失败 4.接受任务 模块名称 接受跑腿任务 功能描述 用户接受自己感兴趣的任务 输入项 无 输出项 接受成功或者失败 5.排序 模块名称 智能排序 功能描述 对每项任务进行排序

七剑下天山——第三次团队作业

与世无争的帅哥 提交于 2019-12-01 06:12:05
【相关信息】 Q A 作业所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/ 作业要求 https://www.cnblogs.com/harry240/p/11524148.html 团队名称 七剑下天山 作业目标 介绍本阶段任务分工情况、完成概要设计和数据库设计、并绘制概念模型图和逻辑模型图 【团队成员】 姓名 学号 职责 张鹏 201731062524 组长 陈超 201731062510 组员 王慧 201731062504 组员 李邦国 201731062513 组员 沈梓琳 201731062501 组员 何鑫懿 201731062122 组员 侯思其 201731062124 组员 本阶段任务分工情况 2524:实现登陆注册系统服务端与客户端的交互,接受数据并验证,然后返回相应的数据给客户端 2501:做移动端的登录、注册页面、以及个人设置页面 2504:社区页面以及社区功能 2510 :APP主页面、和仓库设计 2513:模拟实现用户对小说的搜索功能、用户可以搜索关键字,后台服务程序便可以根据关键字到网络上爬取相关资源,然后返回给用户 2124:爬虫框架的学习,尝试针对一个固定网站爬取完小说 2122:数据库设计和学习数据库程序编写、详细设计说明书文档编写 概要设计

数据库设计方法论 - 继承

▼魔方 西西 提交于 2019-12-01 05:23:27
继承这个概念做java开发的同学应该都很熟悉了,继承指的是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 数据库设计的时候也是有继承关系的,在数据库设计方法论中继承有三种,分别是具体表继承(Concrete Table Inheritance)、单表继承(Single Table Inheritance)、类表继承(Class Table Inheritance)。我们实际设计中经常会不经意中使用到数据库到继承,下面分别介绍一下他们的概念: 概念解析 具体表继承 不建立父对象,将父对象的所有属性转移到子对象中,为每个子对象建立对于的表。 单表继承 在一个宽表中列出所有父对象和子对象的属性,同时用一个标识列表示该行数据存储的是哪个子类的数据。 类表继承 对父对象和每个子对象建立一个对应的表,然后在子表中设置该子表的主键为与父表关联的外键。 设计示例 假如你现在在做个教学系统,系统中有三个角色:学生、家长、老师。 学生的属性:姓名、年龄、性别、身份证、入学时间、学号、学分 家长的属性:姓名、年龄、性别、职业、学历 老师的属性:姓名、年龄、性别、教龄、学科、是否已婚 不同继承方案的实现如下: 具体表继承(三张独立表) 学生表(ID、姓名、年龄、性别、身份证、入学时间、学号、学分) 家长表(ID、姓名、年龄、性别

团队第三次作业

不想你离开。 提交于 2019-12-01 04:53:57
第三次团队作业 (1).简介 作业属于的课程 课程地址 作业的要求 要求的链接 团队名称 Running Man 作业目标 团队进行概要设计、详细设计、数据库设计,撰写设计说明书、数据库设计说明书、详细设计说明书,制作答辩ppt (2).成员学号 李星晨 201731091410 刘伊凡 201731062603 陈嘉莹 201731104215 唐财伟 201731062416 谭伟 201731062415 (3).分工情况 人员 任务 李星晨 撰写概要设计说明书 刘伊凡 撰写详细设计说明书 陈嘉莹 ppt的制作以及答辩 谭伟 进行博客的撰写 唐才伟 进行数据库设计,编写数据库说明书 (4).概要设计 软件体系结构: 主要业务模块: | 模块名称 | 注册 | | :-------- | :----- | | 功能描述 | 用户利用自己的信息进行注册账户 | | 输入项 | 用户信息 | | 输出项 | 提示框提示注册成功或者失败原因 | 模块名称 登陆 功能描述 用户利用账户登陆 输入项 用户信息 输出项 提示框提示登陆成功或者失败原因 模块名称 发布跑腿任务 功能描述 用户发布自己需要的跑腿任务 输入项 任务需求 输出项 提示框提示发布成功或者失败 模块名称 接受跑腿任务 功能描述 用户接受自己感兴趣的任务 输入项 无 输出项 接受成功或者失败 模块名称 智能排序 功能描述

mysql编写数据库设计说明文档

我只是一个虾纸丫 提交于 2019-12-01 04:26:35
-- 展示对应表的所有 列名,类型,和描述 set @rownum=0; SELECT @rownum:=@rownum+1 AS rownum , COLUMN_NAME AS 列名, (CASE WHEN IS_NULLABLE = 'YES' THEN '是' ELSE '否' END) AS 是否为空, COLUMN_COMMENT AS 列的描述, COLUMN_TYPE AS 类型 FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = (select database()) AND TABLE_NAME = ('act_evt_log') ORDER BY ORDINAL_POSITION ; 上述的act_evt_log 是表名。结果展示如下图: -- 展示当前数据库中的所以有数据库表 set @rownum=0; SELECT @rownum:=@rownum+1 AS rownum ,t.TABLE_COMMENT AS 描述 ,t.table_name AS 表名 FROM information_schema.`TABLES` t WHERE t.TABLE_SCHEMA = (select database()) ORDER BY t.TABLE_NAME;