AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[application-design](dba)

Martin Hope
lit
Asked: 2019-06-25 06:31:04 +0800 CST

省略架构名称以更灵活地管理对 SQL Server 数据库的访问

  • -1

当应用程序硬编码模式名称时dbo.TABLE,它会降低 DBA 根据需要迁移数据的能力。

应用程序省略模式名称是否安全且更灵活?

我知道您会说这是“基于意见的”,但这是管理数据库的关键问题。

sql-server application-design
  • 2 个回答
  • 170 Views
Martin Hope
Jim
Asked: 2018-11-25 11:01:09 +0800 CST

DB设计避免应用层和数据库层版本不一致

  • 2

通常应用层的对象和数据库层的表是一对一的映射关系。
每当数据库模式发生变化时,这种耦合都会导致复杂性,并且应用程序版本可能与其正在与之通信的当前数据库版本不兼容。
我读到有一种由元数据驱动的数据库设计方法。从表中找到对象可用的字段之类的东西,然后完成查询。所以某种形式的方向是为了避免版本控制问题。
这种方法是否普遍使用,具体是如何实施的?还有其他方法可以解决这个问题吗?

database-design application-design
  • 1 个回答
  • 96 Views
Martin Hope
user69153
Asked: 2016-04-16 12:14:03 +0800 CST

将文件作为数据的一部分保存在 Mongo 中

  • 1

我想创建一个按以下方式工作的新闻应用程序:

该站点将包含文章,并且每篇文章都有多个版本。每个版本都是一个docx文件。文章本身除了版本之外没有任何内容。该集合将如下所示:

{
   Id:123,
   Versions: [{id:321, docx:"blob"},{id:444, docx:"blob"}]
}

我读过 Mongo 允许您以名为 gridFs 的格式保存文件,但据我了解,它为文件保留了不同的集合,并且不允许您将文件保留为自定义集合的一部分。

有人可以建议按照我描述的方式存储数据的最佳方式是什么吗?

mongodb application-design
  • 1 个回答
  • 953 Views
Martin Hope
Tom Sawyer
Asked: 2014-12-19 13:23:16 +0800 CST

何时将业务规则置于业务应用层或数据库约束中

  • 0

我需要你的智慧,我正在和另一个人辩论什么时候建议将业务规则的代码放入数据库约束或应用程序业务层内部?

有一个特定的字段用于工厂中机器设置的多个计算。今天,我们遇到了一个问题,因为文件维护人员没有指定必填字段,而该字段不知何故未在 ERP 的用户界面中验证。该字段会在计算中导致被零除错误,从而导致 PLC 机器崩溃并停止生产以重新启动 PLC 机器。

因此,我填写了一个文件维护请求,以填充所有值为零的字段,并向数据库管理员提出了第二个请求,要求在数据库中为该字段创建一个约束,以便如果必填字段为 0,则该记录将被拒​​绝。

DBA 拒绝了我的请求并告诉我验证 UI 或业务逻辑层中的特定字段。我告诉他,即使我这样做,Microsoft Access 中的某个人或任何其他具有正确权限的工具都可以将零分配给特定字段,这将再次停止生产。他回答我:“那又怎样?你希望我将业务逻辑层的所有业务规则重新编程为数据库约束吗?”

之后,我就在想“什么时候把业务规则放到业务应用层,或者放到数据库约束中”这个问题?

谢谢!塞巴斯蒂安

database-design application-design
  • 1 个回答
  • 278 Views
Martin Hope
user664303
Asked: 2014-12-10 06:09:57 +0800 CST

用户、事件和事件列表的数据库结构

  • 1

我正在创建一个用于管理事件的 Web 服务。该服务将拥有用户,这些用户列在一个名为“用户”的数据库中。它还将有事件,这些事件列在另一个数据库中,称为事件。

每个事件都会有一个受邀用户列表,其长度是可变的。每个受邀用户都有不同的属性,包括他们是否接受了邀请,以及他们是否参加了。

我打算使用 SQL 数据库;SQLite、MySQL 或 PostgreSQL。但是,如果有人建议,这可能会改变。

我的问题是我应该如何存储每个事件的受邀用户信息?要求是:

  1. 我可以同样轻松地查找受邀参加活动的用户和受邀参加的活动。

  2. 该解决方案是可扩展的,即如果我最终拥有数百万用户和数百万事件,那么该方法可以应对。请注意,每个活动只会有少量客人,例如 2-1000。

  3. 该解决方案在访问时间、计算资源和存储要求方面都很高效。

我想到的一些选择:

  1. 对于每个事件来宾列表,将用户 ID 和其他属性作为 blob 或每个属性的 blob 存储在事件数据库中。这里的问题是客人的数量各不相同。固定长度意味着浪费空间或限制最大访客长度大小。此外,这种方法不允许快速查找邀请用户参加的活动。

  2. 对于每个用户,将他们受邀参加的事件列表以及其他属性存储为用户数据库中的 blob。同样,问题在于事件的数量各不相同,并且这种方法不允许快速查找受邀参加事件的用户。

  3. 1 和 2 的组合。这引入了冗余,以及在保持两个数据库同步时发生错误的可能性。

  4. 每个事件用户列表的单独 SQLite 数据库。我怀疑这在存储和计算方面都非常低效。此外,它也不允许轻松计算邀请用户的事件。

  5. 另一个存储用户事件项目的数据库,每个用户受邀参加每个事件。这必须允许按用户或事件进行快速过滤。我是数据库新手,所以不知道这是否可以在 SQL 数据库中实现,或者需要其他类型,如果可以,是什么。

