问题标签 [database-agnostic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
334 浏览

sql-server - 软件即服务 - 数据库

如果我正在构建一个 CRM Web 应用程序以作为会员服务进行销售,那么设计和部署数据库的最佳方法是什么?

我是否有 1 个数据库,每个表包含 100 条记录,或者为不同的客户部署多个数据库?

因为我相信像 Flickr 这样的网站使用它们,所以使用单个数据库真的有问题吗?

0 投票
2 回答
532 浏览

sql - 标签和 URL 的数据库设计

我在 JSP 中为自己构建简单的应用程序,它为我存储 URL 并根据标签找到它。我想为此设计一个数据库。我对 SQL 的了解有限。但我仍然想边做边学。

我想创建存储 URL 和 URL 本身标签的数据库。URL 可以是表格列中的 text(50) 或更多(或任何其他建议?)。存储 URL 后,我想关联一个标签(又是 text(50) ?)。我需要将标签和 URL 与表格分开吗?如果是这样,我应该如何以任何方式将 URL 和标签相互关联

我的问题可能重复,但我关心我的数据库设计(如上所述)和 SQL 语法。所以请建议我如何进行。

我是否以正确的方式进行?还是我需要考虑更好的数据库设计?关于数据库设计的任何建议?

0 投票
7 回答
995 浏览

sql-server - 困难的时间跨表数据库约束

我有一个特别困难的业务约束,我想在数据库级别强制执行。数据本质上是财务数据,因此必须保护其免受第 n 级的不一致——不要相信业务层有这些东西。我使用“时间”这个词有点松散,意思是我打算控制一个实体如何随着时间而改变和不能改变。

修饰细节,这是设计:

  • 一张发票可以包含多项费用。
  • 创建发票后不久,费用将分配给发票。
  • 发票到达流程中的某个阶段,之后它被“锁定”。
  • 从此时起,不得在此发票中添加或删除任何费用。

这是一个精简的数据定义:

您会注意到发票的“可锁定”性质未在此处表示;如何表示它——以及它是否需要直接表示——仍然是一个悬而未决的问题。

我开始相信这是无法转换为域密钥范式的安排之一,尽管我可能错了。(毕竟真的没有办法说出来。)也就是说,我仍然对高度规范化的解决方案抱有希望。

我碰巧在 SQL Server 2008 上实现了这个(语法可能是一个提示),但我是一个好奇的人,所以如果有适用于其他 DBMS 的解决方案,我也很想听听这些。

0 投票
3 回答
613 浏览

.net - 数据库中立的 .NET 应用程序

许多产品开发人员希望编写一个 .NET 应用程序,该应用程序可以与任何流行的 RDBMS(如 SQL server、oracle、DB2、MySql)无缝协作。如果我们使用数据应用程序块,它会根据配置动态选择数据库驱动程序(OracleClient、SQLClient 或 OleDBClient)。

但是,所有数据库都有自己的 SQL 风格。有一些细微的差异会阻止一个 SQL 代码库被普遍使用 - 函数名称不同,日期处理方式不同,身份列处理方式不同等等。

可以使用 Data Direct 的第三方产品,使用预定义的转义序列编写 DB 中性代码。

Microsoft 是否有任何工具或产品可以解决此问题?

0 投票
4 回答
2052 浏览

database - 数据库独立性

我们正处于设计具有多个模块的大型业务应用程序的早期阶段。要求之一是应用程序应该独立于数据库,它应该支持 SQL Server、Oracle、MySQL 和 DB2。

根据我在网上阅读的内容,数据库独立性是一个非常糟糕的主意:它会导致代码难以维护、数据库设计在所有受支持的 DBMS 中具有最不常见的特性、性能差和可扩展性差。我个人的直觉是,这个功能的复杂性,比任何其他功能都多,可能会成倍增加开发成本和时间。代码将是可怕的。

但我无法说服任何人忽略此功能。问题在于,关于这个问题的大多数数据都是经验数据,缺乏支持该案例的数字。如果有人可以分享有关该问题的任何数字支持的数据,我将不胜感激。

一种可能的设计选项是将实体框架用于数据库层,并为每个 DBMS 提供提供程序。我个人的感觉是,在没有任何 ORM 的情况下手动编写 SQL 语句将是“必须”的,因为您无法控制实体框架生成的 SQL,并且独立于数据库的场景将需要基于 DBMS 进行一些 SQL 调整代码是目标,并且我认为第三方实体框架提供商将有大量的错误,这些错误只会出现在应用程序将具有的复杂场景中。我想听听任何曾经有过使用实体框架进行数据库独立场景的经验的人的意见。

此外,团队讨论的一种可能性是在第一次迭代中支持一个 DBMS(例如 SQL Server),然后在后续迭代中添加对其他 DBMS 的支持。我认为由于我们需要一个具有最少通用特性的数据库设计,因此这种开发策略很糟糕,因为我们需要在开始为第一个 DBMS 编写代码之前了解所有数据库的所有特性。我也需要听听你关于这种可能性的消息。

0 投票
3 回答
330 浏览

c# - Agnostic Connection Handlers in .NET

I'm developing a simple database acessor for a system, but i need to support 2 databases, PostgreSQL and Oracle (XXg);

A example would be like this (already working for pgsql)

I was wondering if it is possible to build a class to handle these two databases using only System.Data interfaces, like IDataReader, IDbConnection, etc. I think it is, but i'm kinda stuck when i need to instance the connection. Example:

In the other case, i would have (_connection is typeof(IDbConnection):

Is there a quick way to do this?

These are simple database requests, I don't need anything fancy, it's a small system.

Thanks for your attention!

0 投票
2 回答
2962 浏览

sql - “简单”库存系统的设计

我想为本地计算机硬件非营利组织制作一个关系数据库系统。我想弄清楚如何实现两个相互关联的功能。首先,我们需要管理我们的零件库存,其次,我们需要跟踪计算机系统的捐赠,因为它们进入我们,以及我们将它们发放出去。

首先,我们有一个简单的零件清单。我们不需要跟踪单个零件(无论如何我们不能),所以我要建模的是计数。我的想法是有不同的零件“箱”,只有一个简单的计数。因此,如果我们将视频卡从其“库存”箱移动到“回收”箱,我想要一个-1 到视频卡库存,+1 到视频卡回收。bin 可以根据需要进行更明确的定义,例如 pci-video-cards、agp-video-cards 等。或者,如果我们计算库存,我们可能需要从库存中执行 -3 和 +3 到 '收缩”。

这样做的目的是随时知道我们有多少显卡,多少内存条等等。一个垃圾箱的两个方面将是它里面有什么样的部分(无论具体程度如何,例如 'old-misc-card' 或 '32MB-3.3v-agp-video' ),以及 bin 的用途,例如 'donation-in'、'inventory'、'recycling'、'store'、'缩水”等。

另外,我们希望看到零件的潮起潮落的趋势,以及历史数据,所以我们需要随时查询库存。

那么我将如何设计表来处理呢?我想它会像一个复式分类帐。我可能有一张名为“BinTransactions”的表,其中有 from_bin、to_bin 和数量。金额将是一个正整数,如果我想编写一个查询,看看将从库存中取出多少,我会将其设为负数。类似于“SELECT SUM(amount) * -1 FROM BinTransactions WHERE from_bin = 'inventory' AND time_period = ...”?

第二部分是计算机系统本身。无论处于何种状态,它们都是以捐赠的形式进入的。零件可以从它们中取出并放入库存或回收利用;零件可以从库存中取出并放入计算机中。我想我可以做一台电脑

一台计算机最终作为一种授权离开了我们的系统,但这种结构有一层嵌套。它是计算机中的计算机部件的集合,但也有显示器、键盘、鼠标,也许还有扬声器。并且大笔拨款可能是几个系统,还带有网络设备。是否应该“嵌套”分组的逻辑层次结构(将零件放入计算机,将计算机放入赠款),或者每次捐赠都只包含一大组零件是否可以?如果它是一大组零件,如果我们从赠款中收回一台计算机,则不一定知道哪些零件与哪台计算机配套使用。此外,我们希望能够从报告中了解“本季度捐赠了 34 个完整的系统......”

0 投票
4 回答
549 浏览

ruby-on-rails - 是否可以以与数据库无关的方式将日期搜索为字符串?

我有一个带有 PostgreSQL 数据库的 Ruby on Rails 应用程序;几个表具有 created_at 和 updated_at 时间戳属性。显示时,这些日期在用户的区域设置中进行格式化;例如,时间戳2009-10-15 16:30:00.435变成字符串15.10.2009 - 16:30(此示例的日期格式为dd.mm.yyyy - hh.mm)。

要求是用户必须能够按日期搜索记录,就好像它们是在当前语言环境中格式化的字符串一样。例如,搜索15.10.2009将返回日期为 2009 年 10 月 15 日的15.10记录,搜索将返回日期为任何年份的 10 月 15 日的记录,搜索15将返回与 15 匹配的所有日期(日、月或年)。由于用户可以使用日期的任何部分作为搜索词,因此无法将其转换为日期/时间戳进行比较。

一种(慢速)方法是检索所有记录、格式化日期并对其执行搜索。这可以通过首先仅检索 id 和日期,执行搜索,然后获取匹配记录的数据来加速;但对于大量行,它仍然可能很慢。

另一种(不是与数据库无关的)方法是使用 PostgreSQL 函数或运算符将日期转换/格式化为数据库中的正确格式,并让数据库进行匹配(使用 PostgreSQL 正则表达式运算符或诸如此类)。

有没有办法以与数据库无关的方式有效地执行此操作(无需获取所有行)?还是您认为我走错了方向,应该以不同的方式解决问题?

0 投票
1 回答
66 浏览

database - 当数据库中的表的行数超过索引数据类型的最大大小时会发生什么?

例如,如果我的表中有一个 unsigned int 索引,当我得到的行数超过 sizeof(unsigned int) 时会发生什么?我对 MySQL/PostgreSQL/MsSQL 感兴趣。

0 投票
3 回答
390 浏览

database - 应该避免哪些 orm.xml 特性以保持与数据库无关?

我正在 JPA 中冒险,并希望尽可能地保持与数据库无关。我应该避免哪些 orm.xml 功能以保持与数据库无关?

例如,如果我strategy="AUTO"在 orm.xml 中使用如下:

...然后 MySQL 将其显示为一个AUTO_INCREMENT列,如果我需要部署到 Oracle,可能(我还不确定)会导致问题。