相关疑难解决方法(0)

在SQL中"解除引用"外键在理论上是否有效?

假设我们有2个表,a和b:

CREATE TABLE a (id_a INT NOT NULL PRIMARY KEY, id_b INT NOT NULL)
  INDEX fk_id_b (id_b ASC),
    CONSTRAINT fk_id_b FOREIGN KEY (id_b)
    REFERENCES b (id_b);
CREATE TABLE b (id_b INT NOT NULL PRIMARY KEY, b_data INT NOT NULL);
Run Code Online (Sandbox Code Playgroud)

所以a有以下列:id_aid_b,其中id_bbs 的外键id_b.当我想从a获取关联的b_data时,我必须进行连接:

SELECT id_a, b_data FROM a JOIN b ON a.id_b=b.id_b;
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它很长,我重复自己(我不应该根据红宝石家伙),所以我想到了一种方法,使这个查询更短,更容易理解,仍然是明确的:

SELECT id_a, id_b->b_data FROM a;
Run Code Online (Sandbox Code Playgroud)

foreign_key->column 就像指向结构的指针一样,数据库会自动加入所需的表.

我知道这不存在,将其作为标准可能需要花费很多时间才能在生产就绪的数据库系统中看到它并且有些人不希望它"看起来很奇怪",但我会至少想知道,如果有可能,如果没有,为什么.

sql language-design foreign-keys

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

80个查询太多了吗?

我有一个包含数千条记录的大型数据库,我需要每周查询一次.然后,我必须使用Access Reports创建此数据的摘要.当我第一次创建数据库(我最近做过)时,我构建了几种类型的查询(大约80个),然后创建每个子报告,然后将这些子报告放在一个巨大的主报告中.

我之前从未使用过数据库,有些东西告诉我,也许我不应该有80个不同的查询,填充80个不同的子报表.我不知道,也许没关系.但这是我的问题,是否有任何理由我应该返回并重做其中一些查询并将它们合并为20或30(这将要求我重做子报告和主要报告),或者它是完全没问题的.将这么多查询保存在我的数据库中.

请记住,每个查询虽然每个只包含2或3个函数,但它有一个非常具体的任务,我无法完全摆脱,我只能通过组合几种类型的查询将这些函数添加到更大的查询中.另外,就像我说的那样,我必须每周使用这些查询,所以我真的不想像有些人选择的那样在运行中构建它们.

无论如何,有一些不可预见的问题,我有这么多的疑问,或者这是正常的吗?

sql database ms-access ms-access-2007

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