Questions tagged «database»

该标签用于一般数据库问题。如果您对SQL有疑问,请改用该标记。

6
淘汰过时的数据库列的最佳实践是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我正在设计一个应用程序,它将在早期阶段从客户端收集数据A,B和C,但稍后将收集数据A,B和D。 A,B,C和D非常相关,现在作为单个数据库PostgreSQL表T的列存在。 一旦不再需要C,我想从我的应用程序中删除它的引用(我使用Django ORM),但是我想保留已经输入的数据。最好的方法是什么? 我曾考虑过为ABD创建一个新表,但这意味着可能会导致引用表T的任何行出现问题。 我可以只保留C列,并删除代码中对它的引用,以使现有数据得以保留。 有没有我看不到的更好的选择? 一些额外的细节: 行数不会很大,很可能每个用户1-2行。这是一个大众市场应用程序,但是当我从C切换到D时,用户群还不会很大。尽管有可能,但C和D可能不会同时收集。C和D可能分别代表多个列,而不仅仅是每个列。

2
我应该在数据库中将电子邮件地址保留为纯文本格式吗?
每个人都很清楚(我希望),存储密码而至少不加盐/散列是一个糟糕的主意。 电子邮件呢?假设您保留了订阅电子邮件地址,如果您对其进行了正确的加密,则可能无法向用户发送电子邮件。另一方面,如果您不对其进行加密并且数据库被盗,则所有用户都可能面临潜在的垃圾邮件风险。 这个问题不是关于特定法律的问题(尽管可能会给出,但仍然取决于国家/地区),也不是关于加密数据库本身。

3
“您将如何构建此网站/应用程序”面试问题的一般思考过程[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我收集了许多面试问题,例如“描述如何设计相册应用程序”,“描述如何设计此特定网站的特定功能”(例如在Facebook上喜欢,在亚马逊上推荐,购物车,游戏黑色杰克)。那么,如果有成千上万的东西呢?你会改变什么? 看起来这是在期待数据库架构还是一堆类定义(或两者都在?)。我在学校里已经学习过数据库,但是我以前从未真正设计过一个应用程序,并且很难知道从哪里开始,我提出的设计是否“好”以及我可以进行哪些更改以使其可扩展。 设计这些系统时是否有一般的方法或思考过程?我应该设法避免的一般问题/设计中出现的很多问题?有人可以指导我讲解其中的一个(或最好是全部,同时比较每个人的需求)并解释一下: 1)您如何提出需要哪些实体?2)您如何决定一切将拥有什么关系?3)您如何将性能优化纳入设计?4)我使用类或数据库吗?会有所不同吗(例如,我是否有一个不能真正转换为数据库表的类?) 我问的主要原因是因为我正在经历“破解编码面试”,我的答案与作者的答案完全不同-我对重要的类有不同的看法。 我的尝试: 使用照片共享应用程序,我将获得以下课程/表格:可以肯定的是照片和用户。 然后,我认为如果我们尝试创建模式,那么如果我们假设照片中的每个人都链接到照片,那么将存在一个链接照片和用户的表格(此表格是否必要?如果不是,是否仍然是惯例?是否有用于多对多关系的单独表格?)。 但是,如果我们尝试采用一种面向对象的方法,也许我们会拥有一个名为Album的类,它可以完成所有工作并具有来自其他两个表/类的所有信息。这是我在书中注意到的一件事-有一堆类,然后一个类基本上具有所有信息并连接了其他类-这是常见的吗?例如,在我上面的示例中,这似乎适用吗? 我只是希望遵循一些通用规则/准则,因为现在我还不知道如何判断大型系统的良好架构是什么样的。

6
数据库规范化后是否还需要索引
完成良好的归一化之后,还需要对表建立索引吗?这将如何影响性能?良好的规范化后,它甚至会以某种方式影响性能吗? 如果您已经具有主键和外键,通常会索引哪些列? 规范化数据库似乎已经有效。但是,我可能已经跳过了索引如何影响数据库。这仅在使用查询时有效吗?如何运作/执行并改善数据库?

4
具有SQL和数据操作功能的TDD
当我是一名专业程序员时,我从未接受过软件工程方面的正式培训。由于我经常在这里访问,所以我注意到了尽可能编写单元测试的趋势,并且随着我的软件变得越来越复杂,我认为自动化测试是帮助调试的一个好主意。 但是,我的大部分工作涉及编写复杂的SQL,然后以某种方式处理输出。例如,您将如何编写测试以确保SQL返回正确的数据?然后,假设如果数据不受您的控制(例如,第三方系统的数据),那么您如何能有效地测试您的处理例程,而不必手写大量的伪数据? 我能想到的最佳解决方案是对涵盖大多数情况的数据进行查看。然后,我可以将这些视图与SQL连接起来,以查看它是否返回正确的记录,并手动处理视图以查看我的函数等是否正在执行应有的功能。尽管如此,它似乎过于油腻和胡扯。特别是找到要测试的数据...


