首頁 資料庫 mysql教程 数据库设计问题 – SQL_MySQL

数据库设计问题 – SQL_MySQL

Jun 01, 2016 pm 01:51 PM
資料庫設計

要求:a 表:`id`, `name` ; 作为词表,存放不同的词;b 表:`id`, `attr` ; 作为属性表,存放各种属性;其中,一个词可以有不同的多个属性;而每个词的属性的个数也不一定相同;c 表:`id`, `aid`, `bid` ; 作为关系表,存放每个词的对应关系;写出 SQL 语句,来得到每个词拥有属性总数的逆向(DESC)排序:

各种表的信息如下:

mysql> DESC `a`; DESC `b`; DESC `c`;+-------+---------------------+------+-----+---------+----------------+| Field | Type                | Null | Key | Default | Extra          |+-------+---------------------+------+-----+---------+----------------+| id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || name  | varchar(255)        | NO   |     | NULL    |                |+-------+---------------------+------+-----+---------+----------------+2 rows in set (0.00 sec)+-------+---------------------+------+-----+---------+----------------+| Field | Type                | Null | Key | Default | Extra          |+-------+---------------------+------+-----+---------+----------------+| id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || attr  | varchar(255)        | NO   |     | NULL    |                |+-------+---------------------+------+-----+---------+----------------+2 rows in set (0.01 sec)+-------+---------------------+------+-----+---------+----------------+| Field | Type                | Null | Key | Default | Extra          |+-------+---------------------+------+-----+---------+----------------+| id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || aid   | int(8)              | NO   |     | NULL    |                || bid   | int(8)              | NO   |     | NULL    |                |+-------+---------------------+------+-----+---------+----------------+3 rows in set (0.00 sec)
登入後複製

我们预先放入测试的数据,如下:

mysql> SELECT * FROM `a`; SELECT * FROM `b`; SELECT * FROM `c`;+----+------+| id | name |+----+------+|  1 | a    ||  2 | b    ||  3 | c    ||  4 | d    ||  5 | e    |+----+------+5 rows in set (0.00 sec)+----+------+| id | attr |+----+------+|  1 | 111  ||  2 | 112  ||  3 | 113  ||  4 | 123  ||  5 | 221  ||  6 | 231  ||  7 | 252  ||  8 | 278  ||  9 | 292  || 10 | 256  || 11 | 578  || 12 | 653  || 13 | 521  || 14 | 502  |+----+------+14 rows in set (0.00 sec)+----+-----+-----+| id | aid | bid |+----+-----+-----+|  1 |   1 |   1 ||  2 |   1 |   2 ||  3 |   1 |   4 ||  4 |   1 |   7 ||  5 |   2 |   8 ||  6 |   2 |  11 ||  7 |   3 |   3 ||  8 |   3 |   5 ||  9 |   3 |   6 || 10 |   4 |   9 || 11 |   4 |  10 || 12 |   5 |  12 || 13 |   5 |  13 || 14 |   5 |  14 |+----+-----+-----+14 rows in set (0.00 sec)
登入後複製

首先执行下列语句:

mysql> SELECT COUNT(`bid`) AS `attrcounts` FROM `c` GROUP BY `aid` ORDER BY `attrcounts` DESC;+------------+| attrcounts |+------------+|          4 ||          3 ||          3 ||          2 ||          2 |+------------+5 rows in set (0.00 sec)
登入後複製

进而,我们再连表:

mysql> SELECT a.name, COUNT(c.bid) AS `attrcounts` FROM `c` LEFT JOIN `a` ON a.id = c.aid GROUP BY c.aid ORDER BY `attrcounts` DESC;+------+------------+| name | attrcounts |+------+------------+| a    |          4 || c    |          3 || e    |          3 || b    |          2 || d    |          2 |+------+------------+5 rows in set (0.00 sec)
登入後複製

于是,我们得到了结果;

-------

补充一些基础知识:

如何修改已有表的列:http://www.w3school.com.cn/sql/sql_alter.asp

GROUP BY 相关知识:http://www.w3school.com.cn/sql/sql_groupby.asp

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

利用MongoDB技術開發中遇到的資料庫設計問題的解決方案探究 利用MongoDB技術開發中遇到的資料庫設計問題的解決方案探究 Oct 08, 2023 pm 05:53 PM

利用MongoDB技術開發中遇到的資料庫設計問題的解決方案探究摘要:隨著大數據和雲端運算的快速發展,資料庫設計在軟體開發中顯得特別重要。本文將討論開發過程中常遇到的資料庫設計問題,並透過具體程式碼範例來介紹MongoDB的解決方案。引言:在軟體開發過程中,資料庫設計是一個關鍵的環節。傳統的關係型資料庫在處理大規模資料時存在一些效能和可擴展性的問題。而MongoD

