• ベストアンサー

連結、非連結のデータベースについて

現在、趣味でデータベース開発をしており ACCESS単体で作成する場合は連結←非連結での作り方が分からない為(苦笑) VB+ACCESSで作成する場合は非連結 という方法で作成しています。 一般的な業界のデータベースの開発現場では、非連結によりデータベース作成が基本なのでしょうか?? 開発に取り掛かるに当たって、連結or非連結はどの様な観点で選ばれるのでしょうか? また、初心者の理解として、 連結→直テーブル更新される 非連結→画面上のデータを『登録』等のボタン押下後に登録と認識しておりますが、 この点につきましても間違いがございましたら、ご教授下さいませ。

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

基本的にはデータベースは連結・非連結ではなくデータの重複をなくすことによってデータの管理を容易にしたりデータを多様な目的に用いるのに有効な方法でデータベースの構築の基本になる正規化を基に作成します。 これがデータベースの開発の基になります。 連結・非連結はコントロールのあり方でデータベースのテーブル自体はキーによって各テーブルは結合されて構成されます。 連結・非連結とのことなのでフォーム等のコントロールのことでの質問と理解して・・。 テーブルのレコードに対してそのコントロールがテーブルのフィールドに連結されているかいないかでデータを操作する際の対応が変わります。(連結→直テーブル更新される非連結→画面上のデータを『登録』等のボタン押下後に登録 のように) 例えばフォームでレコードを追加・修正・削除等の処理をする際に適切な方法で行うのが良いのでそこで連結にするか非連結にした方が良いのかが変わると思います。 連結にしてレコード単位でフォームに読み込み時にレコードロックを行えば他者が修正・削除は出来ないのでレコードのデータを修正・変更する際に有効。 極端な例ですが非連結でフォーム上にレコードを表示し修正し更新しようとしたら他者がそのレコードに更新かける前に削除しまっていた。という事が起こりかねない。それを防御する為に連結コントロールでレコードをロックさせていれば他者か削除してしまうことがない。 など 小規模のクライアントでのデータベース開発ならこの辺を考慮して決めれば良いのではないでしょうか。 大規模だともっと厳密になりますが。 連結→直テーブル更新される Accessでは連結ではUpdate(新規ならInsert)するかレコードを移動した時に更新されます。 非連結→画面上のデータを『登録』等のボタン押下後に登録 (ボタン等のイベントで)Update(新規はInsert)しないと更新されない。 で良いと思います。

その他の回答 (2)

  • 7marine
  • ベストアンサー率36% (59/160)
回答No.3

#2の続きです ■非連結であることの最大利点 多人数の同時データ更新が可能 ■連結であることの最大利点 開発効率が良いこと でしょう。 >連結or非連結はどの様な観点で選ばれるのでしょうか? もしデータベースの利用目的をきちんと設計できているなら、開発する上でどちらを選択すればよいかを判断することが容易になります。 一人しかそのデータベースを利用しないのに非連結でのデットロックを回避するようなコードを実装した重厚なアプリケーションを作ることは、全くの無意味です。それより市販のファイルメーカーなどで作成したほうが開発時間は10分の1で済むはずです。 逆に多人数での使用が目的なのに連結で実装すると、誰かが更新を完了させるまで他の人が作業を進めることが出来ない。となるでしょう。 では良き趣味ライフを!

bluevoxy
質問者

お礼

分かり易いご回答ありがとうございます。 私は、データベースはファイルメーカーから入りました。 ACCESSにおいても、ファイルメーカーにしても連結ですと、何か誤ってキーに触れて、 そのフィールドのデータが消えてしまうと、一度であればctrl+zで何とか戻せますが・・・・ 最悪、自分が知らない間にデータが変わる可能性が怖いなぁと思い、業務では非連結と思い込みがありました。 実はこの点が一番ネックな部分でした。 しかし使う規模とユーザーの要求によっては、非連結でも全然OKで、ましてやファイルメーカでもOKなんですね。 瞬間にデータが書き換わってしまう注意点等はユーザーにきちんと伝えて・・・ O_cyan様がおっしゃった極端な例の、非連結で更新しようとしている時に他の人が削除・・・ という事も確かに非連結ですと考えられますね。奥が深いです。

  • 7marine
  • ベストアンサー率36% (59/160)
回答No.2

>ACCESS単体で作成する場合は連結---(A) >VB+ACCESSで作成する場合は非連結---(B) では正確な表現ではないと思いますが、大体そんなものです。 正確な表現ではどうなるかを私が理解できる範囲で回答させていただきます。 ■データベースとインターフェースの接続が 保持している間にデータの更新を行う=連結 切れている間にデータの更新を行う=非連結 ですので実装によってはVB+ACCESSでも連結は可能です。 結果として >連結→直テーブル更新される >非連結→画面上のデータを『登録』等のボタン押下後に登録 に見えることが多いとなります。 しかしそれはそのように見えるだけで更新時のみDBへ自動的に接続していれば非連結であるが直テーブルが更新されているように見える状況があります。 >一般的な業界のデータベースの開発現場では、非連結によりデータベース作成が基本なのでしょうか?? 「一般的な」では残念ながら開発規模もわからず状況を全く伝えられていません。 ただ業界のデータベースの内もっともシェアがあるのはリレーショナルDBである事とAccessをあげていることから非連結が主流であることは確かです。 では連結データベースがメインになる現場は何になるかと申しますとワークグループ(会社でたとえるとスタンドアローンから部署単位まで)の開発がそれに当たります。 趣味でのデータベース開発がWindowsアプリであれば連結系がまだまだ使われていると思いますが、Web系であれば非連結でないと実装できなくなります。 以上、初心者の理解から一歩構造を理解しようとすると、こんな感じになります。 少し説明が長くなってしまったので、さらにそれぞれの利点について回答させてください。#1の方とかぶってしまいますけど

