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

このエントリーをはてなブックマークに追加
379片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/23(土) 00:05:22.07
MySQLでシフトJIS使ってたら何かまずい事がある?
380片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/01(金) 16:19:24.39
マニュアル見て自己解決
381デフォルトの名無しさん:2013/06/09(日) 18:36:09.01
webアプリを作る際にdbを使おうとしています.
javaからいじるときの書き方なんですが
例えばデータを読み取るsql文を発行する関数を作ったときには,
その関数内でStatementとかResultSetとかを閉じるものなのですか?
あと,データベースとの接続を閉じるのはいつにすればいいのでしょうか?
382デフォルトの名無しさん:2013/06/11(火) 17:01:57.73
おれはデータベースで何をしたらいいんですか?
383デフォルトの名無しさん:2013/07/03(水) NY:AN:NY.AN
履歴テーブルのスマートな実装手段は?
384デフォルトの名無しさん:2013/07/06(土) NY:AN:NY.AN
>>383
質問の意図が不明なんだが
385デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
>>383
変更時のタイムスタンプと変更内容を正規的に記述する
386デフォルトの名無しさん:2013/10/21(月) 11:37:39.16
Entity Frameworkで DbContext を使って開いたデータベースの
テーブルの個数が知りたいのですがどうやったら取得可能でしょうか
387デフォルトの名無しさん:2013/10/31(木) 14:29:14.79
Magic quotesはオフにしよう
http://codezine.jp/article/detail/2480?p=2

 本題からは外れますが、特別な理由がない限り、SQL文はプリペアードステートメントを使って実行するようにしてください。
これはSQLインジェクション攻撃に対する最も基本的な対策です。基本的なことにも関わらず、プリペアードステートメントが
あまり使われていないのには以下のような理由があるのではないかと、筆者は推測しています。
388デフォルトの名無しさん:2013/10/31(木) 14:30:17.40
SQLを文字列で作って実行するという直観的にわかりやすい方法が入門書等で紹介される。
初心者がそれをそのまま真似る。
SQLインジェクション攻撃に対して脆弱なウェブアプリが量産される。
PHPの開発者が「Magic quotes」というマジックを導入する。Magic quotesによって、ブラウザから送られた「O'Reilly」という文字列は、自動的に「O\'Reilly」に変換されようになる(脆弱性回避)。
この「O\'Reilly」という文字列は、プリペアードステートメントでは使えない(余計なバックスラッシュが入ってしまう)。
プリペアードステートメントは使われなくなる。
389デフォルトの名無しさん:2013/10/31(木) 14:31:20.44
 データを勝手に書き換えてしまうMagic quotesがデフォルトで有効になっているのは困ったことです。
PHPをインストールしたら、設定ファイル(php.ini)を探して、「magic_quotes_gpc = Off」としておきましょう。
390デフォルトの名無しさん:2013/10/31(木) 14:37:08.30
>>387
5.3 2009-06-30 <- magic_quotes_gpcがobsoleteになる
5.4 2012-03-01 <- magic_quotes_gpcが削除される
5.5 2013-07-20 <- いまここ
391デフォルトの名無しさん:2013/10/31(木) 21:36:37.02
NetWareサーバでbtrieve使ってたころは
インジェクションとかなんとか悩む必要なかったんだよな
392デフォルトの名無しさん:2014/02/02(日) 00:31:08.57
自分で競馬データベースや競馬新聞を作りたいんだが
どんなプログラミング言語を学習すればいいですか?
競馬を通してプログラミングを勉強すれば楽しいと思うし、
仕事にも役立つとなれば一石二鳥。

データーソースは外部の物を利用。
393デフォルトの名無しさん:2014/02/02(日) 01:23:31.88
Haskelです。
394デフォルトの名無しさん:2014/02/04(火) 00:07:50.54
>>392
c++、Haskell、Ocaml、Scala
c++ならc++cmsを使ってCMSサイトを作れる
HaskellならYesod、ScalaならLift
速度重視ならc++、バグを含まないように作りたいならHaskell
性能と実績ならJVM上にあるScalaがベターだよ
395デフォルトの名無しさん:2014/02/04(火) 00:19:49.83
普通にPHPでええやん
何が不満なの?
396デフォルトの名無しさん:2014/02/11(火) 11:02:05.62
PHPが不満
397デフォルトの名無しさん:2014/02/11(火) 14:39:35.01
想定顧客数すら見えないんだからPHPかRuby/Railsじゃね
398デフォルトの名無しさん:2014/06/25(水) 00:08:06.39 ID:hOEFw5aV
たとえば、1つの製品を作成するのに掛る部品リストのテーブルが以下だった場合。

