「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:1
総数:1293
現在:2


1テーブルの限界フィールド数を超えてしまった場合の対応方法は?

ページOpenOffice.org FAQの登録ページ
投稿者奮闘ど素人
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2008-05-24 22:53:02 (土)
OSXP
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

Baseを使い、サービス業(実際はNPO)の顧客サービスDBを作ろうとしています。 名前、ID、電話、住所等、一般的個人情報の他に、こちらが提供しているサービス詳細を全てテーブル一行に入れようとしています。例えば、ひとつのサービスでも「サービスA予約日」「サービスA支払」「サービスA実施日」等、一つのサービスにも複数の内容をデータ化したいのです。それをサービスAだけでなく、サービスB、サービスC〜と複数個作ってゆきたい。サービスは固定で、その場に応じて増えるものではないですが、各々のサービスにて前述のように幾つかのデータを記録したいのです。ここまでは問題ありません。

しかし、当方の提供しているサービスの数が多く、Baseのテーブルのフィールド名を増やしていったところ、制限数をいくらか超え、頭打ちになってしまいました。1つのテーブルで出来るものかと思いきや…、それが出来なかったのが痛いです。また、その場合Baseでどんな対応が出来るのか、私は初心者の域を超えないので想像がつきません。

何とか、顧客一人のデータを2種類に分けるなどして対応させないといけないのかなぁ、と思っています。たとえば1つのテーブルには名前、ID、電話、住所等、個人の基礎情報。もう一方にはサービスの詳細などです。その二種類を、仮想上、一つのテーブルの様に利用したいのです。クエリーを使って、そういうことが出来るのでしょうか? それが判らないのと、もう一つの問題は、フォームなどで新規顧客データを増やす際に、双方同時にテーブル行数を増やしてゆく方法がわからないといけません。

他の解決方法でも良いのですが、何か方法がございましたらご教授願えませんでしょうか。よろしくお願いいたします。


追記

奮闘ど素人 (2008-05-25 01:15:08 (日))

faq/4/21と、ほぼ同じようなやり方で、複数のテーブルを同一行に表示したり、内容を変更することは可能なようですが、faq/4/21=『複数ページから作ったクエリーで「データの編集」が不可』の議論や解説でも見られますように、新規データを複数のテーブルで同時に作ることに難があるようです。この問題は、バージョンアップが進んだ現在でも解決されていないのでしょうか?

まず、クエリーで作成したテーブルの件

M.Kamataki (2008-05-25 11:09:11 (日))

関連質問として、faq/4/21だけでなく、
faq/4/694「Baseの複数テーブル対象に、フォームでデータを編集する方法」
もあります。

こちらに開発状況を報告しています。ご覧いただければわかりますが、ターゲットが3.0から3.xに変更されました。理由は「コードの変更が大きく危険」というものなので、来年リリースされるバージョンでも難しいかもしれません。

GUIの制限値とDBの制限値は異なります

M.Kamataki (2008-05-25 11:19:57 (日))

本当にDBの制限値を超えたのか、ご確認ください。

HSQLDBのFAQ:
http://hsqldb.sourceforge.net/web/hsqlFAQ.html#BIGRESULTS

を見ると列(フィールド)の最大値は1024となっています。ご報告の制限値が1024以下であれば、GUIの制限値です。この場合、Baseの画面から「ツール」−「SQL」で「SQLステートメントの実行」を開き、実行コマンド欄にCREATE TABLE命令を書き、実行すれば1024列までのテーブルは作成できるはずです。

しかし、明らかにパフォーマンスが落ちそうな気がするので、やはりテーブルの正規化をすべきではないでしょうか。

ということで次のタイトルに。

正規化したテーブルでサブフォームに

M.Kamataki (2008-05-25 11:24:00 (日))

名前、ID、電話、住所等、一般的個人情報は顧客マスターに、それ以外は個別のテーブルにするとよいと思います。サブフォームを使うと次のような構造のフォームとなり、それぞれのテーブルの更新も可能なはずです。

顧客マスター
 | | |
 | | +- サービスAテーブル
 | +- サービスBテーブル
 +- サービスCテーブル
お名前:
題名: