小编shi*_*zou的帖子

如何将 ERD 中描述的实体类型表示为与属性名称的关系?

我创建了如下所示的实体关系图(ERD)(为简洁起见,每个单独的气泡形框都描绘了多个属性):

ERD

考虑到这样的 ERD,我必须将其中描述的每个实体类型关联实体类型转换为与其对应的属性名称关系,但我遇到了一些问题。

我通常表示一个关系如下:

  • X = (a, b, c)*

*如果X名称的的关系abc名字它的属性

然后,在我正在研究的业务领域中,aCourse依赖于零对多 (0:M) 其他Courses(如 ERD 中所示)。这意味着 aCourse应该以某种方式连接到Courses它所依赖的。

那么,我如何将这种情况表示为(数学)关系

选项1

我尝试了以下方法:

  • Course = (course_number, course_name, course_dependencies?)

选项 2

我认为可以用另一种方式描述所需的方面,例如:

  • Depends = (course_name)

进而

  • Course = (course_number, course_name, depends) …

schema erd database-design relational-theory database-diagrams

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

在 SQL 中使用最大结果作为谓词的值

假设我想找到收入比 Google 的所有员工都多的所有员工,是否可以将 max 的结果用作单个值而不是像这样的表?

select person-name
from Works
where salary > ( select max(salary)
        from Works
        where company-name == "Google" )
Run Code Online (Sandbox Code Playgroud)

(作品有人名、薪水和公司名列)

syntax

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

计数值以零而不是空值显示

我正在尝试进行查询,其中我将拥有 id 和该人是他们的上司的员工人数,还有不是经理的人,应该出现并且计数为零。

这就是我所做的,但那些不是经理的人显示为空:

create view scnt as (
    select E1.super, count(distinct E1.id) cnt
    from Employee E1 left outer join Employee E2
    on E1.super = E2.id
    group by E1.super
);

create view numSuper as (
    select E.id, S.cnt
    from Employee E left outer join scnt S
    on S.super = E.id or E.id = null
);

select * from numSuper
Run Code Online (Sandbox Code Playgroud)

这是架构:

1

但是我们可以忽略所有噪音并使用我们需要的东西: employee(id, super)

这是插入的小提琴:http : //dbfiddle.uk/? rdbms=postgres_9.6&fiddle= 4c08869d0e8eba6c82fd4957092379a1

关于如何做到这一点的任何想法?

postgresql

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