• ベストアンサー

accessとphpとsql

現在、WEBからphpでSQLを使い、access(2002)にデータ入力とデータ参照するシステムを作成しています。 とりあえず両方できていますが、データ入力は複数人数で同時に更新(異なるレコード。テーブルは同一)することが想定されます。 排他制御はやりかたがわからずに組み込んでおりません。 ですが、入力者には個別のページに飛んでそこからデータを更新するようなWEBになっており、注意して作業してもらえば排他制御しなくてもいいかなと思っています。 ネットでaccessではデータの破損が起きやすいとありましたが、このような使用状況では起こりえるでしょうか? また、accessからmysqlなどに変更するメリットなどはありますでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>ネットでaccessではデータの破損が起きやすいとありましたが、このような使用状況では起こりえるでしょうか? ネットでなくても、1人で使っていてaccessってデータ破損が起きやすいわけですから、複数ユーザで使えば、壊れやすさはアップすると想像できますね。 >>また、accessからmysqlなどに変更するメリットなどはありますでしょうか?  accessは、元々がシングルユーザで使って本領発揮するDBですけど、mysqlは、正統的なマルチユーザのDBなので、変更すれば、信頼性と処理スピードが良くなると思います。ただ、お手軽さはaccessのほうが上かもしれないので、使いやすさではデメリットになるかもしれませんね。

hike106
質問者

補足

早速の回答ありがあとうございます。 >accessってデータ破損が起きやすいわけですから いままで、access使ってきましたがデータ破損はまだ経験が無いです。 2002を使っているのですが、信頼性はmysqlなどに比べて低いものなのでしょうか? 補足でこのシステムはレコード数が60程度でその内容を随時更新していくようなシステムを作成しています。 これぐらいのものだとaccessで十分だとおもいますが、マルチユーザーで 行う更新処理(異なるレコード。テーブルは同一)にaccessで耐えられるものなのかどうなのでしょうか?

その他の回答 (2)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.3

>>いままで、access使ってきましたがデータ破損はまだ経験が無いです。 2002を使っているのですが、信頼性はmysqlなどに比べて低いものなのでしょうか? 2000のころですが、シングルユーザでの利用環境でも、Accessのスペックの限界に近いデータベースや帳票、大量データの更新をやっていたせいか、設計途中の、帳票が破損したり、運用中のDBが壊れたことが多かったです。これは私だけじゃあなくAccessで開発をやっていた人たち共通の認識で、「開発中は頻繁なバックアップ」「アプリ画面終了時に最適化とバックアップ自動実行」はお作法って感じでした。 昔、パソコン業界の裏を書いた本にも、Accessの原因不明なバグに苦しんだ末に「プログラマー空を飛ぶ(つまりは、飛び降り自殺ね)」って見出しの文章がありました。 たぶん、Accessだけでなく、Windows自体の信頼性の低さも原因になっていたような気がしますけどね。 mysqlなど、unix系のdbmsは最初からマルチユーザを考慮しているので、信頼性の差は歴然としています。でも、accessもWindowsも「いい加減さ」ゆえの使いやすさがあるのも確かですので、適材適所だと思ってます。まあ、「ルールガチガチのunix系と、臨機応変で、ルール破りもありのWindows系」て思ってます。でも、この「いい加減さ」がVistaのセキュリティ強化を失敗させた原因ですが。 >>これぐらいのものだとaccessで十分だとおもいますが、マルチユーザーで 行う更新処理(異なるレコード。テーブルは同一)にaccessで耐えられるものなのかどうなのでしょうか? 感覚的には、大丈夫そうな規模ですね。ただ、データが少ないとはいえ、データ同時更新の可能性とか、長時間ロックとか、停電等のトラブルによる更新中の障害発生などを思うと「壊れたら1・2日ほど回復まで待ってね。」っていえるシステムでないと私は使わないと思います。 あと、SQL Server 2005 Express Editionなんていう無償版がリリースされています。こっちはマルチユーザを意識しているので、できればこちらの利用をお勧めします。 (SQLServerは「ロックエスカレーション!」って「ムーン・ヒーリング・エスカレーション!」って単語を連想する現象をたまに起こして痛い目を見させてくれます・・・昔、それが原因でシステムが停止し「損害賠償だ!」なんてことになりかけたプロジェクトがありました。泊まりの日々だったようです。やっぱ、Oracleかな?)

回答No.2

> 2002を使っているのですが、信頼性はmysqlなどに比べて低いものなのでしょうか? 低いですね。 Access のデータ ファイルは単純に「単一なファイル」です。 対して MySQL などは DataBase Management System と呼ばれていて、実際のデータと、それを管理するシステムからできています。 例えば同時アクセスの場合・・・ System-A とSystem-B が(または同一システム上の User-A と User-B が)同時にデータへアクセスしようとした場合、Access のデータ ファイルの場合はそれぞれのシステムが勝手にファイルを操作しようとします。データ ファイルを管理する代表者がどこにもいません。 DBMS では外部からのデータ アクセス要求を管理システムが窓口になり、要求を交通整理しながらデータにアクセスします。 つまり最初から「不特定多数の外部からアクセスされること」を前提に作られているので、障害も起きにくいのです。