我们非常感激收到对这些选项的评论以及任何进一步的建议。

database-design application-design
  • 1 个回答
  • 4997 Views
Martin Hope
Gili
Asked: 2014-10-01 21:03:14 +0800 CST

将复杂查询分解为多个简单查询的开销?

  • 2

当用多个简单查询替换单个复杂查询时,我应该期望什么样的开销?

我的目标是提高所有 SQL 代码的可读性和可移植性,因此我将尽可能使用简单的结构并用 ANSI SQL 替换特定于数据库的扩展。

例如:

  • 假设客户端正在调用动态 SQL(而不是存储过程)
  • 场景 1:客户端调用:INSERT INTO employee SELECT name FROM user
  • 场景 2:客户端调用:
Statement getNames = connection.createStatement();
try (ResultSet rs = getNames.executeQuery("SELECT name FROM user"))
{
  while (rs.next())
  {
    String name = result.getString(1);
    PreparedStatement prepared = connection.prepareStatement("INSERT INTO employee SET name = ?");
    prepared.setString(1, name);
    prepared.executeUpdate();
  }
}

场景 1 不是一个复杂的查询,但为了论证起见,我们假设它是。场景 2 使用多个(更简单的)查询获得相同的结果。与场景 1 相比,场景 2 的开销是多少?这是我应该担心的事情还是可以忽略不计?

更新:https ://stackoverflow.com/a/14408631/14731提出了一个很好的观点。手动分解查询会硬编码执行计划,而不是让数据库的优化器进行选择。话虽这么说,但仍不清楚开销是否有意义。

performance application-design
  • 2 个回答
  • 732 Views
Martin Hope
AKL
Asked: 2014-07-09 12:14:35 +0800 CST

数据库实例和数据库

  • 4

我做了一些研究,最后得出了这个结论:

数据库实例=进程+内存

数据库=(物理)日志文件+控制文件+数据文件。

  1. 这种理解是否正确?
  2. 应用程序可以使用同一数据库的多个数据库实例吗?
  3. 数据库中的一个表可以同时被多个数据库实例使用吗?

谢谢。

database-design application-design
  • 2 个回答
  • 362 Views
Martin Hope
cww
Asked: 2012-04-27 06:32:23 +0800 CST

条码库存设计——交易还是大师?

  • 4

我正在为手机零售商构建一个库存软件。有几件事让我感到困惑。

好的,我们有:

  1. 产品
  2. 产品属性
  3. 条码
  4. 批量库存(购买/退货等)
  5. 缺货批次(样品/销售等)
  6. 库存转移批次(将库存从A仓库转移到B仓库)

我计划为进/出/转移做一个交易表。所以我的产品&属性&条形码表不应该有数量字段,对吧?

以下是我的业务规则

    1 product, 0 or many attributes; 
    1 attributes, 1 to many product

    1 product, 0 to many barcode;
    1 barcode, 1 product

    1 attributes, 0 to many barcode;
    1 barcode, 1 attributes

    1 barcode, 0 to many quantity

我应该为此创建多少表?

我的桌子设计是这样的:

    - warehouse (warehouse id[pk])
    - product (product id[pk])
    - attributes (attribute id[pk])
    - product attributes (product id[pfk], attribute id[pfk])
    - barcode (barcode id[pk])

    - stock in batch (sib_id[pk], warehouse id[fk])
    - stock in batch item (item_id[pk], sib_id[fk], product id[fk], qty, unit cost)
    - stock in batch item attributes (item_id[pfk], attribute id[pfk])
    - stock in batch item barcode (item_id[pfk], barcode id[pfk])

    - stock out batch (sob_id[pk], warehouse id[fk])
    - stock out batch item (item_id[pk], sob_id[fk], product id[fk], qty, unit cost)
    - stock out batch item attributes (item_id[pfk], attribute id[pfk])
    - stock out batch item barcode (item_id[pfk], barcode id[pfk])

    - stock transfer batch (stb_id[pk], from warehouse id[fk], to warehouse id[fk])
    - stock transfer batch item (item_id[pk], stb_id[fk], product id[fk], qty, unit cost)
    - stock transfer batch item attributes (item_id[pfk], attribute id[pfk])
    - stock transfer batch item barcode (item_id[pfk], barcode id[pfk])

我应该有 qty 字段吗?我应该把数量放在哪里?

我正在考虑在进货和减货交易中使用 sum() 来获取产品数量,但是在考虑到我太复杂并停留在此处之后。

我也在考虑使用 qty 字段,对于每笔交易,它都会自动调整 qty 字段,但担心可能最终的数量与交易计算不符。

请指教。

database-design application-design
  • 1 个回答
  • 1521 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve