数据库设计问题 – SQL_MySQL
要求: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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

インターネットの普及とアプリケーション シナリオの増加に伴い、データベース設計は非常に重要な問題になっています。データベース設計において、冗長フィールドは非常に重要な問題です。冗長フィールドとは、データベースの設計時に表示される重複フィールドまたは不要なフィールドを指します。冗長フィールドはクエリの効率と速度をある程度向上させることができますが、ストレージ領域を無駄にし、メンテナンスの難易度を高め、さらにはデータの一貫性やセキュリティに影響を与えることもあります。したがって、PHP プログラミングでは、冗長フィールドによって引き起こされる問題を解決するには、特定のベスト プラクティスに従う必要があります。

MongoDB テクノロジーの開発で遭遇するデータベース設計問題の解決策の探索 要約: ビッグ データとクラウド コンピューティングの急速な発展に伴い、データベース設計はソフトウェア開発において特に重要です。この記事では、開発中に遭遇する一般的なデータベース設計の問題について説明し、具体的なコード例を通じて MongoDB ソリューションを紹介します。はじめに: ソフトウェア開発プロセスでは、データベース設計が重要な役割を果たします。従来のリレーショナル データベースには、大規模なデータを処理する際のパフォーマンスとスケーラビリティの問題がありました。そしてMongoD

Golang は Google が開発したプログラミング言語で、その使いやすさ、優れたパフォーマンス、クロスプラットフォーム機能により、最新の Web アプリケーション開発で人気が高まっています。 Web アプリケーション開発において、データベース設計は非常に重要な部分です。この記事では、Golangを使ってWebアプリケーションを開発する際のデータベース設計の実践方法を紹介します。データベースの選択 まず、適切なデータベースを選択する必要があります。 Golang は、MySQL、Po などのさまざまなデータベースをサポートしています。

PHP と MySQL は、幅広いアプリケーションに対応する強力な組み合わせです。インターネット業界では、PHP と MySQL がテクノロジー スタックの標準構成となっており、多数の Web サイト、Web アプリケーション、バックエンド管理システム、その他のアプリケーションがこの組み合わせを採用しています。この記事では、PHP および MySQL データベースの設計とアプリケーションを検討し、いくつかのベスト プラクティスを紹介します。 1. PHP と MySQL データベースの利点 PHP は、幅広いアプリケーション シナリオを備えたオープン ソース、クロスプラットフォーム、サーバーサイド Web プログラミング言語です。 MySQL は、

PHP で製品の複数仕様 SKU のデータベース設計を実装する方法 電子商取引プラットフォームでは、製品仕様は非常に重要な概念です。製品仕様は、サイズ、色、重量など、製品のさまざまな属性や特性として理解できます。実際のアプリケーションでは、さまざまな仕様に対して、組み合わせごとに異なる価格、在庫、写真、その他の情報を設定する必要があることがよくあります。そのためには、製品仕様と関連情報を保存および管理するための適切なデータベース構造を設計する必要があります。この記事では、PHP で製品のマルチ仕様 SKU を実装する方法を紹介します。

データベース設計における MySQL 複合主キーの応用の詳細説明 MySQL 複合主キーとは、複数のフィールドで構成される主キーを指し、これらのフィールドの値を組み合わせることでレコードを一意に識別します。データベース設計では、特にエンティティを一意に識別する必要がある場合に、複合主キーが広く使用されています。この記事では、MySQL 複合主キーの概念、設計原則、具体的なコード例を詳しく紹介します。 1. MySQL 複合主キーの概念 MySQL では、主キーはテーブル内のデータの各行を一意に識別するために使用されるフィールドです。

手順: 1. 要件を収集および分析してデータ ディクショナリとデータ フロー図を取得する; 2. ユーザー要件を合成、要約、および抽象化して概念モデルを形成する; 3. 概念構造をデータ モデルに変換する; 4. 物理構造を設計するデータベースの構築、 5. データベースの確立、アプリケーションのコンパイルとデバッグ、データベースへのデータの編成 6. データベース システムの評価、調整、変更。

MySQL データベースの設計: 注文システムのメニュー リスト はじめに: ケータリング業界では、注文システムの設計と実装が非常に重要です。中心となるデータ テーブルの 1 つであるメニュー テーブルについて、この記事では、オーダリング システムの機能をサポートする効果的なメニュー テーブルの設計と作成方法を詳しく紹介します。 1. 要件分析 メニューリストを設計する前に、システムの要件と機能を明確にする必要があります。注文システムでは、メニュー テーブルに、料理名、価格、分類、説明など、各料理に関する関連情報を保存する必要があります。さらに、食器についても考慮する必要があります
