问题标签 [database-theory]
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.
functional-dependencies - 如何判断函数依赖是否存在于投影关系中?
如果我从具有一组函数依赖关系的关系 R 开始,并将这些 FD 投影到关系 S 上,我如何判断某些 FD 是否在投影关系中成立?
database - 在这种情况下将计算值存储在数据库中?
我将来自温度监测系统的传感器的读数存储在数据库中。
有两种类型的阅读:空气和产品。产品温度代表食物相对于实际空气温度的缓慢温度变化。
它们 2 温度取自不同的传感器(环境中的不同位置,通常是大型受控环境),因此它们不相关(即我无法从空气温度得出产品温度)。
最初我提供的产品温度已经被传感器阻尼,但是编写固件的人犯了一个错误,所以阻尼值不正确,现在我不得不从产品传感器获取未阻尼读数并应用阻尼我自己根据数据库中的最后几个读数。
当一个新的读数出现时,我会查看最后几个无阻尼读数和最后一个阻尼读数,并从中确定一个新的阻尼读数。
我的问题是:我应该存储这个计算的读数以及无阻尼的读数,还是应该在一个视图中计算它,让所有物理存储的读数都没有阻尼?
可能会影响这一点的一件事:读数很关键;当读数超出公差时,会根据读数生成警报行:这是为了防止食物中毒,人们可能会因此而失去工作。人们签署他们看到的价值观,所以这些价值观永远不能改变。
通常我会使用视图并将计算放入视图中,但这次我有点紧张。如果计算得到“调整”,那么我必须使视图更复杂才能在某个时间戳之前使用旧计算等(这很好;我只需要在查询读数值的地方小心 - 我不就像在其他视图中嵌套视图一样,有时它会减慢查询速度..)。
在这种情况下你会怎么做?
谢谢!
mysql - 在大型 MySQL 数据集中使用 Laravel 重新播种生产不良数据的成本高昂
我正在寻找一种更明智的方法来纠正大型种子数据库中的错误。解决方案是受欢迎的,他们是理智的(随意质疑工作的工具,即关系数据库)。我不能截断数据并重新设定所有值。尤其是当数据完整性发挥作用时。这需要足够健壮以应对开发人员错误,而无需进行整个重新播种来解决错误。对于我的种子数据集,迁移/MySQL/关系数据库似乎不够灵活。这就是我缺少知识的地方。
设想:
Laravel 项目,在迁移类中使用种子 (JSON),请参阅:[Laravel : Migrations & Seeding for production data][1]
[1]: Laravel:生产数据的迁移和播种
- MySQL 数据库 10k JSON 对象代表足球运动员,包含 10 个值,例如姓名、体重、身高、球队、出生日期。对象迭代,然后插入到带有 AI id 的数据库中。
问题:由于开发人员的错误,MySQL 'height' 列最初是 int 类型而不是 float,因此所有高度都四舍五入为 2m。
通过迁移,我将类型更改为浮动,现在所有高度值都需要通过重新设置来更改,因为它们仍然都是 2m(而不是 1.76)。我们需要考虑时间和成本,必须将数千个 JSON 对象重新植入 MySQL 以更改列上的值,同时保持数据完整性,因为来自 JSON 的对象在 MySQL 插入时被分配了它们的唯一 ID。
澄清一下:我从中播种了一些无 ID 的 JSON 对象。各个足球联赛有几个 JSON 文件,所以我以模块化方式播种这些文件,即当我插入新球员时。如果我需要进行更改,JSON 中的对象与数据库中的对象之间不存在完整性。我曾考虑过使用必须创建复合键的值,(?)但仍然感觉数据如此脆弱且容易出现开发人员错误,并且我需要一种理智地管理它的方法,我不觉得 Laravel 迁移/种子提供,特别是因为您只能根据时间戳值运行迁移(您不能指定回滚您运行的某个迁移文件较早)。如果存在的话,数据库的“源代码控制”也许是一个好主意。请注意,该帖子已标记为database-theory和data-integrity,我知道我可以重新播种,但这可能需要我工作日的几个小时。
干杯。
database-theory - 在表中使用 LIKE 搜索
如果使用 LIKE 存在“2”,我想从下表中检索“匹配”和“平均”列的数据。
我尝试编写以下查询,但失败了。
SELECT * FROM batsman_profile
WHERE (Match LIKE '%2%') AND (Average LIKE '%2%');
任何人都可以帮助我如何根据需要检索数据。
functional-dependencies - 使用阿姆斯壮公理证明属性是超级键
所以我得到了与的关系
R (A, B, C, D, E, F)
,
FD = {AB -> C, AD->B, C->B, F-> AD, F-> E}
我需要使用阿姆斯特朗公理来证明F
它是一个超级密钥。
我了解 Armstrong 的公理(在基本程度上),但我不确定如何在此应用程序中使用它们。任何指导表示赞赏。
谢谢
database-design - 数据库 - 功能依赖和候选键
我在理解功能依赖项和候选键时遇到了一个大问题。我目前正在做一个项目,我必须识别“两个”候选键并且只能有四个功能依赖项。我的整个关系是:
我的功能依赖是:
因此,我将候选键计算为:
但是,当我无法尝试所有潜在的解决方案并且它们都不匹配所有属性时,我需要拥有第二个候选键。我在网上看了很多视频,但我仍然很困惑,是不是因为我做错了而无法获得第二个候选键?
谢谢,
基兰
php - SQL注入理论
我一直在数据库中使用ORM层,所以我不介意SQL注入,但是一个朋友给了我这个任务,我仍然不知道如何解决它。
我知道 PHP 脚本只是检查查询的返回是否为 != null (找到与输入的用户名和密码匹配的用户名)。
PHP 中的查询本身如下所示:
归档此查询返回的最佳方法是什么!= null 或检索有效的登录数据(用户名和密码)。密码以明文形式存储在数据库中。我知道存储原样不好,我知道使用 PDO 很好,但我不知道如何解决他给我的这个有趣的任务,可能是因为我一直使用 PDO。
database - 超级密钥的最小化是否保证它是候选密钥?
确定关系 R(ABCDEF) 与 FD 的候选键和超键:AEF → C、BF → C、EF → D 和 ACDE → F
这是我书中的一个问题。该书声称候选键是ABCDE和ABEF。据我了解,候选键是最小的超级键,ABEF 的闭包测试完美地捕获了关系 R。由于 ABEF 比 ABCDE 更“最小”,我认为唯一的候选键实际上是 ABEF。我承认 ABCDE 是超级键,但不是候选键。有人可以解释为什么我在这里错了吗?还是这本书有错?
relational-algebra - 函数依赖的 F+(F 的闭包)和 F*(F 的覆盖)有什么区别?
F+ 和 F* 定义如下:
F+:F的闭包
- F+ = {fd | F |= fd}
- 从推理规则推导出的所有 FD 集合(通常:阿姆斯壮公理)
F*:F的封面
- F* = {fd | F |- fd}
- F 包含的所有 FD 的集合(所有为真的 FD)
所以我的问题是:F+ 和 F* 有什么区别?你也可以举一个例子来说明差异。
functional-dependencies - 我们是否在最小覆盖范围内保持反射函数依赖
假设我必须提出一组函数依赖项的最小覆盖。我有这个功能依赖{A,B,C} -> {C}
。我们知道这{A,B}
是多余的,我们应该删除这两个属性以获得最小覆盖。这会给我们留下{C} -> {C}
,但由于反射性,这是微不足道的。我们是否仍然保留{C} -> {C}
或删除它?
提前致谢!