データベースプログラミング全般スレ

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
NGNG
データベース板もあるが、あそこは過疎板だからこっちに立てました。
データベース関連のプログラミングならな〜んでもOK。
色んな話をしませまうる号。
2007/07/05(木) 15:57:20
>>196
データベース内のデータと、人が見るGUI上の表示を変えることはよくあると思うが。
具体的に何のアプリ使ってるの? MS Access とか?
データベース本体と、それを操作するGUIプログラムは別になってる方が一般的な気がする。
2007/07/05(木) 17:29:31
>>197
プログラミングの居場所?
すみません。ちょっと分かりません。

例えば、ラジオコントロール と 登録ボタンだけの簡単なアプリがあったとして、
登録ボタンを選択時に、DBへ登録するなどです。

ラジオコントロールで 1=女 が選択されていれば、1がDBへ入ります。
ただ、この1は、フォームとDBで決まりごととして、対応する事になります。
例えば、女のIDを1→501 へ 値を変えた場合、フォームも変更しなければいけません。
通常、このような作りは良くないと思います。

>>198
環境は、SQL Server と VB.NET(2005) になります。
2007/07/05(木) 18:44:52
あ〜
201デフォルトの名無しさん
垢版 |
2007/07/05(木) 19:27:17
>>199
フォームが"1"の時はフィールド 性別 の値は"女"と変換するのが
プログラムの役割だと思うのですが。
これだとフォームが変更されるとプログラムを変更しなくては
ならなくなりますが、それがいけませんか?
2007/07/05(木) 20:09:22
>>201
うーん。
「データとプログラムは分けるべき」って言うのが根底にあるんですが、
どうなんでしょうか。

この場合、DB側でもフォーム側でも、0=男、1=女 という情報を持っているわけですよね?

どちらか片方(フォーム/DB)を修正したら、もう一方も修正が必要というのは、
設計がおかしいような気がしてならないのです。

それともそういうものなんでしょうか。
2007/07/05(木) 20:25:06
プログラムには、

if(seibetsu=="0") then function_otoko();
else if (seibetsu=="1") then function_onna();

のようなことがどこかに書かれているのでしょう?
フォームとDBの修正どころか、プログラムも変更が必要に
なると思います。
204203
垢版 |
2007/07/05(木) 21:04:36
どうしても「データとプログラムはそれぞれ独立」にするべきだとすると

1 フォームのボタンの名,
2 そこで返される値,
3 データベースに格納されるときの値
の少なくともこの3項目をフィールドとして持つテープルを作っておいて、
まずこのテーブルを読み込み、変換してデータベースを処理するように
プログラミングする。あるいはプログラムは何もせずJOINで処理する。
が、考えられるのではないか。
>>193 がこれに当たるのかどうか、よくわからない。
2007/07/05(木) 21:11:18
入力で返される値をそのままDBに保存するのはセキュリティホールの元
2007/07/10(火) 01:24:42
ちゃんとチェックしないとねえ。
2007/08/02(木) 23:21:17
誰か>>188プリーズ
208デフォルトの名無しさん
垢版 |
2007/09/05(水) 21:09:46
こんにちは、ど素人プログラマです。

SQLサーバー2000について教えて欲しいのですが、

あるテーブルに項目1、項目2、項目3が定義されているとして、
 項目1の値が「1」のときは、項目2は必須項目
 項目2の値が「1」以外のときは、項目3は必須項目
というような事を外部キー制約のように実現するにはどうすればいいのでしょうか?

制約? トリガ?
2007/09/16(日) 15:37:43
DFD図を清書して資料として残そうと思っているのですが、
これを書く何か良いソフトは無いでしょうか?
それともボールペン最強でしょうか?
210209
垢版 |
2007/09/16(日) 18:48:04
XEAD ってソフトがよさげなので、試してみることにしました。有難う御座いました。
211デフォルトの名無しさん
垢版 |
2007/10/06(土) 13:08:14
昨日からDBMSの勉強始めた者です。すみません。
DBが複数の表を入れる器だというところまで理解しました。

