标签: schema

使用复合键识别行的指南

使用一组 4 列将一行标识为唯一的(一个是外键,其他三个是浮点数据类型)是一种好的做法(或者它会不会有任何不利影响)?我正在尝试构建一个表(链接 4 个键)将描述表中的唯一条目。我很好奇这是否是一个好的攻击计划,或者是否有更好的方法。

出于视觉目的,请绘制下表。我们有如下表组织的库存项目:([K]是主键的象征,线条是关系)

    Sheet_Class        Sheet_Type         Sheet_Size
    ===========        ==========         ==========
[K] Sheet_Class-.  [K] Sheet_Type--.  [K] Sheet_Size
                 '---- Sheet_Class  '---- Sheet_Type
                                          Length
                                          Width
                                          Thickness
Run Code Online (Sandbox Code Playgroud)

数据可能以下列方式呈现,但为简洁起见,我排除了引入链接列的可能性:

 Sheet_Class    Sheet_Type    Sheet_Size                        (Tables)
[Sheet_Class]  [Sheet_Type]  [Length], [Width], [Thickness]     (Column Values)
=============  ============  ==============================

Aluminum
               5052-H32
                             48, 96, 0.032
                             48, 96, 0.040
                             48, 96, 0.063

               6061-T6
                             60, 120,0.032
                             60, 120,0.040
                             60, 120,0.063

Steel
               1018-CRS
                             48, 96, 0.018
                             48, 96, 0.023
                             48, 96, 0.031
Run Code Online (Sandbox Code Playgroud)

就目前情况而言(并且我已经在上面的“架构”中显示),我对Sheet_Size表中的条目使用了一个简单的(自动递增)整数主键。但是,我想知道使用Sheet_TypeLengthWidth和 …

schema sql-server

8
推荐指数
2
解决办法
1474
查看次数

PostgreSQL 中的 Schema 概念

我无法理解 PostgreSQL 中模式的概念和用法。我不知道它如何影响我的数据库设计。我为什么要使用它?

如果我决定现在不考虑它们,以后再担心它们,这会影响我将来吗?

用一个例子解释会很好。

schema postgresql database-design

8
推荐指数
1
解决办法
1155
查看次数

MySQL 5.5中performance_schema的用法是什么?

我已经升级到 MySQL 5.5 版。在那里,我在模式列表中观察到了 performance_schema。

  • 这个新模式的用途是什么..?
  • 我们如何使用此模式进行监控..?
  • 使用这种模式有什么好处..?
  • 启用此模式是否有任何开销..?

mysql schema performance

8
推荐指数
1
解决办法
1万
查看次数

有没有免费的在线协作数据库模式工具?

我对一个免费且简单的 MySQL 工具感兴趣,它可以在创建数据库通用模式时提供在线协作功能。你知道任何?

schema tools database-design

8
推荐指数
2
解决办法
1万
查看次数

什么是单位和复杂单位转换的良好关系结构?

我的公司在能源行业,我需要想出一个好方法来表示测量单位的转换。我已经做了一些搜索,但还没有找到一篇很好的文章,在我需要的深度上涵盖了这一点。大多数关于单位转换的信息都假设给定单元 1 有一个已知的(硬编码)转换率可以到达单元 2,这是简单的数学运算(这是我发现的最复杂的例子,但仍然无济于事)。然而,这在现实世界中并不总是正确的,对于我们必须处理的事情当然也不是这样。(抱歉写了这么长的文章——我正在尝试提供尽可能多的信息!)

棘手的示例 1: 某些转换会随时间变化,例如将 5 美元转换为欧元,反之亦然。这听起来似乎与能源无关,但它确实与能源商品市场有关(想想股票市场)。

棘手的例子 2:( 过度简化)一些天然气比其他天然气燃烧得更热。此外,天然气可以基于气体中的能量(例如Therms)或基于所述气体的体积(例如1000 立方英尺的MCF)来测量/存储,还有其他可能性(例如作为用于质谱)。汽油的一个类比是 1 加仑 87 辛烷无铅提供的能量比 1 加仑 93 辛烷无铅提供的能量少。

棘手的例子 3: 除了这些计量单位之外,我们还经常需要处理费率,例如$ per Therm€ per MCF。因此,我们需要一些方法来与这些利率和如何将它们与基本单位工作,所以如果我们需要从转换$每千卡每MCF€,我们可以和它们使用同样的发布速率转换从千卡MCF

棘手的例子 4: 以前,我非常松散地使用术语能源,有时可能是错误的。从现在开始,这种情况正在发生变化。所以最后一个曲线球是我们同时处理EnergyPower。对于电力,这意味着千瓦时千瓦尽管是雅虎问答,但这是一个相当好的解释)。数据类比:这就像比较下载的总MB数据与您的Mbps您的 ISP 为您提供的带宽。与数据一样,能源需要时间才能交付。继续进行数据类比,我们可能需要计算一段时间内消耗的平均有效带宽,因此假设在 1 …

schema sql-server relational-theory

8
推荐指数
1
解决办法
2248
查看次数

如何在关系数据库中存储许多小的时间序列?

输入数据

多个测试床生成各种复杂性的测量数据。

在最基本的形式中,不考虑任何元数据,测试台上的一次测量将是一个小的(1 - 几千个样本)时间序列,每个样本有几十个通道/信号/属性。

跨时间和测试台的测量将具有一组相似的信号,但并不总是与为测试设置添加和移除传感器相同。

数据量

目前我们估计我们的数据速率为 6 testbeds x 4 test per hour x 12 hours a day x 4000 samples per test == 1,152,000 samples per day x 365 == 420,480,000 samples per year

