问题标签 [relational-database]

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 投票
1 回答
2974 浏览

java - 关系数据库数组(H2、Java)

关于如何实现数组,我似乎有两种选择,我想知道我应该选择哪一种:

  • 使用 ARRAY 数据类型并(据我了解)有效地将数据对象序列化到数据库中(在我的情况下,它们只是包装的原始类型;不知道另一种方法来完成这项工作)。

  • 为每个数组项使用单独的表和外键映射。

如果你有这方面的经验(尤其是 H2),你会推荐哪个?

0 投票
4 回答
11606 浏览

sql - 在 PostgreSQL 中表示稀疏数据

在 PostgreSQL 中表示稀疏数据矩阵的最佳方法是什么?我看到的两种明显的方法是:

  1. 将数据存储在一个表中,每个可能的功能(可能数百万)都有一个单独的列,但对于未使用的功能,默认值为 NULL。这在概念上非常简单,但我知道对于大多数 RDMS 实现来说,这通常是非常低效的,因为 NULL 值通常会占用一些空间。但是,我读了一篇文章(不幸的是找不到它的链接)声称 PG 不占用 NULL 值的数据,使其更适合存储稀疏数据。

  2. 创建单独的“行”和“列”表,以及一个中间表来链接它们并在该行存储列的值。我相信这是更传统的 RDMS 解决方案,但与之相关的复杂性和开销更大。

我还发现了 PostgreDynamic,它声称可以更好地支持稀疏数据,但我不想仅仅为了这个特性而将我的整个数据库服务器切换到 PG 分支。

还有其他解决方案吗?我应该使用哪一个?

0 投票
2 回答
1164 浏览

django - django模型:如何在模型中拥有可变数量的外键?

例如,模型简历包含可变数量的模型项目
我的模型和它们之间的关系应该是什么来实现这一点?
提前致谢。

0 投票
1 回答
990 浏览

database-design - 类表继承与非规范化

我正在尝试对专业化/泛化进行建模,倾向于使用类表继承(请参阅此答案)。

但是,我的同事有维护和性能方面的问题,因为同一张表会有很多(50 多个)重叠的专业化。他的建议是创建一个包含以下列的表格:

  • 参考总表
  • 对维护特化类型的表的引用
  • 对维护属性值的表的引用

这样,所有属性都保存在一个表中,并且可以通过专业化列进行过滤。我不知道这个设计叫什么,但我担心它与EAV有某种关系......

我主要关心的是修改异常,但除此之外我没有看到任何理由这是一个坏主意。一种解决方案明显优于另一种解决方案,还是我们应该选择一个并继续前进?

0 投票
9 回答
178546 浏览

database-design - 为什么要用多列作为主键(复合主键)

此示例取自w3schools

我的理解是这两个列一起 (P_IdLastName) 代表表的主键Persons。这个对吗?

  • 为什么有人要使用多列而不是单列作为主键?
  • 在给定表中可以将多少列一起用作主键?
0 投票
7 回答
6800 浏览

c# - C# 将大量数据从 CSV 导入数据库

将大量数据从 CSV(300 万+行)加载到数据库的最有效方法是什么。

  • 数据需要格式化(如姓名列需要拆分成名字和姓氏等)
  • 我需要尽可能有效地做到这一点,即时间限制

我是否支持使用 C# 应用程序逐行读取、转换和加载数据的选项?这是理想的,如果不是,我有什么选择?我应该使用多线程吗?

0 投票
2 回答
1727 浏览

mysql - 存储日期我火车时间表MYSQL

我在 MYSQL 中创建了一个火车时刻表数据库。每天有数千条路线。但除了少数例外,大多数路线在每个工作日都是相似的,但在周末会有所不同。

此时我基本上每天午夜更新我的 SQL 表,以获取接下来 24 小时的出发时间。然而,这非常不方便。所以我需要一种将日期存储在表格中的方法,这样我就不必每天都这样做了。

我尝试创建一个单独的表,在其中存储每个路由号的日期(路由号每天都会重置),但这使我的查询变得如此缓慢以至于无法使用。这是否意味着我必须将出发和到达时间存储为日期时间?在这种情况下,包含路由的主表将有几百万个条目。

还是有其他方法?

我的路由表如下所示:

0 投票
1 回答
2188 浏览

php - 如何从 phpMyadmin 中的一个表中获取 ID 并将其添加到插入时的另一个表字段

我正在尝试将一个表中的 id 添加到另一个表以提供与表的关系。我正在从表单中插入数据的许多表上执行此操作。示例:人员拥有和项目,因此项目具有项目和人员 ID 来链接两者,但是在某些情况下,我有可选表,所以有时这些表的 ID 将添加到项目表中,有时它会保留为空,请参阅上一个关于这个。在我看来,执行一个 select 语句从其他表中获取 id,然后更新刚刚插入的字段似乎不是最好的方法。有人对如何做到这一点有更好的想法吗?谢谢。

0 投票
4 回答
634 浏览

database - 占用磁盘空间较少的数据库

我正在寻找解决方案来存储大量信息,消耗更少的磁盘空间。

信息结构很简单,查询也很简单。我查看了诸如 Apache Cassandra 和关系数据库之类的解决方案,但找不到提到磁盘使用情况的比较。

任何关于此的想法都会很棒。

0 投票
7 回答
833 浏览

php - “多对多”关系的同义词(关系数据库)

“多对多”关系的同义词是什么?我已经完成了一个对象关系映射器的编写,但我仍然对如何命名添加该关系的函数感到困惑。

addParent() 和 addChild() 对于多对一/一对多和 addSuperclass() 对于一对一继承似乎很合乎逻辑,但是对于面向对象的程序员来说 addManyToMany() 听起来很不直观。addSibling() 或 addCousin() 也没有任何意义。

有什么建议么?在您将此视为非编程问题之前,请记住一致的命名方案和封装对于编程来说是不可或缺的:)