素朴な疑問ですが、同じWebサービスを提供するアプリなどで、
ユーザ数ぶん器を用意するのが普通なのでしょうか?
それとも、表を重複しない名前にして一つの器にブッこんでいけばよいのでしょうか?
2007/10/06(土) 14:18:31
どこまでわかっているかしらんけど
とりあえずいえるのはユーザー数に比例して増えるのはテーブルの行数
負荷が大きいと複数の物理的なデータベースサーバーを増やすがそれはまた別の話
2007/10/06(土) 18:15:55
>>212
なるほどありがとうございます。
1ユーザが、それぞれ顧客情報のテーブルや商品情報テーブルなどを持って
ショップシステムを運営するような場面です。
1DB内に、顧客情報テーブルA、顧客情報テーブルB、商品情報テーブルA・・・と入れていき、
ABで区別して使おうかと考えました。
2007/10/06(土) 21:55:25
>>213
それならユーザーごとに別DBにするのが一般的だな。
215デフォルトの名無しさん
垢版 |
2007/10/07(日) 04:43:45
>>213
レン鯖とかでcreatedb無理なら1個で、できるならユーザ別に、でいいんじゃね?
2007/10/08(月) 11:11:03
自分だけのデータベースならともかく、顧客情報とかも扱うデータベースつくろうって人が
そういう知識じゃ危なすぎだろう。
2007/10/08(月) 14:23:28
テーブルは単なる例です。
説明しやすいかと思いまして。
2007/10/09(火) 02:02:19
うむ。どっちがいいだろうか...
2007/10/21(日) 13:52:32
ユーザーテーブルに
・ユーザー情報全般を更新
・電話番号のみ更新
の2つの更新がある場合に、
@ 2種類のUPDATEを発行する処理を別々に作る
A UPDATEを発行する処理は1箇所で、
1回SELECTしてとってきたデータに、更新したい情報のみセットして同じUPDATE処理を実行する
(更新しないデータもSQL上だと set xxx = val, みたいになります)
1と2どちらがいいのでしょうか。
2007/10/22(月) 00:39:42
>>219
221219
垢版 |
2007/10/22(月) 23:28:49
>>220
ありがとうございます。そうなった場合に同一テーブルに対するUPDATEが複数できてしまうのですが、こういうものなのでしょうか。
2007/10/23(火) 11:14:04
「UPDATEが複数できてしまう」とは、どこに出来ると考えてるの?
223219
垢版 |
2007/10/23(火) 21:39:32
>>222
Daoに2種類のメソッドができてしまうといったほうがいいでしょうか。。。
2007/10/23(火) 22:03:35
>>223
電話番号のみ更新用メソッドと、ユーザー情報全部更新用メソッドが出来るって事でしょ?
ユーザー情報の更新に時間掛かるんだったら分けた方が良いし、
そうでなければ全部更新だけで良いような気がする。
2007/10/24(水) 22:48:39
どちらも主キーを条件に更新をするので更新件数は1件です。
1. updateAllで発行されるSQLは update userTbl set name = * , addr = * , tel = *, kubun = * where...
2. updateOnlyTelで発行されるSQLは update userTbl set tel = * where ...
全部更新だけを採用した場合、画面から受け取るのは主キーと電話番号だけなので、1は実行できないじゃないですか。
なので、1の全部更新を実行するために、主キーでデータを取得したDTOに画面からきた電話番号だけをセットして1を実行する、という流れになるのかなぁと。

さらに、kubunだけを更新するような機能が追加された場合に、
update userTbl set kubun = * where ...
を作るのか、これだとupdate文ばかり種類が増えるのが気持ち悪いような気がして・・・
2007/10/25(木) 10:29:12
画面表示や、画面からデータベースへ情報を受け渡すプログラムはどうしてるんだ?
ユーザー情報が全て画面に表示してあるなら、そこから全情報を渡すこともできるんじゃないの?
画面上で変更された項目だけについてSQLを動的に作成することもできるだろ。
2007/10/25(木) 23:04:44
全情報更新は、ほとんどの入力項目がテキストボックスで編集画面にくると現在値がセットされいて、hiddenに主キーがあります。
電話番号のみ更新は、電話番号のみテキストボックスがあり編集画面にくると現在地がセットされていて、hiddenに主キーがあります。

動的にSQLを作るとは、例えばStringBufferとかでがんばるということですか?
update userTbl set ************* where id = ..
***の部分を値があったら StringBuffer#append("name = " + name) という感じで。

