Movatterモバイル変換


[0]ホーム

URL:


はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

タグ

関連タグで絞り込む (3)

タグの絞り込みを解除

RDBに関するfuyu77のブックマーク (39)

  • データベースの正規化(第1〜第3正規形) - Wiz テックブログ

    こんにちは!バックエンドエンジニアの小室です。 先日、4月から入社予定の方に向け「データベース設計」について研修を行いました。 その中でもメイントピックであった「正規化」について改めてまとめてみました。 さっそくですが、データベースにおける正規化とは、 データベースで保持するデータの冗長性を排除し、 一貫性と効率性を確保するためのデータ形式へ変換することを指します。 一般的に第3正規形までで十分とされているため第3正規形までを取り上げます。 第1正規形 テーブルの行と列が交わる1つマスを「セル」と呼ぶことにします。 第1正規形の定義は「1つのセルには1つの値しか含まれない」です。 社員テーブル このように1つのセルに1つの値が含まれているとき、この値を「スカラ値」と言います。 社員テーブル(非正規形) 上のようなテーブルがあった場合、1人の社員は複数の子を養っているので、このように表現した

    データベースの正規化(第1〜第3正規形) - Wiz テックブログ
    • 外部キー制約でデッドロックに引っかかった話

      今回は仕事で直面したデッドロックのケースについて話したいと思います。 今回ハマったケース 今回ハマったケースは、複数プロダクトが共有するデータベースにあるデータを単体プロダクト専用のデータベースに持ち帰る開発を行っていたときでした。かなり簡略化しておりますが現状と分離後の理想型は下記の通りです。 現状 担当プロダクトと別プロダクトは同じ従業員データを参照している 従業員データの中には、担当プロダクト専用のカラムもあれば、別プロダクト専用の項目もある マイクロサービスがもつマスタ従業員データと旧従業員データがそれぞれ持つ名前カラムは同期している 理想系 担当プロダクトは新しい専用の従業員データをもち、専用のカラムはそのテーブルにもつ マイクロサービスがもつマスタ従業員データと各プロダクトの従業員データの名前カラムは同期させる この対応を段階的に進めている途中で、 担当プロダクトによる旧従業員

      外部キー制約でデッドロックに引っかかった話
      • ドキュメントDBかリレーショナルDBどっち使う? - Qiita

        { "id": "bbc16639-c082-47e8-b9c0-2d59579c7336", "first_name": "taro", "last_name": "momo", "lastLoggedIn": "2022-07-31T06:03:37+00:00", "email": "taro@example.com", "skills": [ {"name": "python"}, {"name": "golang"}, {"name": "英語"} ], "work_history": [ { "company": "ENECHANGE", "position": "Software Developer", "start_date": "2018-03-26", "end_date": null }, { "company": "Company Inc.", "position"

        ドキュメントDBかリレーショナルDBどっち使う? - Qiita
        • 外部キー制約が一切ないと何に困るのか?

          こんにちは。株式会社プラハCEOの松原です 注目を集めつつあるMySQLプラットフォームのPlanetScaleですが、外部キー制約が効かないという一見致命的に見える仕様について調べていたところ、こちらのDiscussionで興味深い回答が開発者から寄せられていたので日語でまとめ直してみようと思いました。 外部キー制約がなくてもそれほど困らない理由 今回の話はParentテーブル(id)とChildテーブル(id,parent_id)を前提に考えていきます そもそも外部キー制約は何に役立つのか 今回のDiscussionでは質問者から「外部キー制約がないとこういう時に困るよ!」と質問が寄せられています: 外部キー制約がないと参照先のデータが存在していることを保証できない! 外部キー制約がないとデータの重複を回避できない! それぞれの質問に対して回答者の回答は以下の通りです: 外部制約がな

          外部キー制約が一切ないと何に困るのか?
          • WEB+DB PRESS Vol.122に特集「Rustで実装!作って学ぶRDBMSのしくみ」を書いた - Write and Run

            KOBA789 です。 時が経つのは早いもので、気づけば2月末に無職になってから1ヶ月以上が過ぎていました。 その間に何をしていたのかといえば、表題の特集記事の執筆をしていました。 宣伝 このブログ記事は WEB+DB PRESS Vol.122 を読みたくなるためのものです。ぜひ買ってね。買ったらちゃんと読んでね。 作って学ぶRDBMS のしくみ、書きました。みんな大好きRust を使って解説してます https://t.co/nm526qQYnm— KOBA789 (@KOBA789) April 8, 2021 gihyo.jp 使用言語はRust だし、RDBMS はそもそも難しいトピックだしで結構重めの内容ですが、まずは読み物として寝転びながらでもいいので読んでみてほしいです。 ゴールデンウィーク*1の自由研究のお供にもどうぞ。たぶんちょうどいい分量なんじゃないかなぁ。ゴー

            WEB+DB PRESS Vol.122に特集「Rustで実装!作って学ぶRDBMSのしくみ」を書いた - Write and Run
            • カラム命名規則 - Qiita

              もちろん全部が全部、英語の基文法に合うわけではないのだけれども 開発チーム内でわかりやすいカラム名をつけるのが大事 定義そのままに難しい言葉を使ってみんながわからなくなるのはNG チーム内参考備忘録 日付DBに登録する、何かの行為が完了した時点の日付ということで、過去形で作成。 dateもdatetime型も前置詞はatにしておけばどちらも問題ない 例:created_at updated_at canceled_at expired_at ※ただしスケジュールの開始日時など、そのものの属性はstart_atと現在形を使うなど適宜変更 存在・所有 「何かをもっている」というboolean型のカラムを作成したいとき booleanのgetterだと補完するとisAAA()となるので、その後ろについてもヘンじゃない 過去分詞(基は過去形と似たようなもの、~ed)または形容詞を使う。現在

              カラム命名規則 - Qiita
              • データベースを遅くするための8つの方法

                はじめにTwitterのタイムラインを見ていたらバッチ系のプログラムで逐次コミットをやめて一括コミットにしたら爆速になったというのを見ました。当たり前でしょ、と思ったけど確かに知らなければ分からないよね、と思って主に初心者向けにRDBを扱うときの注意点をまとめてみました。 プログラミングテクニック的なところからテーブル設計くらいの範疇でDBチューニングとかは入ってないです。 自分の経験的にOracleをベースに書いていますが、他のRDBでも特に変わらないレベルの粒度だと思います。 大量の逐次コミットをする バッチアプリケーションでDBにデータをインサートすると言うのはかなり一般的な処理です。しかしデータ量が少ない時はともかく大量のインサートを逐次コミットで処理するとめちゃくちゃ遅くなります。数倍から十数倍遅くなることもあるので、10分程度のバッチが1時間越えに化けることもザラにあるので原

                データベースを遅くするための8つの方法
                • Home | DBML

                  Intro​DBML (Database Markup Language) is an open-source DSL language designed to define and documentdatabase schemas and structures.It is designed to besimple, consistent and highly-readable.It also comes with command-line tool and open-source module to help you convert betweenDBML andSQL. Table users { id integer username varchar role varcharcreated_at timestamp } Table posts { id integer

                  Home | DBML
                  • ダンプとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

                    簡単に書くよ ダンプ(英:dump)とは 見たい内容をファイルとかに「ぐへぇ(-O-)=3」と吐き出すこと です。 サクッと一言で説明すると、データをファイルや画面に 「ぐへぇ(-O-)=3」と出力する のが「ダンプ」です。 「○○ダンプ」や「○○をダンプする」といった使い方をします。 例えば「メモリダンプ」という用語があります。 メモリダンプの意味は「メモリの内容をファイルに出力すること」です。 「DBをダンプする」といった表現を使う場合もあります。 意味は「データベースの内容をファイルに出力するよ~」です。 「普通に『出力』で、いーじゃん」と思うかもしれませんけどね。 わざわざ「ダンプ」と言った場合は 手を加えずに、そのまま なニュアンスがあります。 加工しないで、そのまま、ぽいっちょと出すイメージです。 エラー内容やデバッグ中の値を出力するときは「ダンプ」と表現することが多いです。

                    ダンプとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
                    • 本当にあったやらかしDB設計①【R無しRDB】 - Qiita

                      Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? どうも、IT業界は4年目だけど開発はあんまりやったことがなかった人です 独学でDBとアプリ周りを勉強して最近開発現場へと行くことになったのですが、僕でもわかるようなやばいような事がかなりゴロゴロあって唖然とする毎日です(運が良いのか悪いのか…) 今日はそんな中の一つを紹介したいと思います R無しRDB これには当にびっくりしました どういうことかというと、外部キーをひとつも使ってなかったのです 分析系DBなのかと思いきや調べたり聞いたりして確認したところがっつり処理系、しかもコアな部分…w データの不整合を許せない部分なのに外部キーを

                      本当にあったやらかしDB設計①【R無しRDB】 - 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設計シリーズ一覧 - Qiita
                        • データベース設計の際に気をつけていること - 食べチョク開発者ブログ

                          皆さんこんにちは、エンジニアの西尾です。 新しい機能・サービスを開発する際、私は特にデータベース設計に気をつかいます。 データベースはシステムの土台です。 土台が不安定だと、その上に積み上げていくアプリケーションコードがいびつなものになり、つらい思いをします。 また、一度動き出してしまったシステムのデータベース設計を変えるのは、容易なことではありません。 データベース設計には”これだ!”という正解はないと思っています。 サービスの特徴、システムの性質、toB向け/toC向け、Readが多い・少ない、Writeが多い・少ない。 その他もろもろの背景により、データベース設計の仕方も変わってきます。 このテーブルは正規化していないから駄目だ、この設計はいわゆるポリモーフィック関連だから使ってはいけない、などということはありません。 アンチパターンと呼ばれるものも時と場合によっては正解になります。

                          データベース設計の際に気をつけていること - 食べチョク開発者ブログ
                          • 27. 論理削除とは何か?どのような解法があるのか? w/ twada | fukabori.fm

                            話したネタ 論理削除とはそもそも何か? 物理削除とは? なぜ、論理削除が生まれてくるのか?SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 理由1: 心理的なハードルの高さ、怖さがある 理由2: 削除したデータを検索対象に入れたい場合がある 理由3: ログとしての用途 理由4: 誤操作をすぐに戻したい アンチパターンとは何か? なぜ、論理削除はアンチパターンとして捉えられるのか? 全てのSQL文のWHERE句に削除フラグが必ず入る LIMIT 1などが蔓延していく 論理削除に気づくきっかけは何か? テーブル設計や、規約から気づく 論理削除というアンチパターンをどのように解いていくか? 論理削除という概念は世の中にまずなく、お客様は論理削除という言葉を使っていない 要件をどのように設計すればいいのか?ORMの論理削除プラグインはあまり良くない 状態遷移として捉える方法 Soft

                            27. 論理削除とは何か?どのような解法があるのか? w/ twada | fukabori.fm
                            • 削除フラグのはなし

                              押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)

                              削除フラグのはなし
                              • InfoQ: データの削除は非推奨

                                あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

                                InfoQ: データの削除は非推奨
                                • 論理削除が云々について - mike-neckのブログ

                                  今日朝イチで見たエントリーがこれでした。 qiita.com 論理削除の弊害は色々なところで言われているけど、僕の足りない頭で理解している所によると、二つの値しか持たない削除フラグ的なものはカーディナリティが云々で検索条件につけても性能上的にもよくないし、意味がないということです。 論理削除を完全に悪だとは言いませんが、論理削除を極力排したい人たちは、基的にデータそのものを削除する、もしくは論理削除というのはまだ要件的に未確定な要素が隠されていることを示すフラグであると考えているようです。 僕がITの業界でキャリアをスタートしてから2年目くらいに配置されたプロジェクトではT字型ER手法というのをベースにしたテーブル設計をしていて、そこでかなり鍛えられたわけですが、その時にはだいたいこのような原則を叩きこまれました。 テーブルに状態を持たせない 究極には機械が認識するキーと、人間にとって意

                                  論理削除が云々について - mike-neckのブログ
                                  • 論理削除フラグという名の死亡フラグ - @ledsun blog

                                    RDB - DELETE_FLAG を付ける前に確認したいこと。 - Qiita 論理削除が云々について - mike-neckのブログ Kazuho's Weblog: 論理削除はなぜ「筋が悪い」か 流行っているので乗っかります。 結論 「データ制約の強力さと集合としての表現力を捨てながら、RelationalDatabaseを使うのはなぜか?」 論理削除フラグのデメリット 大体三つあると考えています。 ユーザーの言葉でない データ制約の弱さ 集合として認識できない ユーザーの言葉でない 私の経験上は、ユーザーから「論理削除」という言葉を聞いたことがありません。 次のような要件は、聞いたことがあります 社員が退職(・転属)する (売掛金の回収を諦めて)売上を打ち消す 「お知らせメッセージ」を公開日がくるまで非表示にする 既読メッセージを表示しない 保存期間が過ぎたアンケート結果をオペレ

                                    論理削除フラグという名の死亡フラグ - @ledsun blog
                                    • #ronsakucasual DBの論理削除についてひたすら共有する 論理削除 Casual Talks #1 にいってきたまとめ - もぐめぽろぐ

                                      名前 とりあえず削除フラグ 目的 エンドユーザから見るとデータがないことにしたいけど、実際のデータは消したくない 削除したデータを検索したい データを消さずにログに残したい 誤った操作をなかったことにしたい、直ぐに元に戻したい アンチパターン 例えばis_deletedというカラムがtrueの場合は削除されているとみなす メリット update文ならデータが簡単に元に戻せる気がするのでなんとなく安心 -> 俺のupdate文でなんとかなる!! 起こること SELECTするときには常にWHERE句が追加で必要になり、コードが削除フラグだらけになる 全員テーブル設計に精通してるわけではないので、テーブルによって削除フラグの有無があったりした場合、認識の齟齬を生みやすい 例えばrubyでdefault_scopeを用いて、よかれとおもってコードレベルでデフォルトを変えたらバグがたくさん出てくる

                                      #ronsakucasual DBの論理削除についてひたすら共有する 論理削除 Casual Talks #1 にいってきたまとめ - もぐめぽろぐ
                                      • 論理削除の前に別テーブルに切り出せるかどうかを考えよう - Life is Really Short, Have Your Life!!

                                        めっちゃよくまとまっているので、大変助かりました。blog.mogmet.comt-wada氏の「とりあえず削除フラグはアカン」については、僕も全く同感です。論理削除をしなければならないビジネス上の理由がスッポリ抜け落ちている。「とりあえず削除フラグ立てて何かあれば戻せるようにすればいいンゴ」ってのは論理設計を放棄していると言い換えても良いし、「ユーザーの言葉ではない」という指摘も重要。こちらに書かれています。 ledsun.hatenablog.com じゃ、フラグやめてどーすんのって話。フラグを立てたくて立てる人はおらん(はず)。「削除フラグを追加するとSELECT時に常にWHERE句で削除フラグを引っ掛ける必要があるのでクソ」→「削除日や状態カラムを使おう」では解決にならん。t-wada氏の資料でも解決策で上げられてたけど「×」マークがついてます。下記に変わっても誰も嬉しくないと

                                        論理削除の前に別テーブルに切り出せるかどうかを考えよう - Life is Really Short, Have Your Life!!
                                        • DELETE_FLAG を付ける前に確認したいこと。 - Qiita

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

                                          DELETE_FLAG を付ける前に確認したいこと。 - Qiita

                                          お知らせ

                                          公式Twitter

                                          • @HatenaBookmark

                                            リリース、障害情報などのサービスのお知らせ

                                          • @hatebu

                                            最新の人気エントリーの配信

                                          処理を実行中です

                                          キーボードショートカット一覧

                                          j次のブックマーク

                                          k前のブックマーク

                                          lあとで読む

                                          eコメント一覧を開く

                                          oページを開く

                                          はてなブックマーク

                                          公式Twitter

                                          はてなのサービス

                                          • App Storeからダウンロード
                                          • Google Playで手に入れよう
                                          Copyright © 2005-2025Hatena. All Rights Reserved.
                                          設定を変更しましたx

                                          [8]ページ先頭

                                          ©2009-2025 Movatter.jp