関連するQ&A

  • データベースの入力

    アクセスのデータベースとデータ-グリッドを 連結させて、データを入力するプログラムを 組んで、PCにインストールしたのですが、 インストールしたPCでデータを入力すると 実行時エラー13(型が一致しません)と出てしまいます。 開発環境だとエラーがでません。 開発環境 Win2000SP2 VB6 SP4 ACCESS2000 インストールPC WinNT4.0 SP6

  • web-database連結について

    HTMLとデータベースを連結させたWEBページを作成する言語でVBスクリプトとPHP言語ではどう違うのでしょうか?

    • 締切済み
    • PHP
  • データベース型アプリの設計について

    いつも参考にさせていただいております。 VB等の言語を使用してWindowsアプリを作成するときに データベースを使用したくなることが多いと思いますが、 そういった場合にはどうしても「データベース」として オラクル等を使用しなければならないのでしょうか? ふと疑問に思ったのですが、例えばMS-Access でデータベースを作った場合に.mdbファイルが作成 されますが、これってAccessで開いて初めてデータ ベースとして機能しますよね? かなり高度な話になるのでしょうが、自分でアプリを 作成してそのアプリ独自のファイルを作成してデータ ベースを構築することは出来るのでしょうか? そんな作り方をしている方はいるのでしょうか? ソフト屋のホントに売るためのソフト開発でもないと そこまでしないぞ、ということなのかもしれませんが。 どなたかご意見ください。

  • VBでのデータベース作成のメリットって?

    VBでのデータベース作成のメリットって? VBとAccessを勉強させられていますが、 Accessというデータベースソフトがあるのに、なぜ書店には「VBでデータベースを作る」といった本があふれているのでしょうか。 Accessでは実現できない機能や利便性があるのでしょうか。 PCには両方のソフトが入っているという条件で回答いただけませんでしょうか。

  • ACCESS+VBの開発は業界の方はどう見られますか!?

    現在、社内でデータベース開発をしております。この業界は初心者に近いのですが、 現在の開発環境はVB+ACCESでデータベースを作成しております。 フォームをVBで作成し、データはACCESに格納しております。 そこで、質問なのですがACCESSにはフォーム作成の機能もありますし、 VBA機能もあるので、単純に私は、ACCESだけで作成しても同じじゃないの?? そもそもVB+ACCESSの開発はメジャーなのでしょうか??現在ならば、VB.netやOracleなどの方が・・・ と思う気持ちもあり、この先自分のスキルアップの為にも、このままでいいのかな?? と迷っております。 詳しい方、アドバイスを頂けたらと思います。 何卒よろしくお願い致します。 また現在、よくデータベースでOracleという言葉を聞きます、Oracleはこのソフト1つで DB作成が可能なのでしょうか?プログラムは何を使っているのでしょうか??

  • データベース

    VB.Net2003とアクセスでデータベース(RDB)を作成しているのですが、 オープンファイルダイアログ等で任意の場所にmdbファイルを保存、接続することは可能でしょうか? お願いします。

  • データベースの選び方

    社内システムを構築しようとしています。 本格的な設計は初めてで、他に頼れる人もいないという心細い状況です。 ・月に二万件程度ずつレコードが追加される ・主に範囲を指定して検索したり、修正したりする ・LANで複数の人がアクセスする というような仕様で、データベースをアクセスにするかSQLサーバにするか、 迷っています。 開発環境はWin98SE+Office97、SQLサーバの場合はVB5.0です。 それぞれのメリット・デメリットを教えてください。 また、データベースを選ぶ際のポイント、 参考になるサイトなどありましたら、ぜひ教えてください。 よろしくお願いします。

  • VBからSQLServer2005のデータベースを最適化するには?

    WindowsXP,VB6.0.SP6にて開発しております。 タイトルの通りですが、SQLServer2005のデータベースを最適化したいのです。 色々調べましたところ、ACCESSでの最適化は見つかるのですが、 SQLサーバーでのやり方が見つかりませんでした。 どうか、ご存知の方いらっしゃいましたら、 ご教授よろしくお願いしますm(_ _)m

  • Access2000で作成したデータベースの移動について

    パソコンを新しくしたので、ACCESS2000で作成したデータベースを新しいパソコンに移動しました。 そしたら、クエリーが作動してくれず、連結ファイルの作成が出来なくなりました。 クエリの連結をすべてやり直さないとだめなんでしょうか?他に、方法はありませんか? 解決法をご教授お願いいたします。

  • データベースは何が良いでしょうか?

    現在、データベースを使用するシステムを構築しようとしています。 現在、想定している環境は、以下の通りです。 1.Windows2000上で動作する。 2.データベースの読み書き用のプログラムは、VB.NETを使用して開発する。 3.テーブルのレコード数は最大1000×365=約37万件 (1000件の顧客で、356日分のデータ) 4.1顧客につき、1月単位、1日単位でデータの表示及び印刷を行う。 現在、データベースの候補として、 ACCESS SQLサーバー オラクル MySQL等を想定しています。 私としては、パフォーマンス的に問題ないならACCESSにしたい。問題があるならSQLサーバーにしたいと考えております。理由は、VB.NETに合うのは同じマイクロソフトの製品だろうという漠然としたものです。また、ACCESSが一番簡単でてっとり早いような気がしたからです。 上記の中で、お薦めのデータベースがありましたらコメントください。またその理由もお願いします。(上記以外でもかまいません)