问题标签 [relational]

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 投票
2 回答
484 浏览

php - 使用 nodereference + 视图创建组合视图

我正在尝试设置关系视图,但不知道该怎么做。

下面是我打算使用节点类型 Artist 和 Song 的示例。

假设我有一个 Artist 节点类型,它有一个对 Song 的节点引用(设置为无限制)和一个带有附加长度字段的 Song 数据类型,我将如何配置视图以输出此视图?

谢谢!伊恩

0 投票
5 回答
598 浏览

sql-server-2005 - 与自身问题有关的表

我已经用这个模式定义了表:

并用这样的数据填充它:

现在我正在寻找一个解决方案,按顺序,当我删除作为父项的记录(如 Id = 1 或 4)时,它会自动删除所有子项(所有具有 ParentId = 1 或 4 的记录)。

我想我可以通过 Id 和 Parent Id 之间的关系来做到这一点(并为删除规则设置级联),但是当我在 MMS 中这样做时,属性中的删除规则或更新规则被禁用。

我的问题是:我该怎么做才能做到这一点?

谢谢

编辑:

当我写(如 Id = 1 或 4)时,我指的是父记录,而不是子记录,我不是指像 Id = 1 或 4 这样的查询

一些朋友暗示我可以通过删除触发器来做到这一点,但我想我可以通过关系来做到这一点

0 投票
4 回答
207 浏览

database - 对关系数据库建模的正确方法

为了解释我的问题,我举一个简单的例子:

我的数据库有三个表:

问题是我必须将一辆车与一名在公司担任“司机”职位的员工联系起来,而且只有在这种情况下。

我尝试使用继承并创建另一个名为“Driver”的表,该表具有与一名员工关联的 ForeignKey(1-1 关系),但我无法使其工作,因为在编程阶段我必须手动验证是否选择了位置 id(在 HTML 选择元素中)是“驱动程序”的 id。我认为这不是一个好的编程习惯。

总之,我想知道是否有其他方法可以在不影响关系数据库或编程的情况下做到这一点。

提前致谢!抱歉英语不好,这不是我的主要语言。我希望你能够明白。

0 投票
2 回答
189 浏览

oop - 面向对象编程语言中的关系特征

除了Linq之外,他们是否还有其他尝试将关系特性集成到面向对象的语言本身中,而不仅仅是库?

更新 最明显的例子是一对一、一对多或多对多关系。然后,您还可以考虑具有自身属性的关系。

0 投票
1 回答
60 浏览

ruby-on-rails - Rails 中有两种不同关系的两种资源

我是 Rails 新手,遇到了一种我无法完全理解的情况。

假设我有两个资源,用户和小部件。

用户可以使用小部件,但小部件也是用户创建的,并且应该归创建它们的用户所有。需要有一个用户使用widget,并且一个用户拥有widget。以下是我要找的吗?

0 投票
2 回答
1069 浏览

mysql - MySQL过滤查询与关系

我在 2 个具有关系的 MySQL 表中遇到以下问题:当我想要完整列表或按名称或电子邮件等过滤结果时,我可以轻松查询表 1(地址)。但是现在我需要查询表1并根据表2的关系内容(兴趣)对其进行过滤。因此,只有在表 2 中满足一个(或更多)条件时,我才需要在表 1 中找到一行(通常是多行)。

以下是表格:

例如,我需要找到兴趣为 cat=aa 和 subcat=xx 的地址。或者,另一个例子,我需要对 cat=aa 和 subcat=xx 以及 cat=aa 和 subcat=yy 感兴趣的地址。特别是后者很重要,必须记住,地址表和兴趣表都是长列表,并且 cat/subcat 组合的数量会有所不同。我目前正在通过 Zend_Db_Table (findDependentRowset) 处理参考查询,但该解决方案对于编号为 100 甚至 1000 的地址列表会减慢速度。

感谢您的帮助。

0 投票
3 回答
2465 浏览

java - 存储任意数据库表的数据结构

我想设计一个 JVM 数据结构(Java/Scala),可以用来表示和存储任意关系数据库表的内容。数据结构应该是快速的(不是太多 gc 密集型,缓存友好)和内存效率,因此更大的表可以容纳在 RAM 中。