本当に頭悪くてごめんなさい。
228デフォルトの名無しさん
垢版 |
2007/11/07(水) 10:20:59
visual basic上で、SELECT文に変数を使用することは可能ですか?
229デフォルトの名無しさん
垢版 |
2007/11/07(水) 10:35:39
Ruby on railsなんて見ていると、DBプログラミングなんて必要なのかどうのなのか
と思うのだが。
2007/11/07(水) 10:41:09
ああいうのが今後有望な方向の一つだとDB関係の御大が
ACM Queueのインタビューで言ってたな。
2007/11/07(水) 17:27:34
MS-DOS時代の、CUIデータベースソフト(マイクロソフトアクセスの前身?)の名前がどうしても思い出せないんですが、おわかりになるかた、おしえてください。

よろしくお願いします。
2007/11/07(水) 21:33:00
マルチプラン?
2007/11/09(金) 00:06:53

2007/12/20(木) 20:51:36
>>231
通称マルチファイル
マイクロソフトマルチツール - ファイル だったかな?
- プラン 通称マルチプランが 表計算
他にマルチチャートってのがあった。

dBASEII の事じゃないよね?
235デフォルトの名無しさん
垢版 |
2007/12/29(土) 16:31:20
トリガーアクションとして、「プログラムの起動」ができるDBシステムは
ありますか?
236デフォルトの名無しさん
垢版 |
2008/01/14(月) 17:05:21
Microsoft SQL Serverって商品名ですか?

分からないことがあってぐぐってるんですが、各々の単語って
一般名詞だと思いません?


