数据库表和字段的关系如何设计比较好?

表A有个字段为水果,表A有三条记录,存了苹果、香蕉、榴莲;

苹果 需访问到表B的颜色、性质;
香蕉 需访问到表C的长度;
榴莲 需访问到表D的厚度、硬度;

怎样通过表A更合理地关联表BCD?

2个回答

这个时候我感觉选择数据库的类型比较重要,可以考虑用Mongodb

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关系型数据库设计-用户表和订单表 怎么设计
如果一个电商用关系型数据库, 假设有一个用户表,有一个订单表,订单表中有一个用户ID 的字段, 那查询某个用户的所有订单时岂不是要遍历整个订单表? 没有在互联网公司工作过,不知道是怎么设计的,求解答。
如何在一张表中设计一对多的关系数据库
做新进员工管理,设计部门数据库表。部门表中包含部门自有的一些基本字段,还包括员工的字段(ID,姓名,年龄,入职时间),每入职一个员工,添加一张员工表,求大神指点下????急求
关于数据库中一对多关系的表的设计问题
很简单,现有一张商品表(goods),里面有3个字段(id自增主键,name商品名字,price价格); 现在准备设计一张订单表(order),要求一张订单可能包含一个或多个商品,而且商品数量不定,那么应该如何设计这个订单表(order)呢? 我自己想到两种方案: 1、再额外设计一张中间表(order-goods)把它们关联起来,此表包括字段(order-id、goods-id、goods-num),每个订单的每有一个独立商品就添加一条记录到此表; 2、在订单表(order)里设计一个关联商品字段(goods-info),里面记录有商品id和商品数量拼出来的字符串,譬如某订单里有52号商品3件,166号商品4件,那么此订单的关联商品字段(goods-info)就记录着“52:3,166:4”这么一个字符串。 我个人是偏向于第二种方案,因为不用额外设计一张表,添加修改查询的时候都方便很多,只要取出关联商品字段(goods-info)后处理一下数据就可以了。 大神们能点评一下这两种方案吗?或者有更好更科学的设计方案吗?望指教~
access数据库设计遇到的问题。(比赛信息数据库)
目前的设计计划如图,求解答。 ![图片说明](https://img-ask.csdn.net/upload/201512/05/1449281247_608344.png) **数据库是学院建立,主要是为了方便统计学生的比赛参与和获奖情况,问题在于比赛种类多样:有个人也有团队(团队人数依比赛而定),有指导教师/无指导教师……。但并不希望为每一个比赛建立数据表,随比赛越来越多后可能导致困难(每年负责管理数据库的学生也在随年变化),希望统一统计处理。** 在设计时候发生了如下错误: 1.建立队伍表(队伍编号,队长,队员1,队员2,…,指导教师1,…)并填入学号但却发现多个字段中只能有一个与学生表(学号…)建立关系。所以队员信息无法形成关系,虽然依然记录但作为队员的学生就无法查询到参与这次比赛的记录。教师同理,无法为超过一个教师建立与教师表的关系。 _这样的想法类似于Ecexl,会在表中出现大量的(空)属性,可能不利于数据库维护,而且无法建立关系,但可能通过VBA编程实现要求,如果这样可行的话也请问一下可以通过什么方法实现,简单叙述一下程序原理,我就可以学习到相关知识。_ **所以其实面临的都是一个问题,那就是多个学生/教师如何记录入同一个队伍并建立关系,并确保每个学生/老师只要在队伍中出现(不论是作为队长,还是任意一个队员)就能查询到他(她)在比赛中队伍的信息**
一个数据库设计的问题
是这样的要开发一个在线订餐的网站,跟淘宝的方式差不多,饭店在线注册后就可以在网站上接受在线订餐,用户可以根据自己所在区域选择较近的饭店进行订餐 ,这样一来数据库设计的时候 就出了一个问题 每家饭店的菜品不一定一样 有些菜品一样比如都是是鱼香肉丝价格会有差异 这个菜品表要怎么设计按照原来设计 菜品表(主键,名称,规格,价格,图品地址,外键【所属饭店】) 这样设计的话如果一道菜出现在两家或两家以上的饭店切价格规格都相同数据就产生冗余了 是对应每家饭店自动生成含有相同字段的表还是有其他更好的办法?
怎样实现springboot项目:一个实体固定属性存在关系数据库,可扩展属性存在mongdb中
有这样一个需求,需要动态可修改一个实体(即:一个表)的字段,因为有些字段是必须要用关系型数据库支持的,所以我想着能不能以主键为关联,将固定字段存在关系型数据库中(例如:postgresql),可扩展的字段放到mongodb这样的非关系型数据库中,但是却不知道这两个数据库中的表设计,以及代码中的实现? 项目是springboot的,用了spring-data-JPA 最好是有demo的,希望有大神帮帮忙~~~
问一个关于IM的好友关系数据表设计
目前在设计一个IM软件,但是在好友关系这里有点疑问,如果用户量少的话我可以一个用户建立 一个数据表,但是用户量大的话怎么设计呢?我百度了一下,有说存储在一个字段用字符分离的 ,也有说建立这样的 好友1 好友2 好友3 本人 0 0 0 好友1 0 0 0 好友2 0 0 0 好友3 0 0 0 如果这样的话是不是有点繁琐了? 有数据库的高手有自己的一些看法吗?
jpa 关系映射 必须建立数据库外键吗?
比如有两个表Orders(订单表),orderItem(订单项),我创建的时候只分别建了主键。没建任何外键。 我只在Entity中定义OneToMany 和ManyToOne 等映射关系。这样可以正常查询到映射的对象信息吗? 也就是说,抛开数据库设计规范来说,我的数据库表关系完全依赖jpa映射,而不是依赖数据库表中建立的外键(我没创建任何外键关联,只是在表中建有另外表的主键字段,如orderItem表中有orders_id)。 这样从程序上来说可以正常跑吗? [b]问题补充:[/b] 这些表是我自己建立的,建立的时候没加外键,只是在实体类里里加映射关系,目的是方便获取相关联的对象。
sql数据库设计,一对多的问题。数据量在200w+,求设计思路
拿新闻系统来说。一条新闻对应多个分类,正常来讲表设计为一对多的关系,3张→新闻表,分类表,新闻分类关联表。随着时间的推移,新闻越来越多,表中的数据越来越大。查询起来会越来越慢。程序要求能够按照多个分类(or的关系)、标题、地区等去搜索新闻、分页。如何设计这个系统的表结构才能使得搜索高效快速?(分类均为五位数的ID),新闻内容需要格式,html代码,需要什么类型?与新闻表分离还是在一起呢?目前数据量200w+。 旧的程序设计是只有一张新闻表,分类单独一个字段,分类字段数据用逗号隔开‘10001,10002,10012’这种,新改版后需要多个条件搜索,按目前200w左右的数据like查询,三个分类or的关系查询都得个4s甚至更多,实在接受不了。该如何设计?如果现有的表结构不改变该如何优化?求解~~~ SQL Server
数据库轻量级查询问题
<p>请教一个问题:</p> <p>1.现在数据库有个超过10个字段的用户表userInfo,Java里也有个对应的UserEntity,现在我要显示一个用户列表页,但列表页只显示部分字段,点击其中一个查询才显示当前用户全部信息,在一本关于重构的书中看到这样的查询最好使用轻量级查询,就是只从数据库返回当前需要字段</p> <p>比如这样,列表页只需要显示姓名,性别,年龄,住址,邮编,sql语句可以写成这样:</p> <pre name="code" class="sql">select name,sex,age,address,zipcode form userinfo</pre> <p> 但是用JavaBean接收时,假设查出来10000条数据,我还是要new 10000个UserEntity来封装信息,书上说只查询部分信息却要完整实例化一个重量级Bean是不好的,而且我也觉得这样Bean这样设计也是有问题的,但是他给的解决方案我也没看得懂,所以在这里请教下前辈,你们对这样的情况怎么设计(假设数据库表设计是没问题的,就是10个字段,而要在前台用户部分信息列表),书上提到的JDO(Java Data Object)我也不知道干嘛用的, 和这个有关系吗?</p> <p>如果我的描述不清晰的话,请前辈加我QQ:78533664或者留下您的QQ,我很好学,希望能得到前辈们的教导,谢谢</p><br /><strong>问题补充:</strong><br />关于1楼前辈的回复,我有个疑问,请问这样是不是造成字段重复了
如何通过ext展示blob字段内容?
通常我们用ext展示数据时,记录最后通常是一个详细资料按钮,展示记录详细信息,通常通过var selectRecode = grid.getSelectionModel().getSelected();得到该行记录,可是当字段类型里有blob类型时,是不能直接展现出来的,如何展现blob数据内容那? [b]问题补充:[/b] ok,你们讲的我都明白了,我的blob里的内容是字串,如果我通过ajax的方式提交通过id得到blob的内容,是json格式,我如何将blob的内容赋给记录的blob字段那? [b]问题补充:[/b] to 汪兆铭:因为blob里有二进制和数字,我只是做界面展示的,数据库如何设计和我没关系的,我的意思是取出来的blob是json格式的,要转换成string,在set到form里
急求,一个课程设计作业,最近要去考G,实在没空做
简单SQL数据定义语言DDL的解释器实现 1、问题理解和分析(简单分析) 针对一个需求比较明确的问题,进行问题定义。明确“做什么(What to do?)”。 2、确定解决问题的方法(技术方案、简单设计) 主要是构思解决问题的主要思路,明确“怎么做(How to do?)”。采用自顶向下方法,确定各个功能,用模块图描述系统的功能。确定各个功能对应的函数,以及函数之间的关系并能用流程图描述函数的算法。 3、程序调试和运行(编码与调试) 通过计算机程序设计语言(C语言)依次把确定的功能转换为函数代码。在编写代码的过程能,运用跟踪调试技术解决各类语法错误和逻辑错误。 4、完成课程设计报告(整理) 提交课程设计报告,学生完成题目任务后,要完整地书写课程色环节报告,以初步培养学生文档书写能力。课程设计报告主要内容应包括: ①问题定义 描述题目要解决的问题。 ②设计描述 简要说明对题目的分析设计过程;系统应包含哪些主要功能模块(课程设计前动员大会时,指导教师举例说明);确定有哪些函数组成该程序,并且说明每个函数的原型、功能或目的;每个函数要借助于哪些函数共同完成了什么功能; ③编码与验证 程序的主界面;各个函数的伪代码或流程图;程序的使用说明;程序功能上的验证性测试;验证结果,包含这些测试数据和运行结果; ④总结 遇到的主要问题的关键解决方法,对设计和编码的回顾、讨论和分析,进一步改进设想、经验、收获、体会以及受到什么启发等。 ⑤附录 包含主要代码清单。 5 课程设计具体内容 SQL的DDL用来定义关系数据的模式、外模式和内模式,实现对模式、基本表、视图以及索引的定义、修改和删除操作。本解释器只要求大家实现数据库模式创建及删除、基本表的创建、修改、删除及显示操作。本题目的所有信息均以文件方式存储,大家在做题目之前先查看一些有关数据库SQL语言的知识。 (1)数据库模式创建语句格式: Create schema <数据库名>; 说明:该语句创建一个空的数据库,后面创建的表、视图、索引等数据字典信息均存放在该数据库下。 (2)数据库模式删除语句格式: drop schema <数据库名>; 说明:该语句删除一个数据库,包括数据库本身、属于该数据库中的表、视图、索引等全部删除。 (3)创建表的语句格式: Create table <表名> ( <列名1> <数据类型1> [<列级完整性约束1>] [,<列名2> <数据类型2> [<列级完整性约束2>] [, …] [,<列名n> <数据类型n> [<列级完整性约束n>] [,<表级完整性约束1>] [, …] [,<表级完整性约束n>] ); 说明:该语句在当前数据库下创建一个新表。字段数据类型只要求支持char(n)、varchar(n)、int、boolean、numberic(p,q)、float(n)、date、time等八种数据类型。列级完整性约束只要求支持primary key、unique、not null三种。表级完整性约束只要求支持primary key、foreign key两种。注意:同一数据库名下表不能同名,同一表中列字段不能同名。 例如: Create table student ( Sno char(10) primary key, Sname char(20) unique, Sdept varchar(20) not null ); Create table course ( Cno char(6) primary key, Cname varchar(20), Ccredit numberic(5,1) ); Create table sc ( Sno char(10), Cno char(6), Grade int, Primary key (sno,cno), Foreign key (sno) references student(sno), Foreign key (cno) references course(cno) ); (4)修改表的语句格式: Alter table <> [add <新列名> <数据类型> [完整性约束]] [alter column <列名> <数据类型>]; 例如: Alter table student add sbirthday date; 修改student表,往表中增加一个sbirthday字段,类型为date。 Alter table course alter ccredit int; 修改Course表,把ccredit字段的数据类型由numberic改成int。 (5)删除表的语句格式: Drop table <表名>; 从数据库中删除该表。 (6)显示表结构的语句格式: Describe table <表名>; 显示指定表名的表结构信息。 ## 这就是解释器的要求,求代码和说明文档!用c\c++\c#都可以
这种情况应该怎么设计表结构? 有个“抽象类”。
有用户表,还有用户组表,一个用户组可以有多个设备,一个设备可以属于多个用户组。 用户组和设备是多对多关系,所以有一个用户组和设备关联中间表。 设备有不同的种类,比如摄像机,照相机等。 如果设计成 摄像机和照相机是2张表,那么 用户组设备关联中间表的“设备ID”就没法设置外键,如果设计成一个表,外键没问题,但是不同种类的设备,除了 名字,描述这样的字段外,其他字段并不相同。 设备很像一个“抽象类” , “抽象类”需要单独建个表么? 这种情况应该怎么设计表?
反范式数据表与实体类设计问题
商品有多张商品图片,一对多关系。<br> 项目中采用单表设计,沿用太久,原因就不追溯了,也没有动改它结构的念头。<br> 忽略其它字段,product表包含img1Path、img2Path、img3Path……img10Path,对应的product实体类也包含这10个成员变量。(path即图片链接,字符串)<br> 目前img1Path到img10Path都可能为空,需要遍历;也没有采用数据传输对象,用map返回。<br> 所以页面需要带一张图片的商品时,原本业务代码大概如下: ``` Product p = productService.get(productId); Map<String, Object> pMap = new HashMap<String, Object>(); pMap.put("name", p.getName()); // ……其它字段 pMap.put("imgPath", p.getImg1Path() != null ? p.getImg1Path() : p.getImg2Path() != null ? p.getImg2Path() : p.getImg3Path() != null ? p.getImg3Path() : p.getImg4Path() != null ? p.getImg4Path() : p.getImg5Path() != null ? p.getImg5Path() : p.getImg6Path() != null ? p.getImg6Path() : p.getImg7Path() != null ? p.getImg7Path() : p.getImg8Path() != null ? p.getImg8Path() : p.getImg9Path() != null ? p.getImg9Path() : p.getImg10Path() != null ? p.getImg10Path() : null); ``` <hr> 这样复用性差,我把抽取getImgPath(Product product)方法到service层: ``` public String getImgPath(p) { return p.getImg1Path() != null ? p.getImg1Path() : p.getImg2Path() != null ? p.getImg2Path() : p.getImg3Path() != null ? p.getImg3Path() : p.getImg4Path() != null ? p.getImg4Path() : p.getImg5Path() != null ? p.getImg5Path() : p.getImg6Path() != null ? p.getImg6Path() : p.getImg7Path() != null ? p.getImg7Path() : p.getImg8Path() != null ? p.getImg8Path() : p.getImg9Path() != null ? p.getImg9Path() : p.getImg10Path() != null ? p.getImg10Path() : null; } ``` 上面的业务代码可以改写为: ``` Product p = productService.get(productId); Map<String, Object> pMap = new HashMap<String, Object>(); pMap.put("name", p.getName()); // ……其它字段 pMap.put("imgPath", productService.getImgPath(p)); ``` 有些字段字段通过实体类的方法获取,有些通过业务层的方法获取,不优雅。 <hr> 其实能不能这样做,在product实体类中增加一个成员变量imgPath(数据表没有与之对应的imgPath字段)。<br> 该成员变量无set方法,有get方法,如下:<br> ``` public class Product { private String img1Path; // …… private String img10Path; private String imgPath; public String getImgPath() { this.imgPath = this.img1Path != null ? this.img1Path : this.i2Path != null ? this.img2Path : this.img3Path != null ? this.img3Path : this.img4Path != null ? this.img4Path : this.img5Path != null ? this.img5Path : this.img6Path != null ? this.img6Path : this.img7Path != null ? this.img7Path : this.img8Path != null ? this.img8Path : this.img9Path != null ? this.img9Path : this.img10Path != null ? this.img10Path : null; return this.imgPath; } } ``` 上面的业务代码可以改写为: ``` Product p = productService.get(productId); Map<String, Object> pMap = new HashMap<String, Object>(); pMap.put("name", p.getName()); // ……其它字段 pMap.put("imgPath", p.getImgPath()); ``` 甚至这个pMap也不封装了,直接返回p对象,模板引擎通过p.imgPath获取这个一个图片路径(突然想到,自己先去试一下)。<br> 实体类这样写,是否更方便、合理? <hr><hr> 验证了一下上面突如其来的猜想,结果如下: ``` public class Product { private String img1Path; // …… private String img10Path; public String getImgPath() { return this.img1Path != null ? this.img1Path : this.i2Path != null ? this.img2Path : this.img3Path != null ? this.img3Path : this.img4Path != null ? this.img4Path : this.img5Path != null ? this.img5Path : this.img6Path != null ? this.img6Path : this.img7Path != null ? this.img7Path : this.img8Path != null ? this.img8Path : this.img9Path != null ? this.img9Path : this.img10Path != null ? this.img10Path : null; } } ``` 即不需要添加字段,可以直接添加一个get方法,方法名与本来想添加的字段字段名一致。<br> 例如字段为:xxXxx,则添加的方法为:getXxXxx()。<br> 后台把product放到json里返回到js(项目用的是AvalonJS 1.5),js可以通过product.xxXxx直接拿到数据。这跟之前用过的freemarker类似,.xxXxx取值调用的是getXxXxx()方法。
ORM框架选择问题
我司有一套C/S系统,现在想用java开发一套web系统出来(后台数据库用原来的),现在对ORM框架选择上有点头痛,情况如下: 由于后能数据库不变用原来的,问题是由于后能经过了多个人架构,主键风格各异, 1。每个表有一个id自增量作为主键,但在一对多的主子表关系中,子表的关联字段有的是用主表的id,有的是用一个人工自定义主键,如销售单明细表中的关联字段是销售单主表的销售单号,有些规范的用的是销售单主表的id, 2。再比方我有员工档案表用到了部门信息表,在后台设计时可能设计成nDeptId(部门信息表的id自增列),有可能设计成vDeptNo(部门信息表人工定义的部门编号). 现在我们C/S模式开发,偏向于写sql语句及后台存储过程,关联出结果集在前台加工好后save到后台,很方便,虽然没有面向对象的思想,类似于.Net中的SqlAdapter,DataSet,取回数据加工然后insert,updata,delete, 请问应该选用哪种ORM框架呢? Hibernate还是myBatis,还是有其更好的框架? 另:我们的后台某些表(如条码表)数据量会很大。
调用hibernate的query接口为hql语句参数传值,没起作用?
先说说我的hql语句: [code="java"]FROM Ciuser U WHERE 1=1 AND U.id.userId=?[/code] hibernate对应的表是无主键,我传参的方式也是用‘?’代替的,而不是‘:参数名’。 通过hibernate的Query接口执行hql语句。 [code="java"] Query query = session.createQuery(hql); query.setParameter(0,值); return query.list(); [/code] 代码运行大致是这样,但是执行完后是没查询到任何结果的。 后来我换成‘:参数名’的方式进行传参,但还是没有效果。 但是我换种方式,直接拼成字符串 [code="java"] FROM Ciuser U WHERE 1=1 AND U.id.userId='" + string对象 + "' Query query = session.createQuery(hql); return query.list(); [/code] 以上拼字符串方式又是没问题的,不知道是什么原因,请各位指教! 我所使用的hibernate是3.3.1.GA spring是2.5.5。不知道和包有关系没有? 以前我使用JDBC也遇到过此种问题,当时没有重视。PreparedStatement的setParameter,也是没起作用,为什么呢? [b]问题补充:[/b] 我找到原因了,跟数据库字段类型有关系。 USER_ID这个字段,在数据库中是char(20),使用setParameter的话,就必须补空格20位定长才能查询出来,如果字段类型是varchar()就没问题。 但是char()的效率在varchar()之上,也不能因为程序的原因去修改数据库,何况USER_ID这个字段是会经常修改的。 如果这种问题,各位平时是怎么处理的。 [b]问题补充:[/b] 我用的是oracle数据库。 我用char的原因是USER_ID这个字段值不是定长的,但是会经常修改,如果换成varchar的话后期查询效率肯定会大大降低的。 如何是这种情况大家怎么处理。 [b]问题补充:[/b] VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起'行迁移' (Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
有关报表统计
现在在做一个政府的报表统计项目,这些报表有月报,季报。上边和左边都有固定的指标名称,中间要填写的内容??请问一下像这种报表怎么设计数据库? [b]问题补充:[/b] 请问什么是bc范式? [b]问题补充:[/b] 这种表格属于交叉表,有固定的行表头,和列表头。我是按行表头的列数是设计数据表,也就是提交一张报表,就同行插入好几行(列表头的数量)记录。。这样汇总起来,感觉不好汇总,请问象这种应该怎么设计数据库??期待高手的回复。 [b]问题补充:[/b] 行和列都是固定的。是交叉报表。有一个朋友跟我说,行和列哪个数目多,就把它设计成表里的字段,那个少的当成记录。比说行表头有6列,列表头有9行。就把列设计成字段。填一张报,会往数据库里插6条记录。 请问这样设计行不? [b]问题补充:[/b] 表结构是这样的: 总计 | 限额以上企业 | 限额以上国有集体企业 --------------------------------------- 合计 |其中工业 | 合计|其中工业 | 合计|其中工业 企业个数 -------------------------------------------------------------------- 从业人员 ------------------------------------------------------------------- 营业收入 ------------------------------------------------------------------- 总产值 -------------------------------- 增加值 --------------------------------- 实交税金 ---------------------------------- 资产总额 ---------------------------- 利润总额 出口产品交货值 [b]问题补充:[/b] 这里不能插图片 , [b]问题补充:[/b] 行或列应该是有一个是固定的,你就用按照固定的那一个来设计 比如:列项是固定的,行是从数据库中选出来的某个值 这样你就按照列设计表格,设计行的时候也就与报表没什么关系了,只要存储的属性够用就行 ------------ 我现在就是把行头放到另一张表,做为记录,列头做成字段,把填写的报表内容放到列头为字段的那张表里,那用户填完一次报表时,就得往数据库里插好几条记录?这样设计行吗
关于sql性能问题,很难自己解决,请各位帮忙下
Sql 性能问题 T_plan表和t_plan_detail表为主从关系表,靠plan_id外键关联(存在索引)。 其中t_plan 100万行记录,t_plan_detail 1000万行记录,t_plan_detail.item_code上有索引。 简述下面sql语句有什么性能问题 (1)select count(*) from t_plan_detail t1 left join t_plan t2 on t1.plan_id = t2.plan_id where t2.item_code = ‘P004’ 上面提示说两处性能问题 (2)select count(1) from t_plan whre plan_id in( Select plan_id from t_plan_detail where item_code =’p004’ ) and plan status in(4,60) (3) Select plan_code , plan_status , create_date –create_date是t_plan_detail 的字段 From (select a.create_userid ,a.plan_code ,a..plan_status ,b* From t_plan a ,t_plan_detail b Where a.plan_id = b.plan_id And b.item_code =’p004’ Order by b.create_date , a.plan_code ) X Where x.create_userid = 1 order by x..plan_code desc 上面提示有三个性能问题 (4) 在某个数据表中有1000条记录,假设某状态字段有10个不同的值,且记录中状态的分布值会均等,那么按照该状态创建的索引的选择率是 A 10% B 50% C 90% D:100% E 都不对,请填写正确的值 库存明显帐invssummary表,存在下面一些字段 Columunname 字段含义 Year 年 Month 月 Plant 日 Productcode 产品编号 Productname 产品名称 Spec 规格 Warehouseid 仓库id Warehousename 仓库名称 Amount 库存金额 现在抽取每个仓库每月的库存金额排名前3的产品资料 ,请给出sql语句 (5)某集团公司以及北京,南京和上海分公司使用某套企业管理系统,要求不同岗位的用户分别有不同的权限,比如主数据管理和业务操作权限等,如何实现这些不同岗位的用户之间的权限管理?请先假设需求场景,再用你最熟悉的建模语言来表达你的设计思想 这道题更是没头绪,请各位给点思想
类似于微博 用户最后一条动态的查询
<p>有一个用户动态表 feed :</p> <p><img src="http://dl.iteye.com/upload/attachment/0073/1587/0fad367c-6d81-3406-b530-b16f10dc4a31.png" alt=""></p> <p>user_who_id和user_whose_id都是user表的外键 指向user表 </p> <p>一个好友关注表 concern :</p> <p><img src="http://dl.iteye.com/upload/attachment/0073/1589/3ef92829-984e-3491-943a-8bd9d2848481.png" alt=""></p> <p>fans_id和follow_id都是user表的外键 指向user表</p> <p> </p> <p>这个时候我需要查询出所有我关注的好友,并显示他们的最后一条动态.</p> <p><br><img src="http://dl.iteye.com/upload/attachment/0073/1593/298c5545-9b8b-32a7-9d10-537e86889045.png" alt=""></p> <p>类似于上面这种形式.</p> <p>之前的一种做法是 查出好友,然后根据好友id去查询出好友最后一条动态,然后塞到好友对象中,也就是在concern中加一个不持久化的属性  lastFeed</p> <p>这样的话还好做些,但是有个需求就是<strong>根据好友最后动态的更新时间</strong>来进行我好友的排序.</p> <p> </p> <p>之前的做法就是根据我的好友进行分组查出好友最后一条动态 并根据动态创建时间排序.</p> <p> </p> <pre name="code" class="java">select f3 from Feed f3 where f3.id in(select max(f2.id) from Feed f2 where f2.id in(select f1.id from Feed f1 where f1.who.id in(select c.follow.id from Concern c where c.fans.id=&lt;我&gt; and c.isFriends=1) order by f1.id desc) group by f2.who.id) order by f3.id desc</pre> <p> </p> <p> 然后再根据动态中的user_who_id(动态的产生者)去查询concern,然后再将lastFeed放到concern中传到前台.</p> <p>这样做感觉很烂,效率不好,而且很麻烦.</p> <p> </p> <p> </p> <p>后来想到一种做法,就是在 user表中加一个字段 last_feed_id 就是用户的最后一条动态的id.是个外键.相当于user表示子表,feed表就是主表.</p> <p> </p> <p>这样查询很方便,hibernate中直接concern.follow.lastFeed即可.</p> <p>排序的话根据lastFeed的时间排序即可.</p> <p> </p> <p>但是目前遇到的问题就是更新时很麻烦,例如(用户评论了一篇文章) 如果这篇文章被删除,那么相应的评论动态都要删掉.这时候就需要更新user表的最后一条动态.</p> <p>因为Feed表这时是主表,user变成从表,删除feed时 可能会有外间约束,删不掉.还必须先解除外间关系,再删feed,然后再查询出最后一条动态,更新到user表中.</p> <p> </p> <p>感觉这两种都不咋地啊,有没有别的更好的设计方法?</p> <p> </p> <p> </p> <p> </p>
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问