タグ

qiitaとdatabaseに関するxai1981のブックマーク (17)

  • WebアプリからOracleに接続するconnectionStrings(tnsname.ora不要) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    WebアプリからOracleに接続するconnectionStrings(tnsname.ora不要) - Qiita
  • MySQLの外部キー制約RESTRICT,CASCADE,SET NULL,NO ACTIONの違いは? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    MySQLの外部キー制約RESTRICT,CASCADE,SET NULL,NO ACTIONの違いは? - Qiita
  • DB未経験の新米エンジニアが読んだ書籍を時系列順に紹介 - Qiita

    僕はDB未経験でサーバーサイドのエンジニアになりました。 SELECT文を覚えるところから始まりましたが、今では(保守/運用側ではなく)開発者側としてのDBの知識と技術は少しは身についたと思っています そこで、未経験の状態から現在に至るまでに読んだ書籍を時系列順に紹介したいと思います。 僕のように未経験でスタートした方の参考になれば幸いです。 尚、自分の環境はSQLServerですが、最後に紹介するのマイクロソフトのドキュメント以外は、ベンダに関係なく勉強になる内容だと思います。 当に未経験時に最初に読んだSQL 第2版 ゼロからはじめるデータベース操作 https://amzn.to/2MOO1E0 内容紹介(amazonより抜粋) プログラミング学習シリーズ『SQL ゼロからはじめるデータベース操作』は、「データベースやSQLがはじめて」という初心者を対象に、プロのデータベー

    DB未経験の新米エンジニアが読んだ書籍を時系列順に紹介 - Qiita
  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
  • 実行計画??統計情報??って人へ - Qiita

    はじめに 新人研修でSQLがカリキュラムに組み込まれている場合、ほとんどがSQLの構文のみをスコープとしていて、RDBMSのアーキテクチャまで踏み込むことは少ないと思います。 記事では、SELECT、INSERT、UPDATE、DELETEしか教わってないけど、現場に配属されてたら「実行計画を取ってゴニョゴニョ」「あ~統計情報が古いから取り直してゴニョゴニョ」みたいな依頼をされた人へ向けて、超簡単に説明します。 ※RDBMSの世界は奥が深いのでここでは概要のみに留めます。 RDBMSの基的なアーキテクチャ RDBを使った開発では、ほとんどの現場でOracleSQL Server、MySQLDB2、PostgreSQLあたりが利用されています。これらのDBのアーキテクチャは、細かな違いこそあれど基的なところは同じだったりします。 今回は、「実行計画??統計情報??って人へ」というこ

    実行計画??統計情報??って人へ - Qiita
  • 【5分でできる】MySQL/MariaDBをリバースエンジニアリングして、ER図を作成する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    【5分でできる】MySQL/MariaDBをリバースエンジニアリングして、ER図を作成する - Qiita
  • PostgreSQLのbackup, restore方法まとめ - Qiita

    (1) PostgreSQLのダンプツールを利用したバックアップ pg_dumpコマンド DBを運用しながらでも使えるbackupコマンド 中ではトランザクションブロック内でSELECT文を発行し、取得したデータを出力形式に合わせて整形した腕標準出力に出力 するらしい。 pg_dumpの出力形式 スクリプト形式(デフォルト) アーカイブ形式 が選択できる。 スクリプト形式 スクリプト形式の出力は、リストアに必要なSQL文の羅列が出る。 ので、psqlコマンドでリストアする。 スクリプト形式の場合はプレーンテキストなので、リストアの際にエラーが出たら、中を見れるという利点がある。 アーカイブ形式 バイナリの形で出力される。リストアはpsqlコマンドでなくpg_restoreコマンドで行う。 アーカイブ形式の利点は、 **「指定したtableのみを選択してリストアできる」**ことらしい。 また

    PostgreSQLのbackup, restore方法まとめ - Qiita
  • MySQL Workbench ER図作成 - Qiita

    一部分のみの関係を表示したい MySQL Modelでテーブルと関係をきちんと定義してあれば、一部分のみのER図は簡単に作成することが出来ます。 先にテーブルを作成し関係も定義します。 [Model] > [Add Diagram] (CTRL+T) で新しいダイアグラムを作ります。(MySQL Modelから[Add Diagram]をクリックしてもよい) 左ペインのTablesから表示したいテーブルをドラッグアンドドロップします。 複数のテーブルを配置すれば、既に定義してあるRelationshipにより必要なラインが引かれます。 現在のタブで表示されているテーブルは左ペインのテーブルに●が付いて表しています。 逆に表示したくテーブルは、テーブルを右クリックして、[Remove Figure 'テーブル名'] で非表示に出来ます(Deleteを選択すると定義から削除されてしまうので注意

    MySQL Workbench ER図作成 - Qiita
  • 変更履歴を持つテーブルの設計 - Qiita

    ある日のできごと 少し前、「ブログの記事のようなものを、履歴を残しつつ編集できるようにするにはどのようなテーブル設計が良いか?」と尋ねられたことがありました. その時, まず思いついた(というか見聞きしたことがある方法)のは以下の様な2通りの方法だった. 記事テーブルにバージョン番号を持たせる方法 記事テーブルとは別に, だいたい同じ構造の履歴テーブルを持つ方法 こられの手法のメリット・デメリットについて, すこし考えていきたいと思います. その1 記事テーブルにバージョン番号を持たせる方法 概要 この方法では, 記事テーブルは一つだけ用意し, 更新される度に新しいレコードを追加していきます. 主キーはidとなるが, これはサロゲートキーで, 当の主キーは「記事グループid + verison」の複合主キーとなっています. 記事の最終更新日時は, 最新Versionのレコードのinser

    変更履歴を持つテーブルの設計 - Qiita
  • DELETE_FLAG を付ける前に確認したいこと。 - Qiita

    DELETE_FLAG という思考停止フラグ DELETE_FLAG という boolean の列が DB 設計でよく話題になります。 論理削除という言葉で上手に論理武装し、スキを見せるとすぐに入れたがる人がおり、 一方でそれにつよく反対する人もいます。 自分の経験としては、広義の論理削除はありえると思いますが、実現方法が DELETE_FLAG だとなった時、それはあまり考えてないでなんとなくパターンとして盛り込んでる場合が多いと感じます。 ただし、設計に唯一の答えは無いので、もしかしたらそれが妥当な設計である場合があるかもしれません。 今回は「DELETE フラグがなぜダメなのか?」などという話をするつもりも、アンチパターンだと断言するつもりもありません。 問題は、仕様をきちんと把握すると、「最適な設計は DELETE_FLAG ではない」という場合が有って、その場合は、その最適な設計

    DELETE_FLAG を付ける前に確認したいこと。 - Qiita
  • DB スキーマ設計のガイドライン - Qiita

    この記事は、2011年頃に書かれた Yii framework サイトの wiki 記事 Guidelines for good schema design の翻訳です。 もともとは Yii 1.1 のために書かれたものですが、Yii 2, Yii 3 にもそのまま適用可能ですし、もっと広く、アクティブ・レコードのような ORM 一般に通用する内容であろうと思われます。つまり、以下の文章中の "Yii" という名前は、あなたが使っている任意のフレームワークの名前に置き換えてもよい筈です。 はじめに 事実上すべての Yii アプリケーションはデータベースの上に構築されます。Yii はデータベースの取り扱いにおいて非常に柔軟ではありますが、以下に述べる設計上の選択をすれば、そうでない場合に比べて、ものごとがより一層都合良く進みます。 最初に、ごく大まかに言うと、Yii アプリケーションではアク

    DB スキーマ設計のガイドライン - Qiita
  • データベースオブジェクトの命名規約 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    データベースオブジェクトの命名規約 - Qiita
  • DB論理設計のノウハウ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? DB設計の概要を簡単におさらいした後、論理設計について主にまとめていきます。 DB設計の全体手順のおさらい DB設計は、大きく論理設計と物理設計に分けられます。 論理設計 概念スキーマを定義します。 エンティティの抽出 エンティティの定義 正規化 ER図の作成 物理設計 論理設計の結果を受けて、データを格納するための物理的な領域や格納方法を決めます。 テーブル定義 インデックス定義 ハードウェアのサイジング ストレージの冗長構成決定 ファイルの物理配置決定 テーブルの構成要素のおさらい 行と列 行(レコード):横のデータの組 列(カラム

    DB論理設計のノウハウ - Qiita
  • MySQLのUNIONの便利な使い道 - Qiita

    INSERT INTO news VALUES ('政治ニュース1', 'seiji', '2012-01-21'), ('政治ニュース2', 'seiji', '2012-01-22'), ('政治ニュース3', 'seiji', '2012-01-23'), ('経済ニュース1', 'keizai', '2012-01-21'), ('経済ニュース2', 'keizai', '2012-01-22'), ('経済ニュース3', 'keizai', '2012-01-23'), ('エンタメニュース1', 'entame', '2012-01-21'), ('エンタメニュース2', 'entame', '2012-01-22'), ('エンタメニュース3', 'entame', '2012-01-23'), ('コラム1', 'koramu', '2012-01-23'), ('コラム2

    MySQLのUNIONの便利な使い道 - Qiita
  • PDOでATTR_EMULATE_PREPARESを適切に設定してないとSQLインジェクションの原因になるかも(MySQL編) - Qiita

    <?php $dsn = 'mysql:dbname=test;host=localhost'; $user = 'root'; $password = ''; try{ $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $sql = 'select blog_id, blog_name from blogs where blog_name like ?'; $stmt = $pdo->prepare($sql); $stmt->execute(array('%my%')); }catch (PDOException $e){

    PDOでATTR_EMULATE_PREPARESを適切に設定してないとSQLインジェクションの原因になるかも(MySQL編) - Qiita
  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
  • MySQL初級者を脱するために勉強してること -INDEX編- - Qiita

    欲しいデータを取得するくらいにはSQL書けるし、システム要件を満たすくらいにはテーブル設計は出来る、そんな僕が中級者を脱するために勉強している内容を備忘録的に書き綴ります。 予約語は大文字 その他は小文字で記述しています。 あー、インデックスね、はいはい。作ると参照が速くなるやつでしょ? そのくらいの知識でしたが、INDEXを適切に運用する上で原理など理解していないと、意味の無いINDEXを作ってしまう事があるので勉強しました。 INDEXとは 今回は多くのRDBMSでサポートされているB-TreeINDEXについて解説します。 B-Treeは以下のような形式でデータを保持しています。 ヘッダブロックでは大まかな値の範囲を保持しており、ブランチブロックではさらに細かい範囲を保持 リーフブロックでは実際の値と行への物理的な位置を保持しています。 INDEXが作成されている事で並び替えが速くな

    MySQL初級者を脱するために勉強してること -INDEX編- - Qiita
  • 1