你怎么看双向表?

时间:2016-11-09 05:40:18

标签: sql database-design two-way

我想知道SQL中的双向表是什么?

我怎样才能阅读这些双向​​表

1 个答案:

答案 0 :(得分:1)

双向表不能存储数据,而是显示数据。它没有说明数据的存储方式。

我们假设我们会将人们的智商和所居住的国家存储起来。表格可能如下所示:

name         iq    country
John Smith   125   GB
Mary Jones   150   GB
Juan Lopez   150   ES
Liz Allen    125   GB

显示智商与国家之间关系的双向表将是:

   | 125  | 150
---+------+----
GB |   2  |   1
ES |   0  |   1

    | GB  | ES
----+-----+---
125 |  2  |  0
150 |  1  |  1

为了从数据库中检索此数据,您可以编写此查询:

select iq, country, count(*)
from persons
group by iq, country;

SQL用于检索数据;它真的不是要关心它的演示,布局。所以你要编写一个程序(用PHP,C#,Java,无论如何)将查询发送到数据库,接收数据并在循环中填充GUI网格。

在极少数情况下,SQL可以提供布局本身,即以列和行的形式提供数据。这是预先知道一个维度的属性的时候。对于智商或国家来说,通常情况并非如给出的例子(例如,如果我没有向您展示,您不会知道表中存在哪些国家和哪些智商)。但是,您当然可以先检索国家/地区或IQ,然后动态构建主查询(使用条件聚合或数据透视)。预先知道值的另一种情况是布尔值,例如人员表中的一面旗帜,表明一个人是否无家可归。如果你想获得有多少国家的无家可归者的结果,你可以轻松地用无论无家可归者而不是无家可归者的两栏写一个查询。

如上所述:您可以在双向表中显示数据,但没有说明如何存储此数据。上面我向您展示了一个表格示例。但是,让我们说你在许多城市都有商店,并想知道哪些城市的人口更瘦更厚。您决定检查在哪些城市销售的T恤尺码。因此,您可以接受客户的订单,查找客户和他们居住的城市。您还可以查看订单详情和他们所涉及的商品,然后选择所有类型的T恤。涉及的表很多,但结果又是一个双面表,显示了两个属性的关系。 E.g:

city        | S   | M   | L   | XL 
------------+-----+-----+-----+-----
New York    |  5% |  8% |  7% | 10%
Los Angeles | 10% |  7% |  7% |  8%
Chicago     |  1% |  4% |  6% | 11%
Houston     |  2% |  2% |  5% |  7%