どうしてマイクロソフトアアアアアアアアアアア!!!
2008/01/14(月) 18:35:50
>>236
Microsoftは一般名詞じゃないよ
2008/01/14(月) 20:00:20
そうだね(´・ω・`)ショボーン
2008/01/14(月) 20:55:55
Windowsとか
もうやめてくれよと
240デフォルトの名無しさん
垢版 |
2008/01/20(日) 19:37:58
なんでウインドウズを使いたがる奴がいるのか?
2008/01/20(日) 20:27:23
一番便利だからだろうな
242デフォルトの名無しさん
垢版 |
2008/01/21(月) 20:17:06
なんでウインドウズは車輪の再発明ばかりやるのか?
2008/01/21(月) 20:18:39

http://itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/
2008/01/22(火) 00:15:28
>>242
*nixの連中は再発名ばっかやってるよなw
2008/01/22(火) 00:17:56
再発名?
2008/01/22(火) 05:48:19
再発名はあるいみ至言かもしれん。
同じ概念なのに名前だけが違うって意味だろ?
マイクロソフトがお得意の。
2008/01/22(火) 06:24:15
かといって最近の*nixにオリジナルな新概念があれば
知りたいもんだが…
パクリ元が尽きたせいでMicrosoft Researchがあの
規模になってんだyo!
2008/01/22(火) 22:03:33
>>247
過去の蓄積をパクり終えた後はそりゃ当然だろ。
ある時代に研究開発しているものはどれも同じような問題意識が背景となるわけで。
2008/01/22(火) 22:46:29
パックってもいいが、意味無く文法かえたり名前変えたりして欲しくない
ディレクトリのデリミタも素直にスラッシュにしておくべきだった
2008/01/25(金) 05:45:11
マイクロソフトは自社のパクリ製品をスタンダードにしたがるからなあ。互換性で問題でまくり。

マカ方面も一般名詞のプロダクト多いし、頭にi付けたのばっか。
ワードじゃなくてページとか、パワーポイントじゃなくてキーノートとか。

またDARRPAがお金出して、戦争用のネットワーク構築に伴うOS開発ってやらないのか?
OSの進化が止まってる。ネット機能以上の盛り上がりがないよな。仮想化もいまいちだし。
251デフォルトの名無しさん
垢版 |
2008/01/29(火) 14:07:09
WEBデータベースプログラミングの卒論書くにもあまりサイトしらないので、書くのにオススメのWEBサイト教えてください
252斎藤亜紀
垢版 |
2008/01/29(火) 14:10:36
GetMoney!では、名前に恥じないよう、皆様にキャッシュバックしやすい仕組みを
 提供しております。
 ぜひ、この機会に、GetMoney!に無料会員登録してみてください!

 http://dietnavi.com/?id=676366
2008/03/04(火) 00:35:30
お前ら、データベースをマンセーしてるのか?
2008/03/04(火) 14:44:45
肉のマンセー
255デフォルトの名無しさん
垢版 |
2008/03/05(水) 01:24:51
MySQLにExcel (Office XP)からODBC接続すると、データが文字化けしてしまう。
DBにはUTF8で登録していて、クライアントはWinXP環境。
Connector/NET 接続だと問題無いんだけどね。

character-set系(skip-character-set-client-handshakeも)やら
MyODBCで、set names utf8 などの設定をしてみたんだが駄目。
どうしても(日本語に)化けてしまう。
ちなみに、登録してあるのは日本語では無い(ISO-8859の11辺りだったかな?)

なんだろ。。
256255
垢版 |
2008/03/05(水) 08:29:57
補足。
データは、元がISO-8859-11?をUTF-8に変換してDBに登録していて。
それをExcel(MSAccessでも同じ)に読み込んでみると、
ISO-8859-11?の0x80以上にあたる文字が日本語に化けて表示されてしまいます。

ちなみに、そのデータを直接MSAccessに登録して、ODBCでExcelから読んでみると
正しく表示されたんで。少なくとも、MyODBCかMySQLの設定の問題だと思うんだけど。
257デフォルトの名無しさん
垢版 |
2008/03/06(木) 18:58:48
MySQLのODBCコネクタには問題が多い
バージョンによってもかなり挙動が違う
258255
垢版 |
2008/03/07(金) 01:30:11
ありがとう。そうなんだ。
しょうがない、Accessでやっとくか。
2008/03/07(金) 07:58:09
======== my.ini
[client]
default-character-set=sjis
skip-character-set-client-handshake

[mysql]
default-character-set=sjis

[mysqld]
default-character-set=sjis
skip-character-set-client-handshake

これをサーバー側かクライアント側のどっちかに置くと
正しく認識/余計な変換されなくなるとか何とか書いてあるサイトをみたことがある
(サイトは忘れたしどのディレクトリに置くのかも忘れたので調べてくれ)
260255
垢版 |
2008/03/08(土) 00:44:02
>>259
なるほど。
mysqldの方には、skip-character-set-client-handshake を入れていたけど。
clientにも入れるのね。
試してみる、ありがとう。
261255
垢版 |
2008/03/11(火) 02:02:07
うーん。駄目でした。
扱う文字が非sjis系でPCが日本語OSというところで、ドライバが上手く
動かないんだろうね。あきらめ。
262デフォルトの名無しさん
垢版 |
2008/05/04(日) 00:16:52
とりあえず何かデータベース的なものを作ろうかと企んでるんですが
何かお勧めのものや準備しておくべきものとかってありますか?
2008/05/04(日) 08:41:13
>>262
Accessを買う
Accessの本を買う
2008/05/07(水) 13:03:55
>>262
Prolog
265デフォルトの名無しさん
垢版 |
2008/05/30(金) 19:25:22
紙と鉛筆
2008/05/31(土) 06:27:57
データベース的なもの
データベース的なもの
データベース的なもの
データベース的なもの
ISAMの勉強でもしやがれ
267デフォルトの名無しさん
垢版 |
2008/09/12(金) 09:58:52
DBやる前にファイリング検定でもうけやがれ
2008/10/14(火) 13:52:49
マイクロソフトのSQL Server2005の評価版をダウンロードしたんですが
インストーラのexeファイル(約955MB)にデジタル署名がされていないんです。
これってインストールしてもOK?
マイクロソフトがデジタル署名なしにリリースするってありえる??
2008/10/16(木) 21:13:01
基礎薬学医学のデータを蓄積して、ノートみたいに編集したり、必要時に検索できるようにするために、ちょうどいいデータベースソフトウェアなどありませんか?
化学構造式や写真、グラフ、文書をうまく管理して、学習に役立てられたらとおもってます。
また、論文や日記など、文書も管理・編集できるとよいです。
どなたか教えてもらえませんか?
2008/10/17(金) 13:00:00
>>269
有能な秘書
2008/10/17(金) 17:10:59
まぁ確かに・・・
272デフォルトの名無しさん
垢版 |
2008/10/18(土) 14:26:37
>>269
データベースっていうより資料を管理する手法を知りたいんだね。
資料を管理する手法をアプリケーションという形で提供されていればベストだよね。
それはソフトウエア板の「こんなソフト知りませんか?」スレで聞いたほうが良いね。

自分はエクセルを使っている。
ドキュメントは自分でテキストエディタで書く。そしてそこに引用されている図のための画像やらその他ファイルを一緒のフォルダに入れる。
このフォルダをエクセルにハイパーリンクで挿入して見出しの一覧としている。
この見出しをクリックすればそのフォルダが開き、そこには必要なもの一式が入っているというわけ。
で、検索はWindowsの検索を使用している。テキストファイルならこれで引っ掛けることができるからね。

これらをもっと統合的にやるアプリは俺もほしいと思う今日この頃。


273デフォルトの名無しさん
垢版 |
2008/10/18(土) 17:31:58
データベース自作するののアルゴリズムとか載ってる本やHPない?
Oracleを超えてやる。
274デフォルトの名無しさん
垢版 |
2008/10/18(土) 17:34:41
CGIでAccessみたいなことができますか?
275デフォルトの名無しさん
垢版 |
2008/10/18(土) 17:44:27
ACCESSの具体的などんなことをしたいのか書かないとわからん。
基本的にデータベースソフトとWebサーバーソフトでは機能も違うから
似たようなことができるとはおもえんけど。。そのAccessみたいなことって
具体的になに?
276デフォルトの名無しさん
垢版 |
2008/10/18(土) 17:50:09
データベースの定義とかレポート作成とか。
277デフォルトの名無しさん
垢版 |
2008/10/18(土) 19:08:43
できんことはないよ。>>276
やってみやあ。データベースの定義はどんな定義したいのかしらないけど
普通にテーブル作成とかAccessでいうビューの作成とかデータインポート・表示とか
できるよ。レポートも作成できるよ。HTML表示になるけど。がんばりゃあ。
278デフォルトの名無しさん
垢版 |
2008/10/22(水) 18:37:54
PostgreSQLでC言語の埋め込みSQLってのがありますけど,
"text"(不定長の文字列)として宣言されたフィールドを取り出す時って
どのように宣言すればいいんでしょうか?

EXEC SQL BEGIN DECLARE SECTION;
text hoge;
EXEC SQL END DECLARE SECTION;

とかやってみたけど怒られました.
サンプルに書いてあったように
VARCHAR hoge;
でも怒られるし.
そもそも'text'は標準外だからサイズは固定するしかない?
279デフォルトの名無しさん
垢版 |
2008/10/28(火) 21:08:45
>>272
ありがとうございます。そのとおりです。windows office one note2007を使用することに決めました。ありがとうございます。
2008/10/28(火) 21:42:35
>>274-275
CGI+ExtJSでなんとかなる
2008/10/28(火) 21:44:54
http://pc11.2ch.net/test/read.cgi/db/1220581676/5
:NAME IS NULL:2008/09/07(日) 05:32:37 ID:???
これはどうよ。

窓の杜 - 【REVIEW】「SQLite」のデータベースをGUIで操作できる高機能管理ソフト「PupSQLite」
http://www.forest.impress.co.jp/article/2008/09/04/pupsqlite.html
282デフォルトの名無しさん
垢版 |
2008/10/30(木) 03:15:28
DB超初心者からの質問です。
employeeテーブルがあるとします。
列はid(PK)とnameからなるとします。
社員を追加削除を繰り返しているとidも欠番が出たりすると思います。
欠番は別に良いのですが、社員を追加するときにidに、現在テーブルにないidを探してinsertしないとダメですよね?
このidをどうやって作るのですか?

IDENTITYプロパティーをつければシステムによっては自動インクリメント値ということを本で読みました。
でもシステムによっては・・じゃ、だめっすよね。

あとシステムが自動でつけたidを得る必要がある場合、どうするんでしょう。

結局自分でユニークな値を作るの?
2008/10/30(木) 03:44:55
>>282
> このidをどうやって作るのですか?
方法はいろいろとあると思います。
例)INSERT時の時刻、レコード件数、最大値

過去の最新のIDを格納するテーブルを作って、それを+1したものを新規ID
とするということを過去にやったことがあります。

この場合、同じ時刻の登録操作によってIDが重複する可能性があります。
当然INSERTは蹴られるわけですが、そのときはリトライすればよい。また
適正なロックをかけることにより、このINSERTの失敗をを避けることができます。

こういう面倒なことをしなくてもよいために、DBによってはユニークIDを生成する機能
を持っています。(現在のほとんどのDBは持っていると思います)

> あとシステムが自動でつけたidを得る必要がある場合、どうするんでしょう。
SELECTして見る。
2008/10/30(木) 05:48:40
>>283
ご回答ありがとうございます。

DBが用意してくれているユニークなIDを使うのがよさ気ですね。

もしemployeeのidが他のテーブルから外部キーに指定されている場合、
employeeに挿入したときにDBがつけてくれるidを使って他のテーブルにも挿入とかしたい場合もあると思いますが、
このときはselectでなんとか、その挿入したレコードを引っ張ってくるんですね。
その場合、テーブルをロックしてダーティーリードを防ぐ必要があるということかなぁ。

初心者なのでアホな事を言っているかもしれませんが。
2008/10/30(木) 06:14:33
>>284
INSERT INTOとSELECTサブクエリを使えばひとつのSQLステートメントで
idに値が入った行を作成することができます。

DBのユニークID生成機能にも欠点がありまして、データのExport/Importをするとき
少々厄介です。
2008/10/30(木) 08:03:14
>>285
なるほど。。ちょっと感動してしまいました。
サブクエリか。

経験者のお言葉はありがたい。本当にありがとうございました。
2008/10/30(木) 10:25:38
SELECTの条件はどうすればいいんだろう?
2008/11/01(土) 07:20:10
>>282-285
そういうのはふつうsequenceを使う
2008/11/02(日) 02:04:12
>>288
DBによって実装方法は異なる

Oracle.PostgreSQL sequence
MS-SQLServer IDENTIFYプロパティ
DB2 DENTIFYプロパティ+sequence
2008/11/04(火) 21:06:35
SQL:2003では2つが規格化されたね

Sequence Generators
Identity Columns
291デフォルトの名無しさん
垢版 |
2008/11/04(火) 22:00:32
質問なんですが次のテーブルがあるとします。
●社員名簿(emp_tbl)
INT emp_id
VCAHR() emp_name

●プロジェクトテーブル(proj_tbl)
INT proj_id
VCAHR() proj_name

※各プロジェクトは一人以上の社員が属します。また一人が複数のプロジェクトに属すこともあります。

●質問
社員がプロジェクトに属していることをどう表現するの?

案1:proj_tblに配列(?)カラムmemberを追加し、ここにint型の社員番号(emp_id)を格納していく。
案2:新しくproj_member_tblというテーブルをつくり、このテーブルにproj_id emp_idというカラムを用意して
proj_id │emp_id
───┼───
   1 .│1
   1 .│2
   2 .│1
   2 .│3
のように表現する。

教えてDBの偉い人
2008/11/04(火) 22:14:36
>>191
●プロジェクト配員テーブル
INT emp_id
INT proj_id
293191
垢版 |
2008/11/04(火) 22:16:48
名称はプロジェクトメンバーテーブルでもプロジェクトアサインテーブルでもいいです。
2008/11/04(火) 22:31:17
>>292さん、ありがとうございます!
295デフォルトの名無しさん
垢版 |
2008/12/16(火) 14:04:49
>>291とほとんど同じ状況なんだけど、加えて以下のような条件が加わる場合
どう設計すべき?

・社員はプロジェクト内での順序付けがある
・順序は恣意的に変更され得る
・プロジェクトPのN番目の社員といった読み取りが非常に多い
・プロジェクトに所属する社員の数に制限は無い(恐らく1000は超えない)
2008/12/19(金) 13:56:00
スタンドアロンDBシステムでお勧めなのはAccessでしょうか?
調べたらMSDEってのを見つけたんですけどクライアントサーバ型に適するって書いてあったので。
Oracleも多分クライアントサーバ型でしょうし。
スタンドアロンDBってあまりないんですかね?
2008/12/19(金) 14:47:13
つSQLite
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況