ID,製品,部品名称,部品個数

グリッドに表示させる時や出力させる時は横に並んでほしい場合は結構あるかと思います。

製品,部品1名称,部品1個数,部品2名称,部品2個数,部品3名称,部品3個数〜〜

こういう時は一般的どうするのがスマートなんでしょうか?
たとえばAccessでグリッドに表示させたい場合、もしくはcsv、Excelで出力したい場合など。
399デフォルトの名無しさん:2014/06/25(水) 00:27:43.30 ID:n7E3MpSB
>>398
正規化とビュー
400デフォルトの名無しさん:2014/06/25(水) 03:12:58.04 ID:h7VZRPKH
行列変換・クロス表については、ミックの本にも書いてある

達人に学ぶ SQL徹底指南書、2012、ミック
セルコ信者の著者が、より簡単にパズルチックに解説する
内容は集合論、3値論理など

Webにも解説あるよ
ttp://codezine.jp/article/detail/751
401デフォルトの名無しさん:2014/07/22(火) 04:18:35.67 ID:lQzj9+dU
C# + Connector/Net + MySQL でデータベースの勉強し始めたんですが、Connector/Netのライブラリを把握しきれないうえに、データベースプログラミングで確実に身に付けるべき作法みたいなものがよく分かりません。
オススメの入門書を教えていただけないでしょうか?
402デフォルトの名無しさん:2014/07/22(火) 04:26:53.03 ID:gLVnM0Vt
403デフォルトの名無しさん:2014/11/06(木) 21:15:47.38 ID:chc+9Rz7
みんなの意見を聞かせてください
データベースを設計しているんだけど、
例えば、定食マスタがあるとしてそれの内容を持ってるテーブルが別にあるとする
A定食に対して、おひたし・ごはん・味噌汁・豚肉炒め・サラダ等
んで、あるとき豚インフルで豚肉が提供できなくなったとして、豚肉炒めから牛肉炒めに変更しA+定食にしたとする(値段等そのたの問題は抜きとする)
その場合、定食の構成としては1品しか変わらないわけだけど、それぞれに同じ構成を持つとデータだけ増えていくよね
例だと品数は少ないけど、定食の数も数百種類、それぞれの構成も何十種類となった場合、
基本はAの構成だけど、バージョンが上がって一部構成が変更になった場合、
どういう風にデータベースを設計したらいいと思いますか?
やはり別のものとして丸々構成を持った方が良いのでしょうか?
説明が下手ですみません。どうかよろしくお願いします。
404デフォルトの名無しさん:2014/11/06(木) 21:40:39.96 ID:6jrte84K
>>403
数百や数千なら個別に作るけどな
定食なら日本全国のを集めても数千も無いだろうしwww
405デフォルトの名無しさん:2014/11/07(金) 07:02:18.20 ID:QVJdWUqC
>>403

BOMとか部品表とかで色々調べるとよいかも。
テーブルの使い方次第だけど、定食が1日に100百食作る予定だから、
あらかじめ材料を何キロ買っておく、みたいな使い方をするなら、
12月1日からのA定食の構成要素をはこれとこれを含むという
適用範囲を持ったテーブルになると思う。

まぁ、テーブルの使い方によって設計が変わるはず
406デフォルトの名無しさん:2015/02/14(土) 22:52:28.31 ID:WlrY+q6b
C# で、System.Data.SQLite を利用しているのですが、
データベースファイル内のテーブルの数、ないしテーブル一覧を取得するにはどうすれば良いでしょうか?
407デフォルトの名無しさん:2015/02/15(日) 09:08:49.39 ID:lVCsB9EK
.schama
408デフォルトの名無しさん:2015/02/15(日) 09:31:44.71 ID:twE3uD4t
長いことIT業界にいるが、
いまだに排他制御が完全なシステムを
作ってるのに出会ったことがない・・・