資料庫設計中的冗餘欄位問題:PHP程式設計中的最佳實踐 資料庫設計中的冗餘欄位問題:PHP程式設計中的最佳實踐 Jun 22, 2023 am 11:02 AM

隨著網路的普及和應用場景的不斷增加,資料庫設計成為了極為重要的一個問題。而在資料庫設計中,冗餘欄位是一個很重要的問題。冗餘欄位是指在設計資料庫時,出現了重複或不必要的欄位。雖然冗餘欄位可以在一定程度上提高查詢效率和速度,但同時也會浪費儲存空間和加強維護難度,甚至會影響資料的一致性和安全性。因此,在PHP程式設計中,應該遵循一定的最佳實踐,來解決冗餘欄位帶來的問

Golang學習之Web應用程式的資料庫設計實踐 Golang學習之Web應用程式的資料庫設計實踐 Jun 24, 2023 am 10:33 AM

Golang是一種由Google開發的程式語言,其使用簡單、效能優越和跨平台特性使得它在現代網路應用程式開發中越來越受到歡迎。在Web應用程式開發中,資料庫設計是非常重要的一部分。在這篇文章中,我們將介紹如何使用Golang開發Web應用程式時進行資料庫設計實務。選擇資料庫首先,我們需要選擇一個合適的資料庫。 Golang支援多種資料庫,例如MySQL、Po

MySQL 資料庫設計:點餐系統菜色表 MySQL 資料庫設計:點餐系統菜色表 Nov 01, 2023 pm 12:40 PM

MySQL資料庫設計:點餐系統菜色表引言:在餐飲業中,點餐系統的設計與實作是至關重要的。其中一個核心的資料表就是菜餚表,這篇文章將詳細介紹如何設計和建立一個有效的菜色表,以支援點餐系統的功能。一、需求分析在設計菜表之前,我們需要先明確系統的需求與功能。在點餐系統中,菜餚表需要儲存每一道菜品的相關信息,包括菜名、價格、分類、描述等等。此外,還需要考慮到菜餚

如何在PHP實現商品多規格SKU的資料庫設計 如何在PHP實現商品多規格SKU的資料庫設計 Sep 06, 2023 am 09:03 AM

如何在PHP中實現商品多規格SKU的資料庫設計在電商平台中,商品規格是一個非常重要的概念。商品規格可以理解為商品的不同屬性和特徵,例如尺寸、顏色、重量等。在實際應用中,針對不同的規格,我們往往需要為每種組合設定不同的價格、庫存和圖片等資訊。這就需要我們設計一個合適的資料庫結構來儲存和管理商品的規格及其相關資訊。本文將介紹如何在PHP中實現商品多規格SKU的

使用MySQL MVCC 優化資料庫設計,提升應用效能 使用MySQL MVCC 優化資料庫設計,提升應用效能 Sep 08, 2023 am 08:34 AM

使用MySQLMVCC優化資料庫設計,提高應用效能摘要:在當今互聯網應用中,資料庫的效能對系統的穩定運作和回應時間至關重要。 MySQL作為最常用的關聯式資料庫管理系統之一,在設計資料庫時,透過使用多版本並發控制(MVCC)來提高並發效能和資料一致性。本文將介紹MVCC的基本原理和MySQL中的實現,並給出一些優化資料庫設計的實例。 MVCC基本原理多版本並發

PHP與MySQL資料庫的設計與應用 PHP與MySQL資料庫的設計與應用 Jun 20, 2023 am 09:27 AM

PHP和MySQL是一對強大的組合,具有廣泛的應用。在網路產業,PHP和MySQL已經成為了科技堆疊的標配,大量的網站、Web應用、後台管理系統等應用程式都採用了這對組合。本文將探討PHP和MySQL資料庫的設計與應用,並介紹一些最佳實務。一、PHP和MySQL資料庫的優勢PHP是一種開源的、跨平台的、服務端的Web程式語言,擁有廣泛的應用場景。 MySQL是一種

MySQL 複合主鍵在資料庫設計上的應用詳解 MySQL 複合主鍵在資料庫設計上的應用詳解 Mar 15, 2024 am 11:33 AM

MySQL複合主鍵在資料庫設計中的應用詳解MySQL複合主鍵是指由多個欄位組成的主鍵,透過組合這些欄位的值來唯一標識一筆記錄。在資料庫設計中,複合主鍵的應用非常廣泛,特別是在需要唯一標識某個實體的情況下。本文將詳細介紹MySQL複合主鍵的概念、設計原則以及具體的程式碼範例。一、MySQL複合主鍵的概念在MySQL中,主鍵是用來唯一標識表中的每一行資料的字段

See all articles