1

データベース テーブルを更新しようとしていますが、テーブルの名前の形式は employee_yearName_monthName です。毎月のデータを別のテーブルに保持したいからです。

今月の初めには、その月のテーブルはありません。だから私はテーブルを作成する必要があります。しかし問題は、テーブルが存在するかどうかをどのように判断するかです。

前もって感謝します。

4

2 に答える 2

2

他の人が言ったように、これは良いデザインではありません。ただし、デザインに固執したい場合は、そのまま使用できます

CREATE TABLE IF NOT EXISTS tablename ( ... )
于 2012-11-29T09:04:18.917 に答える
2

I want to keep each month's data on a separate table

これは本当に悪いデザインです!膨大な量のデータ (少なくとも 50 ~ 100 GB の範囲、約 1 億行) がある場合は、むしろパーティショニング (--> Oracle 、 --> MySQL を優先しますそれほど多くデータがない場合は、単に心配する必要はありません。データを 1 つのテーブルに格納し、適切な列を指定して、適切なインデックスを設定してください。

なぜこれは悪いデザインなのですか?これらについて考えてみてください:

  • たとえば、すべてのユーザーの年次レポートなどのクエリをどのように作成しますか?
  • ユーザーの名前が 32 文字の場合はどうなりますか? たとえば、Oracleが処理するにはテーブル名が長すぎます
  • 半分が 1 か月、もう 1 か月が次の月に含まれる週に関するクエリをどのように作成しますか?

OPが詳細を開示したので編集

  • データベースをリファクタリングできます-それには管理上の決定が必要です。現在の構造の維持と DB のリファクタリングに関連するコストを評価し、これを意思決定者に提示する必要があります...
  • Oracle では、USER_TABLES管理テーブルを使用してテーブル名をクエリできますSELECT * FROM USER_TABLES WHERE TABLE_NAME LIKE 'employeeName%
于 2012-11-29T09:02:03.893 に答える