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
    • 最新
    • 标签
主页 / user-73866

Human_AfterAll's questions

Martin Hope
Human_AfterAll
Asked: 2016-03-11 18:07:56 +0800 CST

更好地在表上定义父子关系

  • 3

我们的团队正在开发一个新系统,它有一个 Warehouse 表,该表必须在条目之间具有层次关系,因为客户可以拥有 1 级、2 级、3 级和 N 级仓库。

我们首先认为这是最好的方法。通过在表上创建 Parent 和 Child 列,然后将 Parent 设置为 Child 的 FK(在同一张表上),但 DBA 朋友告诉我们有不同的方法。

因此,例如,我们曾考虑过制作这样的表格:

CREATE TABLE Warehouse(
filterId INT PRIMARY KEY IDENTITY,
parentId INT NOT NULL,
active BOOL DEFAULT 1,
warehouseName VARCHAR(30) NOT NULL,
FOREIGN KEY parentId REFERENCES Warehouse(filterId)

| FILTERID   | PARENTID | ACTIVE | WAREHOUSENAME |
--------------------------------------------------
|          1 |        0 |      1 | N WAREHOUSE 1 |
|          2 |        1 |      1 | ROOM 1        |
|          3 |        1 |      1 | ROOM 2        |
|          4 |        1 |      1 | ROOM 3        |
|          5 |        1 |      1 | ROOM 4        |
|          6 |        2 |      1 | SHELF 1       |
|          7 |        2 |      1 | SHELF 2       |
|          8 |        2 |      1 | SHELF 3       |
|          9 |        2 |      1 | SHELF 4       |
|         10 |        2 |      1 | SHELF 5       |
|         11 |        2 |      1 | SHELF 6       |
|         12 |        2 |      0 | SHELF 7       |
|         13 |        3 |      1 | BOX 1         |
|         14 |        3 |      0 | BOX 2         |
|         15 |        3 |      1 | BOX 3         |
|         16 |        3 |      1 | BOX 4         |
--------------------------------------------------

但是这个 DBA 说我们应该做这样的事情:

CREATE TABLE Warehouse(
filterId VARCHAR(20) PRIMARY KEY,
active BOOLEAN DEFAULT 1,
warehouseName VARCHAR(30) NOT NULL)
| FILTERID   | ACTIVE | WAREHOUSENAME |
---------------------------------------
| 1.00       |      1 | N WAREHOUSE 1 |
| 1.01       |      1 | ROOM 1        |
| 1.02       |      1 | ROOM 2        |
| 1.03       |      1 | ROOM 3        |
| 1.04       |      1 | ROOM 4        |
| 1.01.01    |      1 | SHELF 1       |
| 1.01.02    |      1 | SHELF 2       |
| 1.01.03    |      1 | SHELF 3       |
| 1.01.04    |      1 | SHELF 4       |
| 1.01.05    |      1 | SHELF 5       |
| 1.01.06    |      1 | SHELF 6       |
| 1.01.07    |      0 | SHELF 7       |
| 1.01.01.01 |      1 | BOX 1         |
| 1.01.01.02 |      0 | BOX 2         |
| 1.01.01.03 |      1 | BOX 3         |
| 1.01.01.04 |      1 | BOX 4         |
---------------------------------------

我们应该走哪条路?

一方面,我们在parentId和filterId之间建立了关系;另一方面我们没有任何关系,但很容易理解条目属于哪里。

并非所有的仓库都处于同一水平 - 这就是我所说的程度。它们的顺序应如下:对于客户 A,1 是 1.1 和 1.2 的父级,2 是 2.1 的父级,3 是 3.1 的父级,4 是 4.1 和 4.2 的父级 - 但 1、2、3 和 4 是相同的level(1st level),1.1, 1.2, 2.1, 3.1, 4.1 和 4.2 也是同一个level(2nd level),但不是同一个父级。

sql-server database-design
  • 2 个回答
  • 3624 Views
Martin Hope
Human_AfterAll
Asked: 2016-01-27 05:27:36 +0800 CST

是否存在表中存在一个或多个索引会损害它的情况?

  • 4

标题总结了它。

我已经了解到并且一直听说表中的索引可以改进 CRUD 操作。我上周末遇到的一位开发人员告诉我,他不喜欢索引,因为它们很糟糕——是的,“糟糕”并没有说明任何事情,但我们没有时间进一步讨论它(我们在一个聚会上)。

无论如何,也许是因为我缺乏经验,我不知道在 CRUD 操作期间索引会导致麻烦的场景,但也许有一些。我问这个问题是想知道有没有...

performance index
  • 4 个回答
  • 958 Views
Martin Hope
Human_AfterAll
Asked: 2016-01-13 11:03:16 +0800 CST

将多个值存储在一行的一个字段中而不是单独的行中的可能好处

  • 12

在我们上次的每周例会上,一位没有数据库管理背景经验的人提出了这个问题:

“是否有一种情况可以证明以行(字符串)而不是多行存储数据是合理的?”

让我们假设一个表countryStates,我们想在哪里存储一个国家的状态;我将在此示例中使用 USA,并且为了懒惰而不会列出所有州。

在那里我们将有两列;一个叫Country,另一个叫States。正如这里所讨论的,并由@srutzky 的回答提出,这PK将是ISO 3166-1 alpha-3定义的代码。

我们的表格看起来像这样:

+---------+-----------------------+-------------------------------------------------------+
| Country | States                | StateName                                             |
+---------+-----------------------+-------------------------------------------------------+
| USA     | AL, CA, FL,OH, NY, WY | Alabama, California, Florida, Ohio, New York, Wyoming |
+---------+-----------------------+-------------------------------------------------------+

当向一位开发者朋友问同样的问题时,他说从数据流量大小的角度来看,这可能很有用,但如果我们需要操纵这些数据,就没有用了。在这种情况下,应用程序代码必须有一个智能,可以将这个字符串转换成一个列表(假设有权访问这个表的软件需要创建一个组合框)。

我们得出的结论是这个模型不是很有用,但我怀疑是否有办法让它变得有用。

我想问的是你们中是否有人已经看到、听到或以真正有效的方式做过类似的事情。

sql-server database-design
  • 6 个回答
  • 31223 Views
Martin Hope
Human_AfterAll
Asked: 2016-01-05 17:08:40 +0800 CST

选择 PK:VARCHAR(2) 还是 SMALLINT(2)?

  • 3

今天我们讨论了以下内容:

巴西有 27 个州,每个州都有自己的缩写(就像美国一样)。所以我们有RJ里约热内卢、SP圣保罗、MG米纳斯吉拉斯等地。

我们的一位程序员提议,我们应该使用我们计划添加到新项目的表中的缩写( RJ、SP、MG等) 。PKStates

推断我们数据库的使用,我反驳了他的论点,说如果我们——有一天——将我们的服务扩展到其他国家,我们将遇到重复缩写的问题,例如:在美国有SC南卡罗来纳州和巴西我们有SC去圣卡塔琳娜的;MT和PA也是如此MA。指望这一点,我们已经同意应该有一个ID专栏 as PK IDENTITY。

现在,假设我们不将服务扩展到其他国家并只留在巴西,我开始考虑使用 VARCHAR(2) 列作为 PK 的想法。在这种情况下,这听起来不像是一个完全糟糕的主意。是吗?为什么?在哪些情况下可以应用?是否应该考虑内存以便从一个到另一个进行选择?

sql-server database-design
  • 3 个回答
  • 583 Views
Martin Hope
Human_AfterAll
Asked: 2015-12-19 07:07:27 +0800 CST

从哪里开始了解未知数据库

  • 12

所以,标题总结了它。

我有一个 SQL Server 数据库,其中包含 28 个表和 86 个存储过程,必须进行逆向工程。我很确定有些表从未使用过,并且并非所有的 procs 都被使用。

最大的问题是所有创建用于该数据库的 Windows 服务以及所有软件和数据库文档都丢失了,设计整个系统的人也无处可寻。

我已经设法创建了一个 ER 图来帮助我理解这些关系,但由于我在数据库管理方面没有经验,我不知道应该从哪里开始。

另外,如果不打算在这里问这种问题,我也很抱歉。

sql-server documentation
  • 4 个回答
  • 3457 Views
Martin Hope
Human_AfterAll
Asked: 2015-08-29 12:53:57 +0800 CST

按日期分组时甚至返回空组

  • 6

我有以下查询:

SELECT DISTINCT
           COUNT(CD_BarCode)
           ,CD_Carrier
           ,SUBSTRING(CONVERT(VARCHAR,DT_Arriving,103),1,11) Date
FROM TB_AGIL 
WHERE 
           DT_Arriving >= @date
           AND DT_Arriving < DATEADD(MONTH,+1,@date)
           AND CD_TRACKING = 14
GROUP BY CD_Carrier, SUBSTRING(CONVERT(VARCHAR,DT_Arriving,103),1,11)
ORDER BY Date 

我用它来查看上个月货物运动的结果。结果是按日期分组的cd_tracking数量列表,如下所示:

| Amount | Carrier |    Date    |
|--------|---------|------------|
|  2599  |   44    | 01/08/2015 |
|  2504  |   44    | 03/08/2015 |
|  4597  |   44    | 04/08/2015 |
|  5058  |   44    | 05/08/2015 |
|  2413  |   44    | 06/08/2015 |
|  4853  |   44    | 07/08/2015 |

我的问题是,如果某一天没有cd_tracking = 14,那一天将不会显示在结果列表中。如您所见,列表中没有8 月 2日。

我想知道是否有办法将每一天都带上结果列表,即使那天没有cd_tracking = 14。像这样:

| Amount | Carrier |    Date    |
|--------|---------|------------|
|  2599  |   44    | 01/08/2015 |
|  NULL  |   44    | 02/08/2015 |
|  2504  |   44    | 03/08/2015 |
|  4597  |   44    | 04/08/2015 |
|  5058  |   44    | 05/08/2015 |
|  2413  |   44    | 06/08/2015 |
|  4853  |   44    | 07/08/2015 |
sql-server t-sql
  • 3 个回答
  • 9027 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