6
数据库程序员做什么?
每当我读到有关Oracle程序员的文章时,我都会感到困惑。我不知道他们到底在做什么。 据我了解,应用程序程序员需要开发核心功能。他们使用的库可能有助于GUI开发或数据库连接,但是使该应用程序必须对该应用程序进行编程的功能,以及使每个应用程序都不同的功能(有些可能是其他版本的调整版本)。 在这种关系中,数据库编程不是从根本上创建表吗?这些表是否不响应通常由前端应用程序发出的SQL语句进行处理?那么创建表有什么大不了的?

4
如何从数据库角度处理实时数据?
我有一个主意,但它仍然使我迷惑数据库区域。 想象一下,我想显示实时数据,并使用一种最新的浏览器技术(Web套接字 -甚至使用较旧的浏览器),很容易向所有可观察对象(用户浏览器)显示每个人的工作。 雷米·夏普(Remy Sharp)举例说明了这一点。 但是我仍然不了解数据库,我该如何喂食,让我们想象一下(使用Remy游戏Tron),我想在数据库中保存每个已连接用户的路径,以及客户端是否想了解发生了什么事情一个5秒的延迟,他将看到,不仅是那一刻的5秒,而且是时间的延续 ... 我如何查询这样的数据库? SELECT x, y FROM run WHERE time >= DATEADD(second, -5, rundate); 推荐的路径不对吗? 并在x时间内拉出x ...这不是真实的数据Feed正确吗? 如果有人可以帮助我理解数据库的观点,我将不胜感激。
14 database  sockets 

3
ORM是否会促进数据库非规范化?
Doctrine和Propel都利用单个和具体的表继承来映射对象关系。前者将类树中所有可能的字段映射到单个表,而后者将每个类都映射到特定表,从而在继承层次结构中复制了公共字段。 虽然这有利于ORM设备,但对我来说建议数据库设计不好。这些错误的设计模式是否可以在数据库上执行?

4
基准数据库
我看到许多关于数据库'x'的性能的讨论,或者从'x'到'y'的改进提高了我们网站的性能。 我尚未看到适用于不同类型数据库的适当基准测试。 是否有可能编写一个有意义的基准,该基准可用于多种数据库类型,例如关系型,面向文档等。 您将如何设计这样的基准?

3
后端ID是公开的还是不公开的?
根据这个人说的话:http : //toddfredrich.com/ids-in-rest-api.html 假设他关于使用UUID识别api资源是正确的。然后我遇到麻烦,尝试以这种方式实现它,这是: class FooEntity { final String id = null; //auto-generated by my backend (mongodb), not shared final UUID uid = UUID.randomUUID(); //the resource id } (在客户端和服务器之间,发送和接收DTO,而不是数据库实体。) 现在的问题是,这id不再有用,因为我不再使用它。客户端发出请求,uid所以为什么还要打扰2个id?然后我们回到开始的同一期。如果我将UUID设置为主键(_id),那么我会将后端ID公开。 除此之外,还有效率主题。我已经读过,通过ObjectId进行索引比UUID效率更高。

1
数据库中的领域模型可以成为可持续的解决方案吗?
我刚开始担任新职位,是一家基于Microsoft技术的中小型公司的数据库开发人员。我很早就注意到关于最佳实践,设计模式,测试和项目管理的实践与我在学校所教的有多少不同。 最让我烦恼的是我们的主要数据库开发人员(以下称“约翰”)如何将模型架构保留在数据库中!为此,我们有3个“魔术”表;一种用于数据库方案,一种用于表,一种用于列。 将记录插入“ 表 ”表中(通过数据库触发器)会生成实际的对应表。在“ 行 ”表中插入一行会用该行更新引用的表。反过来,他的自制C#程序会读取这些代码以生成C#模型,前端开发人员将其用于控制​​器和外部。 除此之外,大多数开发都是根据ASP.NET MVC框架完成的。 我发现这种方法存在一些缺陷: 我们需要他维护ORM,而他很少有时间这样做(工作安全性很好!) “表”和“行”表的触发器存在缺陷。它们不支持表更新,也不支持检查约束或更多“高级”功能。虽然我们可以肯定地改进它们,但我不确定这是否可行。 将程序逻辑保存在数据库中感觉很奇怪且很严格(尽管可以通过C#扩展他的模型)。 他的C#模型生成器必须由3个人之一(我是其中之一)手动运行,并且还不成熟,无法包含在自动化构建过程中。 一些人建议逐步使用像Entity Framework这样的经过测试的真实产品,但他不予理,,并声称将业务逻辑保留在代码层中仅适用于小型应用程序和启动项目。 这篇文章导致了一些看起来像是经过深思熟虑的讨论,但这并不是我的意图。我只想对我们的体系结构方法进行一些说明。 将域模型保留在数据库中是否可以成为成长中的公司的可持续解决方案?