hike106
質問者

お礼

お礼が遅くなりすみません。 >最初から「不特定多数の外部からアクセスされること」を前提に作られている そうだとは知りませんでした。 mygqlを試してみようと思います。 ありがとうございました。

関連するQ&A

  • アクセスでこういうことが可能なのか教えてください。

    会社で使うのですが ・WEB上でデータを閲覧したり入力したりする。 ・入力したデータはテーブルにためる。 ・web上で入力する人数は100人いる。 100人が同時に入力することはないけど、入力する際は複数人になる可能性はある。 ・webというのは、サイトと言う意味。 ・入力する人は入力するだけだから テーブルに保存されているデータの閲覧はしない。 当方アクセス2010ですが このような事が可能なのか教えてください。 また、可能であれば排他制御?トランザクション処理? というのも必要ですか? また、このような作業をしたい場合、 アクセスが向いてなく他のソフトウェアの方がいいのならそれも教えてください。

  • mysql accessでの操作について

    宜しくお願いします。 MYSQL を ACCESS にて操作しているのですが、データ型について困っています。 MYSQL に bigint のフィールドがあります。そこに数値(金額)のデータがあります。 ACCESS で参照すると、テキスト型と表示されてしまい、access側で計算式が出来ません。 どのようにすれば、数値(金額)と認識させることが出来るでしょうか?

    • ベストアンサー
    • MySQL
  • [ACCESS97]SQLの書き方

    グラフのレコードソースにクエリ・SQLを使用しています。データ入力チェックに使おうと思っています。妙なデータがはいった場合、グラフが乱れるのではないかと。 ソートは日付でしています。 それで、100レコードずつを順番に表示していきたいのですが、top値 だと最初からいくつ、、としか指定できません。これを、レコードの途中の任意の位置から取るにはどうしたらいいのでしょうか? IDとかのようにユニークな値でソートしているのであれば、大小関係で一発ですが、同じ値がいくつも存在する日付なもので困っています。 日付でソートしたものを配列に入れる、もしくは一度テーブルに書き出す等も考えているのですが、SQLでできたら助かります。 よろしくお願いします。

  • SQL ServerとACCESSとのデータのやり取りについて

    下記の仕組みを検討しています。データをSQL Serverに置く。(安全性などを考慮して)Access側にも同じ構造のテーブルを用意してデータの編集・検索表示などをACCESSで行う。更新したデータをSQL Serverの該当テーブルにSQL文を実行して書き込む。書き込み方法は、両者を比較してSQL Server側にないレコードをInsert文にて追加する。(Not Inによるサブクエリを使用) お聞きしたいのは、ここで問題が発生していまして、 (1)単一主キーのテーブルの場合は動作しているが、複数主キーのテーブルの場合に、処理に非常に時間がかかる、もしくはエラーとなること(複数主キーでは処理できないものなのか) (2)上記のようなSQL ServerにデータをおいてAccess側でデータの編集・検索表示などを行う場合の良い仕組みについて 色々とHPを探し回ったのですが、今回のケースにずばり当てはまるものがなく、解決の糸口もなく苦戦しています。わかりにくい質問文になって申し訳ないですが、似たようなご経験の皆様方おられましたらアドバイス頂けないでしょうか。お願い致します。

  • ODBCとDAOについて

    Accessの排他制御について質問です。 ネットワークに存在するファイルサーバー上に置かれたAccessのMDBファイルの、排他・共有制御の方法についてです。 やりたいことは、複数の端末からMDBファイルにアクセスをかけてもデータの参照・更が可能である環境です。 MDBファイルの更新等を行うのはVBからです。 いろいろ自分で調べてみたのですがDAOで接続していれば排他等の問題はなさそうなのですが上司はDAOでは一つの端末からでしか参照・更新ができないからODBC経由でやれといわれます。 この場合どういった方法が一番適していると考えられるでしょうか。。。

  • access2010で共有でする

    access2003でDBを分割(テーブル=dbと他=pg)してpgをLAN経由でクライアントにpg_Accessを配布しLANDiscHDDのdb_Accessのテーブルにリンクさせていました。DBのプロパティ設定は、排他・編集済みレコードロックでした。しかし、access2010ではこの方法では、DBを共有してデータを追加・編集・削除ができません。 Web版にはしたくありませんので、良い方法があれば教えて下さい。私は初心者ですのでよろしくお願いします。

  • Access2019でMySQLデータ更新で障害

    初めてご質問します。 Access2019でMySQL(5.7.24)にODBC接続し、直接テーブルを更新したり、フォームからデータ挿入しようとすると、参照も更新もできるのですが、頻繁にAccessが強制終了してしまいます。 環境は以下の通りです。  OS:WindowsServer2016  Access:2019  MySQL:5.7.24  その他:Access、MySQLとも同じサーバー上にインストール  ODBCドライバー:mysql-connector-odbc-8.0.27-win32   MySQLは初の設定のため、ネットなどを参考にインストール、ODBCも無事に接続でき、Access上で作成していたデータを投入して、フォームからのデータ登録を試したところ、頻繁にエラーが発生してAccessが落ちてしまいます。 不思議に思い、AccessよりODBCでリンクを張っているテーブルを参照し、ごみデータの削除をすると同様にAccessが落ちることから、AccessとMySQLDBとの通信等等の障害と感じています。 OSのイベントビューワーでも、Applicationのエラーに複数のエラーが確認できました。 ・障害が発生しているアプリケーション名: MSACCESS.EXE、 ・Aborted connection 4 to db: ・障害バケット 1366483222980313419~ 当初はmysql_upgradeが発生していたので実行しました。 こちらを完了したところmysql_upgradeは表示されなくなりました。 同様にAccess2019も更新し、最新になっています。 AccessからODBC接続をさせ、安定して稼働させるには、どのようにしたらよいか、お知恵をお貸しいただけないでしょうか。

    • ベストアンサー
    • MySQL
  • MS AccessからSQL Serverに移行

    現在Accessを使ってデータの参照と、フォームでの入出力を行っています。海外拠点とVPNでつながっていて、今回そちらからも接続したいので無料版SQL Serverにデータを移行し、Accessはフロントエンドとしてフォームの利用のために使いたいのです。 データベース自体は画像やらPDFが置いてあるらしく500MBほどありますが、おそらくテーブルはあっても片手で数えられる程度、データは1000件ほどだと思います。 利用方法は部品番号を入力したら該当するデータシートがフォームに出力されるだけの単純で原始的なものです。多分エクセル+フォームでも再現可能です。発注時にそれを参照しつつ数量その他を決めて発注後、その発注データをテーブルに保存しているようです。 Accessはネットワーク越しの利用には向かないと聞きますので、SQL Serverにデータだけ移行させたいのですが、簡単にできますでしょうか? 一番簡単なのはAccessのデータベースがあるPCにリモート接続することですが、3人が同時利用できないのでこのような方法を検討しています(同時使用は最大でも3人たいてい2人まで、全体の利用者は7人ほど)。 Accessのアップサイジングという機能を使ってテーブルのデータを流し込み、ODBCでAccessからサーバ上のDBに接続するだけで動作するならそちらに移行したいです。 よろしくお願いいたします。

  • accessからのデータ参照について

    ご存知の方がいたら教えて下さい。 【動作環境】 OS:WINDOWS SERVER 2003,WINDOWS XP ACCESS:ACCESS2000 ORACLE:9i(9.2.0.1.0) 1つのACCESSファイルにシステム部分とデータ部分が存在しているACCESSのシステムを「システム部分はACCESS」「データ部分はORACLE」という形にしました。 ACCESSで管理していたデータをORACLEへ移行して、データ自体は簡単に移行が行え、ODBCでリンクをしてデータを参照できる状態にしました。 ここまでは、良かったのですが移行を行ったACCESSのテーブルに1レコード240ぐらい項目のあるテーブルが存在してリンクテーブルを開くことができません。 クエリーでも項目を選択した場合は参照できますが、全てを表示させようとするとダメです。 パススルークエリ等も試してみたのですが、いまいちうまくいきません。 どうにかして、1レコード240ほどのORACLEデータをACCESS側で参照することができないでしょうか? 説明が分かりずらく申し訳ありません。ご質問いただければ補足を致しますので、よろしくお願いします。

  • 排他制御の方法

    現在、PWS+ASP+ACCESSを使用し開発を行っていますが排他制御で悩んでいます。 ASPは、ステートレスなセッションでの制御しか出来ないため、ページを表示後のデータの変更はスタンドアロンでの更新のような形になってしまうと思います。 以下のような方法で行っている実例を見たことがありますが、少なからず問題も抱えていると思います。 ・レコード毎に排他フラグを保持する ~ 処理がアベンドした場合にフラグが残る(一定時間後に解除という方法もありますが) ・レコード毎に更新時間を持ち、読込時の更新時間と更新時の更新時間とを比較し更新されていない時だけ更新をかける ~ 後に更新をかけようとした変更が無駄になる 上記の方法以外で、排他制御を実現させる良い方法はないのでしょうか。他の方法で実現しているときは、その方法を教えて頂けませんでしょうか。 ※PWS→IIS、ACCESS→SQLServerに変更する可能性はあります。 (セッションオブジェクト・アプリケーションオブジェクト等を使用しての実現方法など) 宜しくお願いします。