- ベストアンサー
連結、非連結のデータベースについて
現在、趣味でデータベース開発をしており ACCESS単体で作成する場合は連結←非連結での作り方が分からない為(苦笑) VB+ACCESSで作成する場合は非連結 という方法で作成しています。 一般的な業界のデータベースの開発現場では、非連結によりデータベース作成が基本なのでしょうか?? 開発に取り掛かるに当たって、連結or非連結はどの様な観点で選ばれるのでしょうか? また、初心者の理解として、 連結→直テーブル更新される 非連結→画面上のデータを『登録』等のボタン押下後に登録と認識しておりますが、 この点につきましても間違いがございましたら、ご教授下さいませ。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
基本的にはデータベースは連結・非連結ではなくデータの重複をなくすことによってデータの管理を容易にしたりデータを多様な目的に用いるのに有効な方法でデータベースの構築の基本になる正規化を基に作成します。 これがデータベースの開発の基になります。 連結・非連結はコントロールのあり方でデータベースのテーブル自体はキーによって各テーブルは結合されて構成されます。 連結・非連結とのことなのでフォーム等のコントロールのことでの質問と理解して・・。 テーブルのレコードに対してそのコントロールがテーブルのフィールドに連結されているかいないかでデータを操作する際の対応が変わります。(連結→直テーブル更新される非連結→画面上のデータを『登録』等のボタン押下後に登録 のように) 例えばフォームでレコードを追加・修正・削除等の処理をする際に適切な方法で行うのが良いのでそこで連結にするか非連結にした方が良いのかが変わると思います。 連結にしてレコード単位でフォームに読み込み時にレコードロックを行えば他者が修正・削除は出来ないのでレコードのデータを修正・変更する際に有効。 極端な例ですが非連結でフォーム上にレコードを表示し修正し更新しようとしたら他者がそのレコードに更新かける前に削除しまっていた。という事が起こりかねない。それを防御する為に連結コントロールでレコードをロックさせていれば他者か削除してしまうことがない。 など 小規模のクライアントでのデータベース開発ならこの辺を考慮して決めれば良いのではないでしょうか。 大規模だともっと厳密になりますが。 連結→直テーブル更新される Accessでは連結ではUpdate(新規ならInsert)するかレコードを移動した時に更新されます。 非連結→画面上のデータを『登録』等のボタン押下後に登録 (ボタン等のイベントで)Update(新規はInsert)しないと更新されない。 で良いと思います。
その他の回答 (2)
- 7marine
- ベストアンサー率36% (59/160)
#2の続きです ■非連結であることの最大利点 多人数の同時データ更新が可能 ■連結であることの最大利点 開発効率が良いこと でしょう。 >連結or非連結はどの様な観点で選ばれるのでしょうか? もしデータベースの利用目的をきちんと設計できているなら、開発する上でどちらを選択すればよいかを判断することが容易になります。 一人しかそのデータベースを利用しないのに非連結でのデットロックを回避するようなコードを実装した重厚なアプリケーションを作ることは、全くの無意味です。それより市販のファイルメーカーなどで作成したほうが開発時間は10分の1で済むはずです。 逆に多人数での使用が目的なのに連結で実装すると、誰かが更新を完了させるまで他の人が作業を進めることが出来ない。となるでしょう。 では良き趣味ライフを!
- 7marine
- ベストアンサー率36% (59/160)
>ACCESS単体で作成する場合は連結---(A) >VB+ACCESSで作成する場合は非連結---(B) では正確な表現ではないと思いますが、大体そんなものです。 正確な表現ではどうなるかを私が理解できる範囲で回答させていただきます。 ■データベースとインターフェースの接続が 保持している間にデータの更新を行う=連結 切れている間にデータの更新を行う=非連結 ですので実装によってはVB+ACCESSでも連結は可能です。 結果として >連結→直テーブル更新される >非連結→画面上のデータを『登録』等のボタン押下後に登録 に見えることが多いとなります。 しかしそれはそのように見えるだけで更新時のみDBへ自動的に接続していれば非連結であるが直テーブルが更新されているように見える状況があります。 >一般的な業界のデータベースの開発現場では、非連結によりデータベース作成が基本なのでしょうか?? 「一般的な」では残念ながら開発規模もわからず状況を全く伝えられていません。 ただ業界のデータベースの内もっともシェアがあるのはリレーショナルDBである事とAccessをあげていることから非連結が主流であることは確かです。 では連結データベースがメインになる現場は何になるかと申しますとワークグループ(会社でたとえるとスタンドアローンから部署単位まで)の開発がそれに当たります。 趣味でのデータベース開発がWindowsアプリであれば連結系がまだまだ使われていると思いますが、Web系であれば非連結でないと実装できなくなります。 以上、初心者の理解から一歩構造を理解しようとすると、こんな感じになります。 少し説明が長くなってしまったので、さらにそれぞれの利点について回答させてください。#1の方とかぶってしまいますけど
お礼
分かり易いご回答ありがとうございます。 私は、データベースはファイルメーカーから入りました。 ACCESSにおいても、ファイルメーカーにしても連結ですと、何か誤ってキーに触れて、 そのフィールドのデータが消えてしまうと、一度であればctrl+zで何とか戻せますが・・・・ 最悪、自分が知らない間にデータが変わる可能性が怖いなぁと思い、業務では非連結と思い込みがありました。 実はこの点が一番ネックな部分でした。 しかし使う規模とユーザーの要求によっては、非連結でも全然OKで、ましてやファイルメーカでもOKなんですね。 瞬間にデータが書き換わってしまう注意点等はユーザーにきちんと伝えて・・・ O_cyan様がおっしゃった極端な例の、非連結で更新しようとしている時に他の人が削除・・・ という事も確かに非連結ですと考えられますね。奥が深いです。