2
带有额外列的单个表与具有重复模式的多个表
我正在一个项目上,在某个时候,我需要决定是否要在数据库中的单个表中包含不是每个记录都使用的多列,或者是多个表具有重复的模式。 我正在创建一个体育信息应用程序,它可以处理多种体育运动。例如,我们可以处理NBA,NHL,MLB,NFL。每种运动都有非常相似的概念-球队,日程表,伤害,球员信息。 当然,我们的数据源并不能为我们提供同一模式中的每条数据。每个运动都有一个不同的架构,我们从供应商那里接收数据。 因为没有足够的时间(客户需求)对数据源进行前期分析以确定共同点,所以我对冲了自己的赌注并进行了“安全下注”,为每种运动制作了单独的表格,而不是一组单独的表格体育使用。 结果是在多个表中复制了架构,因此也复制了数据库的接口(例如存储的proc)。我有一些类似NBA_Game,NFL_Game,NBA_Team,NFL_Team等的东西。每个表可能有一些其他人没有的属性,并且有几个是共享的。在4项或5项运动中,连续进行5-10桌。我仍然不确定这是否完全是一件坏事-另一种选择是,拥有一组表,表上具有并非所有运动项目都会使用的属性,它本身也可能很笨拙。 有谁做过这种设计的陷阱,可以在这里分享他们的经验吗?也许可以帮助我现在知道的事情,而不是刻苦学习的东西?您是否以另一种方式完成了工作,即拥有一个大表/一组表,并且使用了并非每条记录都会使用的列?您遇到了什么陷阱? 过去是否使用过一些替代方法,例如表继承,效果更好? 谢谢

5
什么时候应该比从文本文件解析数据优先使用数据库?
我正在制作一个Python程序来测量codereview.SE的增长。我的方法是获取首页上显示的“网站统计信息”,并将其存储在我的硬盘上。我计划每天执行一次。到目前为止,我已经做了足够的工作来获取统计数据并将它们附加到文本文件中。可以在github上查看python脚本。我使用的格式如下 22-08-2013 questions 9073 answers 15326 answered 88 users 26102 visitors/day 7407 22-08-2013 questions 9073 answers 15326 answered 88 users 26102 visitors/day 7407 我只运行了两次脚本,以获取文件中要使用的格式。最初,这对我来说似乎很好,因为我可以自己存储它,而且格式是相同的,因此很容易解析,但是不确定。似乎在这里使用数据库应该更好,因为那样检索数据应该更容易。请注意,我从未使用过任何数据库,也不了解SQL,MySQL或RDBMS的任何其他变体。 因此,这使我想到了这个问题。什么时候应该首选数据库来存储数据而不是将数据存储在文本文件中?在决定是否需要数据库还是简单的文本文件时,是否可以找到一些指针? PS:如果可以添加更好的标签,请这样做。我对可以添加的标签有些怀疑。

4
数据库历史记录表/跟踪表
目前,我想构建一个跟踪/历史记录表,如下所示: PrimaryKey-ID OtherTableId-fk fieldName-其跟踪的字段名称 旧值 新价值 用户名 CreateDateTime 因此,基本上,我希望有一个表可以跟踪另一个表的历史记录,并使用新值和旧值存储更改后的字段的列名。我的问题是,有人可以戳破这个漏洞吗?另外,最简单的方法是确保仅将其跟踪表中的列名输入到fieldName列中?目前,我的选择是在要构建的服务中包含一个枚举,或者创建另一个状态表并使fieldName成为fk。还有更好的主意吗? 修改 目标:我们目前只跟踪2个字段。一个字段将显示在网页上以显示历史记录,而另一个字段将仅由一个部门访问,并且他们有权访问他们可以查询的数据库视图。他们将只查询这一字段,以获得有关谁更改了字段以及更改内容的信息。这就是我们想要在数据库字段定义表列的位置而不是具有表记录历史记录的精确副本的地方进行设置的原因。我们只希望跟踪两个字段,以便将来增加或删除字段。 谢谢!
13 database  sql  tracking 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.