数据库结构中的"树"
最近接触了一个项目,是一个题库管理系统.其中有这样一部分需求 一、学校基础信息管理 二、部门基础信息管理 三、班级信息管理 四、对于试题的搜索有如下分类 1、按章节分 语文第一章 第一节知识点 数学第一单元第一节知识点 政治第一课 第一节知识点 2、按版
最近接触了一个项目,是一个题库管理系统.其中有这样一部分需求
一、学校基础信息管理
二、部门基础信息管理
三、班级信息管理
四、对于试题的搜索有如下分类
1、按章节分
语文→第一章 →第一节→知识点
数学→第一单元→第一节→知识点
政治→第一课 →第一节→知识点
2、按版块分
科目→版块1→知识点
科目→版块2→知识点
科目→版块2→知识点
科目→版块3→知识点
(其它省略)
按一般的思路,我想有人会这样建表
对于试题的分类可能方法就多了,
刚学不久的可以会"在题目表里面,建立N个字段,这题是属于那个'科目',那个'版块'...."
聪明一些的可以会"把类型提出来,放在其它表里面,但是加几个表呢?"
其实上面的需求还隐藏着一些东西,
一、系统以后面对的可能不是一个学校,而是一个地区了几个学校,学校是属于那个区?那个省?
那么我们需要增加表嘛?(没事,到时候加二个表,改一改代码就行了,反正用不了多少时间。)
二、题目的分类,各个学校分类都一样嘛?(我们是权威机构,要求他们必需按我们的要求分类,这公司太强了。)
“第一节”下面也许会出现“第一小节”,“版块”下面又要分个“XX版块”。加字段还是加表?
(呵呵!经历过)
试试下面的方法建表。
认真一点分析,我们会发现,其实这些东西都是一级一级的,都互相有联系,与“树”很像。
而且用树来存储这些数据,还非常容易扩展,无论你在学校上面再怎么划分,在科目下面再怎么分“小节”都很容易办到,而且不用改数据库。程序写的好,程序也不用改。
当然上面的树可以根据实际项目需要,增加或删除一些字段。
我想对于有经验的程序员应该是很熟悉“树”在项目中的应用,大型的系统肯定少不了这种结构。

ホット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)

ホットトピック











フェルマーの最終定理、AIに征服されようとしている?そして、全体の中で最も意味のある部分は、AI が解決しようとしているフェルマーの最終定理は、まさに AI が役に立たないことを証明するものであるということです。かつて、数学は純粋な人間の知性の領域に属していましたが、現在、この領域は高度なアルゴリズムによって解読され、踏みにじられています。画像 フェルマーの最終定理は、何世紀にもわたって数学者を悩ませてきた「悪名高い」パズルです。それは 1993 年に証明され、現在数学者たちはコンピュータを使って証明を再現するという大きな計画を立てています。彼らは、このバージョンの証明に含まれる論理的エラーがコンピュータによってチェックできることを望んでいます。プロジェクトアドレス: https://github.com/riccardobrasca/flt

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

ラムダ式は名前のない匿名関数であり、その構文は (parameter_list)->expression です。匿名性、多様性、カリー化、閉鎖性が特徴です。実際のアプリケーションでは、ラムダ式を使用して、合計関数 sum_lambda=lambdax,y:x+y などの関数を簡潔に定義し、map() 関数をリストに適用して合計演算を実行できます。

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

MySQL データベース管理システムの基本原理の分析 MySQL は、データの保存と管理に構造化照会言語 (SQL) を使用する、一般的に使用されるリレーショナル データベース管理システムです。この記事では、データベースの作成、データ テーブルの設計、データの追加、削除、変更などの操作を含む、MySQL データベース管理システムの基本原理を紹介し、具体的なコード例を示します。 1. データベースの作成 MySQL では、まずデータを保存するデータベース インスタンスを作成する必要があります。次のコードは、「my」という名前のファイルを作成できます。
