1. まず前提について話しましょう:
Spring Boot を使用してビルドされた Spring アプリケーション;
Hibernate が使用され、spring-boot-starter-data-jpa が pom に追加されます;
データベースis MySql;
開発ツールは IDEA です。
私はWeb開発をしたことがなく、データベースのこともあまり詳しくないので、以下に言いたいことが現実的ではない、あるいは実装方法が良くないという場合は、アドバイスをいただければ幸いです。 ! !
2. 満たしたいニーズ:
たとえば、
このデータベースに複数の学校の数人の生徒の情報を入力する必要があります。
データ量が非常に大きくなる可能性があるため、同じテーブルにそれほど多くの生徒情報を入れたくありません。
私の考えは、
各学校に「○○校生徒情報テーブル」(tbl_School_XX、「tbl_School_01」など)を用意し、そこにその学校の生徒情報を入力するというものです。
独自の学校インデックス テーブル (tbl_School_Index) を使用します。このテーブルには、各学校のテーブル名 (「tbl_School_01」など) を格納するためのインデックス フィールド (インデックスなど) があります。
·新しい学校の生徒情報を入力したい場合、学校を追加するとアプリが自動的に新規「○○校生徒情報テーブル」を生成し、そのテーブルにアプリが自動で名前(「」など)を付けます。 tbl_School_01")、使用 この新しいテーブルは、新しい学校の生徒に関する情報を保存するために使用されます。同時に、このテーブル名が学校インデックステーブル(tbl_School_Index)のインデックスフィールド(index)にも追加されます。
・生徒情報を読み出したい場合や、既存の学校から新たに生徒情報を入力したい場合、インデックスフィールド(index)のデータは学校インデックステーブル(tbl_School_Index)から検索されます(「」など) tbl_School_01") を実行し、テーブル tbl_School_01 の読み取り/書き込みを行います。
図示の通り
3. 現在直面している問題は次のとおりです:
(1) リレーショナル データベースではテーブル内にテーブルを使用できないことを知っているので、そのような方法を思いつきましたが、それが実現可能かどうかはわかりません。または適切です。
(2) 新しいエンティティ クラス (@Entity) を作成する場合、属性と get/set メソッドを構成した後、アプリケーションを実行するとデータベースに対応するテーブルが生成されますが、そのテーブルを生成する必要はありません. 学校追加時にそのエンティティクラスに対応するテーブルを動的に生成する必要があります。
4.その他のアイデア
複数の学校のすべての生徒の情報を 1 つのテーブルに入れ、その生徒がどの学校の出身であるかを示すためにそのテーブルに「学校」フィールドを追加することを考えましたが、データの量が増えると心配です。このテーブルを使用すると、場合によってはさまざまな問題が発生する可能性があります。
5. 私の言ったことは少し冗長かもしれません。よく読んでいただきありがとうございます。アドバイスをいただければ幸いです。ありがとうございます!
新しい学校から生徒情報を入力したい場合、学校を追加すると、アプリケーションは新しい「XX学校生徒情報テーブル」を自動的に生成し、アプリケーションはテーブルに自動的に名前を付けます(「tbl_School_01」など)。この新しいテーブルは、新しい学校の生徒の情報を保存するためのものです。同時に、このテーブル名が学校インデックステーブル(tbl_School_Index)のインデックスフィールド(index)にも追加されます。
まず、現在の説明に基づいて (現在の説明にはテーブル間の操作を必要とする一部の操作が含まれていません)、生徒を追加するときに学校が存在しない場合、この方法は実行可能です。学校インデックスを挿入する必要があります。新しい関連テーブルを作成します。これはコードで実現できます (アプリケーションを再起動せずに)、構成を使用して実現できるかどうかはわかりません。知っています、ありがとう。
(2) 新しいエンティティ クラス (@Entity) を作成すると、属性と get/set メソッドを構成した後、アプリケーションを実行するとデータベースに対応するテーブルが生成されますが、そのテーブルを生成する必要はありません。学校が追加されると、そのエンティティ クラスに対応するテーブルが動的に生成されます。
ここで話しているのは、アプリケーションを再起動できる場合、設定を通じてデータを挿入し、テーブルを自動的に作成できるということです。休止状態を構成し、対応する SQL スクリプトをリソースの下に配置する必要があります。
application.propertiesでの休止状態の設定
リーリーSQLスクリプトストレージ