一种节省内存的解决方案是将每一列分别存储在一个原始数组中,但我担心缓存的友好性,因为同一行中的项目没有存储在一起。无论列有多窄,具有 N 列的行都会导致 N 次缓存未命中。

另一种解决方案是将每一行存储在一个对象数组中,其中每个元素代表一个字段,并在检索时转换为正确的类型,但这需要以盒装形式存储数字类型,因此内存效率不是很高。而且它的缓存效率也可能不高。

另一种解决方案是将每一行的数据布局到一个字节数组中,就像真实数据库序列化它们的行一样,只使用必要的字节数。这是缓存友好且内存高效的,但我担心每次访问的序列化/反序列化成本。

最好的方法是什么?

0 投票
2 回答
2036 浏览

tsql - 外键指向多个表的数据库模式困境(独占弧)

希望我的描述比标题好一点,但基本上我对新应用程序模式的一部分有问题,我被困在表结构中最易于管理和优雅的解决方案上。

仅显示相关字段的裸骨表结构如下:

航空公司 (id, name, ...)
酒店 (id, name, ...)
供应商 (id, name, ...)
事件 (id, name, ...)
eventComponent (id,name) {例如餐饮, 房间租用, 音频/视频...}
eventFlight (id, eventid, airportid, ...)
eventHotel (id, eventid, hotelid, ...)
eventSupplier (id, eventid, supplierid, hotelid, eventcomponentid, ... )

因此,航空公司、酒店、供应商都是参考表,并且使用这些参考表之间的一对多关系创建一个事件。例如,一个事件可能有 2 个航班条目、3 个其他组件条目和 2 个酒店条目。但问题在于,在 EventSupplier 表中,供应商可以是供应商,也可以是现有的酒店。因此,在用户在前端构建了他们的新事件之后,我需要以一种不会使其成为噩梦的方式存储它,然后稍后再返回这些数据。

我一直在阅读关于多态关系和排他弧的大量阅读,我认为我的场景肯定更符合路线或排他弧关系。

我刚在想:

CREATE TABLE eventSupplier (
id SERIAL PRIMARY KEY,
eventid INT NOT NULL,
hotelid INT,
supplierid INT,
CONSTRAINT UNIQUE (eventid, hotelid, supplierid), -- UNIQUE 允许
NULLs CONSTRAINT CHECK (hotelid IS NOT NULL OR supplierid IS NOT NULL),
FOREIGN KEY (hotelid) REFERENCES hotel(id),
FOREIGN KEY (supplierid) REFERENCES supplier(id)
);

然后为了检索这些数据,只需使用两个表的外连接来确定哪个表是链接的。

选择 e.id 作为 eventid,coalesce(h.name,s.name) 作为供应商
from eventSupplier es
left outer join
supplier s on s.id = es.supplierid
left outer join
hotel h on h.id = es.hotelid
where h .id 不为空或 s.id 不为空

我的其他选择是在 eventSupplier 表中有一个外键,而另一个字段用于“类型”,这似乎是一个更难从中检索数据的解决方案,尽管如果我想在没有进行架构更改。或者直接将hotelid 存储在Supplier 表中,并仅将一些供应商声明为“酒店”,尽管当时存在我不想要的冗余数据。

对此的任何想法将不胜感激!

干杯菲尔

0 投票
1 回答
392 浏览

sql - SQLite 中指向表的指针

假设我有一张苹果表(apple_id)。对于每个苹果,我都有其重量随时间变化的历史。如何构造它,以便每次添加一个苹果时,都会创建一个与其重量历史相关的表?

在查看一个苹果的重量历史时,只有一个所有苹果的重量历史表(apple_id,age,weight)似乎会消耗性能,因为它必须查看所有其他苹果的重量历史。所以看来我需要为每个新苹果创建一个新表(并在每次删除苹果时删除它)。这该怎么做?

我的想法是使用 apple_id 并将其转换为字符串。这样表的名称是唯一的并且易于生成。

0 投票
3 回答
10403 浏览

sql - 如何在关系代数中表示“不存在”?

如何在关系代数中表示 SQL“不存在”子句?