アフィリエイト広告を利用しています
検索
<< 2023年11月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
最新記事
タグクラウド
カテゴリーアーカイブ
ファン
最新コメント
プロフィール
ゼロから始めるシステム開発さんの画像
ゼロから始めるシステム開発
 こんにちは!ナビゲータのEVEです。各種研究室を用意し、次期EVEシステムを製造しようと日々頑張っています。現在一番力を入れているのが、資金調達です。このブログもその一環ですので、ご協力いただければ嬉しいです。
プロフィール

2023年11月16日

外部キーの導入を検討する 〜データベース研究室〜


 こんにちは!
 ナビゲータのEVEです。
デスクトップパソコン.jpg
 何やってもうまくいかない日が続いています。そこで、ちょっと、生活リズムを変えようと考えています。
 まず、このブログですが、現在、16:00ぐらいから書きはじめて、17:00ぐらいにアップロードしようとしていますが、それを午前に行います。
 それに加えて、午前中は、簿記と開発をしようかなって考えています。今、起きる時間を7時に設定しているのですが、なかなか実現できません。寝る時間が増えれば増えるほど、この2つの割り当て時間が減ります。逆に早く起きれば、時間が増えるので、早く起きるようになると思うのですが・・・?それと、ブログの公開時間を17:00ぐらいに設定していても、なかなかその時間にできません。遅い場合は、午前様になることがあります。そうなると寝る時間が減るので、悪循環になっています。この生活リズムの変更により好循環になるかなって考えていますが、どうでしょうか?明日から試してみます。

[Prototype EVEのデータベース変更]
 以上のような状況で、なかなか開発の進捗がない状態なのですが、明日からやってみたいことがあります。それは、外部キーを設定すること・・・。今まで、すべてのレコードに主キーは設定しているのですが、外部キーは今まで設定していませんでした。理由は、当初、私の開発環境では、利用できなかったから・・・。そのため、導入せずに開発を進めました。その後環境を手に入れたのですが、処理速度に問題を感じなかったため、今まで導入していませんでした。開発当初、主キーが1項目しか指定できなかったり、トランザクションが利用できなかったりいろいろと不都合があり、業務で開発するシステムと比較すると、かなりチープな印象がありました。
 ただ、ChatGPTに以上の改善がいつ行われているのか聞いてみると以下のような回答がありました。

トランザクション     → 2002年1月
主キーに複数の項目を指定 → 2005年3月

開発が2004年からなので、少なくともトランザクションのほうは利用できたはずです。実は、標準MySQLという本に開発環境が一式入っていてそれを利用していたのですが、その本に添付されていたソフトが古かったようです。

【中古】 標準MySQL RDBの理解からWebアプリケーションの開発と運用 / 田中 ナルミ, 阿部 忠光, ソフトエージェンシー / ソフトバ [単行本]【メール便送料無料】【あす楽対応】

価格:743円
(2023/11/16 14:57時点)
感想(0件)



 今から考えるとトランザクションを利用できないとか、主キーが複数指定できないとか、かなり間抜けな開発をしていたものだと思います。
 なお、現在は、最新のソフトを利用することを心がけています。

[外部キーの指定の仕方]
 具体的にはどうしたらいいのでしょうか?ChatGPTに聞いてみました。

#子テーブル名
ALTER TABLE orders
#外部キーの制約名
ADD CONSTRAINT fk_orders_customer
#/子テーブルの外部キーカラム
FOREIGN KEY (customer_id)
#親テーブル
REFERENCES customers (
#親テーブル主キーカラム
customer_id);


以上の通りです。なお、外部キーの制約名なのですが、任意で指定できますが、データベース内で一意に命名する必要があります。利用方法は、後日外部キー制約の変更または削除する際に使用します。データベースの保守やデータベース設計の追跡のために、わかりやすくかつ一意な名前を付けることが一般的だそうです。なお、この外部キーの制約名は必ず付与しなければならないというわけではなく、管理という面から付与するのが普通です。

[あとがき]
 以上により、まずは、Knowlegeシステムから外部キーをしていきたいと思います。以前から遅い遅いと思っていました。その主因として考えていたのは、SQL文そのものです・・・。そのSQL文を見直すという作業は時間がかかるため、安直にできる方法として、外部インデックスを付与する方法を考えつきました。現在、サーバーではなく、WindowsXPが動いていたパソコンでKnowlegeシステムを動かしているのですが、激遅です。他にシステムでは、処理速度が遅くて困っているシステムはないことですし、Knowlegeシステムに外部キーを指定してみてどんな感じになるのか検証をしたいと思います。
 今どき、外部キーを指定していないデータベースシステムなんてないですよね?EVEシステムでは、適切に外部キーを設定していきたいと思います。

 では、また!