【问题标题】:mapping of areas with multiple users具有多个用户的区域映射
【发布时间】:2020-03-11 08:26:54
【问题描述】:

我有像第 1 区、第 1 a 区、第 1 b 区、第 1 c 区这样的区域以及在整个行业(即第 1 区)或任何子行业工作的多个有线电视运营商。我已经创建了有线电视运营商表,并希望将它们与区域进行映射。如果我设置区域表,如扇区 1、扇区 1 a、扇区 1 b、扇区 1 c,每个扇区都有自己的主键,那么如果我们必须让有线电视运营商工作,我如何在单行有线电视运营商中引用这些部门在那个特定的领域。

我的表结构如下:

运营商

| id | name
| 1  | 'abc'
| 2  | 'def'
| 3  | 'ghi'

地区

| id | name
| 1  | 'sector 1'
| 2  | 'sector 1a'
| 3  | 'sector 1b'
| 4  | 'sector 1c'
| 5  | 'sector 1d'
| 6  | 'sector 2'
| 7  | 'sector 2a'
| 8  | 'sector 2b'
| 9  | 'sector 2c'
| 10  | 'sector 2d' 

我有operatorsareas 表,其中有地图运算符,其区域如下: 运营商领域

| op_id | area_id
| 1     | 1
| 2     | 1
| 3     | 1
| 1     | 7
| 2     | 8
| 3     | 7

现在我使用了这个没有结果的查询:

select o.id, o.name from operator as o
where not exists(select * from areas a where id in (1,7,8) and not exists(select * from operatorareas as oa where oa.operatorid=o.id 
and oa.areaid = a.id))

我参考了以下链接:

SQL query through an intermediate table

我需要有关表格结构的指导。

【问题讨论】:

  • 1) 您的意思是在一个区域(部门或子部门)中拥有多个运营商? 2)我不明白为什么链接的 SQL 是相关的。你想从查询中得到什么结果集(英文)?

标签: sql join database-design relational-database


【解决方案1】:

最初的问题

您的部门/子部门名称打破 1NF

  • 每个域 [column] 必须是 Atomic wrt 到 [在] 平台中可用的数据类型。

这是一个严重的标准化错误,将在下游产生可怕的后果。更正的是:

  • 扇区是一个数据,一列,例如。 Sector 1
  • SubSector 是一个单独的数据,一个单独的列,例如。 a, b, c

数据 • 它是什么?

我需要有关表格结构的指导。

好的。但这些数据的实际含义并不清楚。

根据您提供的少量信息,可以得出以下谓词

  • 每个操作员都被分配到 0 或 1 区域
    假设:操作员一次不能在多个地方
    假设:不能分配操作员

  • 每个 [已分配] 区域都是 { Sector |子部门 |未分配 }
    AreaType 是判别器

  • 每个扇区包含 0 到 n 个子扇区
    每个 Sector 被 0 到 n 个 Operator 占用

  • 每个子扇区都被 0 到 n 个运算符占用

请检查并确保每个都是真的(否则数据模型是垃圾)。

关系数据模型

假设这些谓词是正确的,规范化关系数据模型是:

子类型 • 独占

运营商在完整部门任何子部门

工作
  • 您在逻辑术语中寻找的是或门,在关系术语中,它是独占子类型
    • 请参阅 Subtype,了解有关子类型实现的完整详细信息。

注意•符号

  • 我所有的数据模型都在 IDEF1X 中呈现,这是自 1993 年以来为关系数据库建模的标准

  • 我的IDEF1X Introduction是初学者或新手的必备读物,写的是关系数据库。

查询 • 它是什么?

现在我使用了这个没有结果的查询

我们不知道您试图获得什么结果集。

  • 此时,它似乎与链接的问答无关。

  • 请用英文解释您想要获得的结果集。希望观察给定的数据模型。

  • 提供所需的 SQL 将是一件简单的事情。

享受。请随时提出具体问题。

【讨论】:

    猜你喜欢
    • 2021-01-15
    • 2018-03-19
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2023-03-15
    相关资源
    最近更新 更多