基本上我的工作是使用数据库作为后端开发Web应用程序。到目前为止我一直在做的是,
基于客户的要求,
虽然我对这些事情并不完美,但我试图弄清楚这些关系应该与我过去的项目有什么关系。但在我看来,仍有一些疑点。
如果客户端询问他想要一个特定的数据,我试图通过直接SQL
查询或者想到scritp(在大多数情况下是PHP)来实现它,如果我无法找出一个查询全部用于该特定请求。
现在,我的问题出现了。
基于我的关系 在开发桌子时想出来, 是什么限制? 客户可以问?我的意思是说 这是,客户会问他 希望列出所有的indidual 产品,它们的数量,相关的 类别,所有的计数 类别,每个产品 类别和它们的价格,总和 所有的类别价格和 如此总价格如此。
这只是一个解释我情况的请求的例子。
现在,如果有任何请求可能需要更长的时间来执行,开发人员是否可以通过分解请求来满足此请求? 我需要告诉他为什么这种分解是必要的吗? 如果他觉得我不能一次性做到这一点怎么办?
他要求的每份报告都需要单一查询吗?或者是否需要借助PHP来处理一个循环并根据我得到的值,我提出一些条件来应用客户想要的规则?
做这种工作的更好方法是什么?
任何观点?
感谢。
答案 0 :(得分:4)
这通常取决于所使用的数据库。
大多数查询可以在一个选择中完成,但是这个shoudl永远不会阻止你查看 Views / Sub Selects / Stored Procedures
您应该能够以这种方式处理大多数查询,所以我建议:
不要让输出决定你如何设计数据库,这可能会导致你走错路。您需要将数据存储在适合应用程序的最规范化的区域中。
答案 1 :(得分:1)
很多问题!
基于我的关系 在开发桌子时想出来, 是什么限制? 客户可以问?
客户可以真正要求任何东西。客户并不总是理所当然的。帮助客户满足他们的需求是你工作的一部分。
我的意思是,这是 客户会问他想要所有列表 不计其数的产品,他们的数量, 相关类别,所有计数 类别,每个产品 类别和它们的价格,总和 所有类别价格和总额 价格等等。
使用SQL可以发现所有这些查询。要列出单个产品,请使用SELECT语句。要获得计数,请使用COUNT。要获取关联类别,请使用JOINS。使用SUM获得总价格。
现在,如果有任何请求可以 可能需要更长的时间 执行,开发人员可以满足 通过打破这个要求 请求?我需要告诉他原因吗? 这有必要吗?
是的 - 打破请求可以帮助客户了解他们的需求。
如果他怎么办? 我觉得自己无能为力 它一次性拍摄?
否则说服他。如果你想保住他的生意,你不希望他认为你是愚蠢的。 :)
他要求的每份报告是否都需要 在单个查询?还是会的 任何需要得到PHP的帮助 处理一个循环并基于 我得到的价值,我把一些 适用规则的条件 客户想要吗?
真的取决于你的技能水平。如果您足够了解SQL,则可以在一个查询中获得大部分数据。如果你不是那么好,那么你可能会做一些查询,然后在php中循环它们。通常,在SQL中完成所有操作会更快。
做这种工作的更好方法是什么?
你自己在为自己工作吗?如果是这样,有时只需要经验就能找到最好的方法。 (并发布到stackoverflow:)
答案 2 :(得分:0)
不应仅仅因为实施起来而难以更改或删除业务需求。
设计数据库架构以反映域模型并规范化至少3NF。
通常,可以实现聚合查询(例如通常用于驱动报告的查询)以利用索引和RDBMS特定功能来减少其运行时间。
答案 3 :(得分:0)
您应该查看requirement specification的一般原则并代表客户的需求,例如user stories,这是用户希望执行的任务。然后,您可以将每个用户故事作为一个工作单元。应该可以一次处理一个用户故事,因此您可以就提供它们的顺序达成一致。
最好将每个故事/查询视为单独的。这样,您可以根据客户端的需要在计划中添加或删除功能。如果您发现常见的模式,您可以在进行时重构它们。
许多问题来自于试图过度优化或过度概括的人。除非您发现它们开始重叠,否则我会单独编写每个查询。
答案 4 :(得分:0)
听起来你只需要提高数据设计技巧。正如旁观者所说,正确设计/规范化的数据库不会遇到您担心的问题。但是,如果你不断从错误中学习,那么学习设计数据库的正确方法需要花费大量的时间。当我开始作为网络开发者时,我发现Database Design for Mere Mortals给了你如何避免将自己画成角落的巨大帮助。关于如何在数据库上编写好的查询,还有一个companion book。这两本书不会教你所知的一切,但它们会给你一个很好的基础。
答案 5 :(得分:0)
听起来你缺乏信心。这些是开发人员每天面临的问题。我认为你认识到可能存在的弱点并且正在采取措施改进是件好事。花点时间了解有关数据库和查询的更多信息。
那就是让我直接回答你的一些问题:
现在,如果有任何请求可以 可能需要更长的时间 执行,开发人员可以满足 通过打破这个要求 请求?
我需要告诉他为什么会这样 分解必要吗?
如果他觉得我没有能力怎么办? 一次性做到这一点?
他要求的每份报告是否都需要 在单个查询?还是会的 任何需要得到PHP的帮助 处理一个循环并基于 我得到的价值,我把一些 适用规则的条件 客户想要吗?
答案 6 :(得分:0)
关系数据库的设计将对可以完成的任务(以有效的方式)产生巨大影响。我倾向于说这是你申请中最重要的部分
您绘制表格设计的过程是可以的。但之后你应该检查你的不同用途案例,看看(只用铅笔和纸)你的数据库设计是否能够应对它们。
然后,您可以与您的客户讨论,以确保某些案例永远不会发生。 (“例如:您能否确认产品将始终属于1且仅属于1类别”)。
那就是说,客户确实可以在规格中提出任何问题。您可以自由地接受,拒绝或向他解释为什么他的规格不切实际。如果您在没有明确规格的情况下以固定价格开发,那么您的情况很糟糕,这是您的错...