俺自身、どのレベルで何をどうしたら
完璧になるのか良く分かってないしな。
409デフォルトの名無しさん:2015/02/15(日) 09:59:39.37 ID:Mh0LkIrH
DBアクセスのたびにDB全体を完全ロックすれば完璧だよ!
410デフォルトの名無しさん:2015/02/15(日) 11:36:22.84 ID:24ypMGtK
DB用に専用線を引いて、通信を暗号化すれば完璧だよ
411デフォルトの名無しさん:2015/02/15(日) 11:59:28.83 ID:iz0G57zc
入力時点でシリアル化しとけば排他制御いらんな。
412デフォルトの名無しさん:2015/02/15(日) 12:18:07.77 ID:n2M7TY52
>>408
汎用機のオンラインシステムは完璧な排他制御を求められたんだがな。
413デフォルトの名無しさん:2015/02/15(日) 13:31:12.71 ID:SSlwb3yD
RDBなら本来、アプリケーション側で排他制御なんかしないよな。
414デフォルトの名無しさん:2015/02/15(日) 13:41:39.84 ID:Mh0LkIrH
DBにとって必要な整合性と、アプリにとって必要な整合性は違うのだよ
415デフォルトの名無しさん:2015/02/15(日) 16:14:21.62 ID:bX6frV1s
HTTPとの相性最悪
416デフォルトの名無しさん:2015/02/15(日) 17:18:02.87 ID:62ZsaQxV
素人乙
417デフォルトの名無しさん:2015/02/15(日) 18:14:23.37 ID:n2M7TY52
>>413
データベースが勝手に排他制御をしてくれるとでも?
418デフォルトの名無しさん:2015/02/15(日) 19:03:52.03 ID:SSlwb3yD
当たり前だろ。そうじゃなきゃDBMSの意味がない。
で、普通は明示的な排他制御などやらずに適切なトランザクション分離レベルを宣言するんだが、
わかってない奴が設計するとそこが適切じゃなくて、「この処理の前にこっちのテーブルをロックしなきゃ」
なんてことになる。
419デフォルトの名無しさん:2015/02/15(日) 19:06:51.51 ID:Mh0LkIrH
レベル宣言だけで上手くいくもんか
420デフォルトの名無しさん:2015/02/15(日) 19:10:05.48 ID:twE3uD4t
>>418
テーブルに最終更新時間とか持たせて、
表示させた後にDBに書き込むときに、
最終更新時間が取得したときと違ってたら
エラーを表示するとかなんたらって、
ズラズラとコードを書いたりしないか?
421デフォルトの名無しさん:2015/02/15(日) 19:57:11.17 ID:n2M7TY52
>>418
分離レベルだけで勝手にやってくれるとでも?
422デフォルトの名無しさん:2015/02/15(日) 19:59:36.27 ID:SSlwb3yD
>>420
ロングトランザクションのために仕方なく読み出しと書き込みを分けるなら、たしかにそういう、
いわゆる楽観的ロックを使う場面もあるね。
その場合は両者のトランザクションは独立したものとして、つまり読み出しがない書き込み
トランザクションにも正しく対応できるよう設計すればいい。
もちろんこれも「排他」制御ではない。
423デフォルトの名無しさん:2015/02/15(日) 20:43:21.86 ID:n2M7TY52
>>422
そういう同時実行時の不整合を起こさない仕組みも含めたのを排他制御とは言わないのかい?
424デフォルトの名無しさん:2015/02/27(金) 10:28:05.63 ID:+9m5pWTV
>>419
>>414が良い事言ってる。と思ったら414=419かよw
すくなくとも「DBにとって必要な整合性」は保障されるだろ
>>418が「アプリにとって必要な整合性」をどう考えてるのかは知らんが
>>422あたりを見るに、それは>>418にとっては排他処理ではないらしいから考慮外なんだろう

理想は分離レベルの指定だけですべて済ませればいいんだが
なかなかそう言うわけにはいかないのが現実
425デフォルトの名無しさん:2015/02/27(金) 12:40:39.68 ID:+8onCSYI
426デフォルトの名無しさん:2015/03/10(火) 00:30:56.39 ID:4vRVmU8Z
VB ScriptのADOで
Do

Loop
の中に
rs.movenext書き忘れるとなにがおこるの?
427デフォルトの名無しさん:2015/03/10(火) 22:06:12.52 ID:umpnsyO6
>>426
同じ行を処理し続けるんじゃないの?
428デフォルトの名無しさん
rs.delete してればそのうち終わるんじゃね?