_ x 48 columns per sample (currently 32 bit floats, mostly) ~~~ 75 GB per year

(本例中的列指的是通道/信号)

如果/当添加更多测试平台时,数据量可能会相应增加。

数据输入

测试台在本地生成数据,然后将数据异步导入数据库。(可能在一秒钟内生成几千个样本,然后在本地进行审查,然后进行刮擦或导入。)

查询

我们希望查询主要针对单个测量的聚合。即,您希望找到所有测量值(每个测量值都有 4k 个样本),例如 channel_output_voltage 的平均值在某个范围内。

数据库布局?

为此设置表格的好方法是什么?必须考虑哪些因素?

从理论上讲,每次测量我可以使用一张桌子,每年生成 100,000 张桌子,但这对我来说并不是一个好主意。

或者我可以将所有内容都放在一个大表中(有数百列),该表为所有通道留出空间,并根据需要添加通道:每个样本一行。未使用的通道保持 NULL。

MEASUREMENTS
------------
measurement_id } PK
time_stamp     }
channel_1 (may be …
Run Code Online (Sandbox Code Playgroud)

schema oracle database-design sql-server scalability

8
推荐指数
1
解决办法
2662
查看次数

PostgreSQL 模式和 search_path

我正在阅读 Oreilly 的PostgreSQL: Up and Running,并且在使用模式组织数据库部分中,它说search_path可以在数据库级别设置:

例如,如果我们希望 contrib 中的所有对象都可以在没有模式限定的情况下访问,我们将更改我们的数据库,如下所示:

ALTER DATABASE mydb SET search_path="$user",public,contrib;

但是,在键入上面的命令后,我仍然无法在public不限定它们的情况下引用其他模式中的表:

ALTER DATABASE auth SET search_path="$user",public,staging;`
\d users
Run Code Online (Sandbox Code Playgroud)

给出:

Did not find any relation named "users".
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用\d staging.users,它会起作用。

SHOW search_path;
Run Code Online (Sandbox Code Playgroud)

给出:

   search_path   
----------------
 "$user",public
Run Code Online (Sandbox Code Playgroud)

是否默认search_pathpostgresql.conf覆盖每个数据库的设置值与ALTER DATABASE ... SET search_path?如果是这样,每个数据库的值有什么用?

schema postgresql

8
推荐指数
1
解决办法
1万
查看次数

如何在关系数据库中有效地存储无模式数据?

我试图在可搜索性和速度之间取得很好的平衡。我正在尝试不同的方法。

选项 1:将数组序列化为 JSON/PHP 序列化数组并将其存储在“元”列中。

   id  |  name   | meta  
1       Bob       {"city":"GoTown","birthdate":"1980\/8\/14","cat":"Felix"}
2       Alice     {"city":"Streamville","birthdate":"1986\/6\/6","dog":"Rex"}
Run Code Online (Sandbox Code Playgroud)

选项 2:将键和值一起存储在堆栈中。

user_id  |    key   |   value   
1         name       Bob
1         city       GoTown
1         birthdate  1980/8/14
1         cat        Felix
2         name       Alice
2         city       Streamville
2         birthdate  1986/6/6
2         dog        Rex
Run Code Online (Sandbox Code Playgroud)

选项 3:3 个表:实体、键、值。每个键名只存储一次。

user_id  |   name   
1         Bob
2         Alice

key_id   |   keyname   
1         city
2         birthdate
3         cat
4         dog

user_id   |   key_id   |   value
1          1            GoTown
1          2            1980/8/14
1 …
Run Code Online (Sandbox Code Playgroud)

mysql schema database-design

7
推荐指数
1
解决办法
6668
查看次数

将个人数据存储在发票上以保持数据完整性

我想存储发票数据,如人员地址。但问题是地址会随着时间的推移而改变——例如,有人会搬出去改变他的地址。存储此类数据的问题出现了,因为我们无法更改某些发票上引用的数据。

我有 3 个表:(AddressInfo包含 StreetAddress 等),Person它们与AddressInfo, 和Invoice表具有一对多关系。

我有两个解决方案,但我不确定哪个方向是正确的方法:

  • 创建AddressInfo并使其可软删除,添加一些类似的列IsActiveIsDeleted以便我的Invoice表可以通过其 ID 引用此地址信息,并且保证保持不变,除非有人在不使用我的应用程序的情况下直接更改此数据。

    因此,当有人更改他的地址时,我会软删除(也许应该称为软更新?)当前地址并添加新地址,而根本不会触及旧记录。最好先检查一下发票上是否引用了它以防止污染。

    我的Invoice桌子看起来有点像:

    | InvoiceId | AddressInfoId |

  • 将所需的列添加AddressInfo到我的Invoice表中。每次创建新发票时,我都必须复制数据,地址不会经常更改,重复记录会稍微污染我的数据库。

    我的Invoice表看起来有点像(大大简化):

    | InvoiceId | StreetAddress |

您是否有使用解决此特定问题的数据库(可能是某些 ERP 软件)的经验?


有趣的朗读:

https://martinfowler.com/eaaDev/timeNarrative.html

schema database-design denormalization

7
推荐指数
1
解决办法
2159
查看次数

如何将所有表从一个 Postgres 模式移动到另一个

我想将所有表从架构移动xyz到默认架构public

我可以移动单个表

ALTER TABLE table_name
    SET SCHEMA public;
Run Code Online (Sandbox Code Playgroud)

我可以得到所有的桌子

SELECT table_name FROM information_schema.tables WHERE table_schema='xyz'
Run Code Online (Sandbox Code Playgroud)

有没有办法将这两者结合在一起?

schema postgresql alter-table

7
推荐指数
2
解决办法
6864
查看次数