語れ
前スレ
DB設計を語るスレ 9
http://echo.2ch.net/test/read.cgi/db/1444733172/
DB設計を語るスレ 10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/05/22(月) 16:38:31.52ID:???
553NAME IS NULL
2020/02/12(水) 20:49:06.79ID:08I8SsIH いまどきマスターとかトランザクションとか言っとるジジイは放置でええねん
554NAME IS NULL
2020/02/12(水) 21:05:19.11ID:vYRA4Gos ?
555NAME IS NULL
2020/02/12(水) 21:23:59.53ID:??? 業務なら普通に使うぞ
556NAME IS NULL
2020/02/12(水) 22:35:55.16ID:??? DB設計の経験が浅いプログラマーは
マスターとトランザクションデータの区別がまともにできないから気をつけろ
30オーバーのやつも含めてチーム全員が
マスターのことをトランザクションと呼んでて震撼したことがある
マスターとトランザクションデータの区別がまともにできないから気をつけろ
30オーバーのやつも含めてチーム全員が
マスターのことをトランザクションと呼んでて震撼したことがある
557質問者
2020/02/12(水) 23:42:53.31ID:lI+lS+0+558NAME IS NULL
2020/02/13(木) 00:02:14.97ID:??? いや、そういうことじゃなくて
もっと基本的な所から勉強した方が良い
話を聞いている限り、テーブル設計がちゃんとできていない
もっと基本的な所から勉強した方が良い
話を聞いている限り、テーブル設計がちゃんとできていない
559NAME IS NULL
2020/02/13(木) 00:03:42.63ID:??? マスターの履歴とマスターにに対する変更イベントを記録(トランザクション)は微妙に違う
560質問者
2020/02/13(木) 00:17:07.26ID:IbwPir4s561NAME IS NULL
2020/02/13(木) 17:28:06.14ID:dDuhYxxE >>557
コボラーのおじいちゃんの概念なw騙されんなw現代においてはなんも意味ないでw
コボラーのおじいちゃんの概念なw騙されんなw現代においてはなんも意味ないでw
562NAME IS NULL
2020/02/13(木) 21:03:05.33ID:??? ついてこれないなら黙ってて
563NAME IS NULL
2020/02/13(木) 21:16:52.08ID:??? >>560
「業務別データベース設計のためのデータモデリング入門」渡辺幸三
「業務別データベース設計のためのデータモデリング入門」渡辺幸三
564NAME IS NULL
2020/02/14(金) 00:46:37.23ID:+QGsVRcr565NAME IS NULL
2020/02/14(金) 00:52:53.18ID:??? 分からない事があれば、ここで聞くといいよ
賑わいはないけど真面目にレスが返る板だから
賑わいはないけど真面目にレスが返る板だから
566NAME IS NULL
2020/02/19(水) 21:02:42.95ID:dncf6ZkK >>565
おまえが気持ち悪い事ゆうから誰も居らんくなったやないか
おまえが気持ち悪い事ゆうから誰も居らんくなったやないか
567NAME IS NULL
2020/02/19(水) 22:45:15.97ID:??? 褒めないでくださいよ、照れるな
568NAME IS NULL
2020/02/20(木) 02:03:55.39ID:7o2dB+yg 連番管理する必要がある場合、以下のどちらのほうほうがよいでしょうか?
https://ideone.com/oOlh4z
中間にINSERTされる場合があります。
SELECTする時は漏れなく連番の先頭から最後まで一括で取得することになります。
https://ideone.com/oOlh4z
中間にINSERTされる場合があります。
SELECTする時は漏れなく連番の先頭から最後まで一括で取得することになります。
569NAME IS NULL
2020/02/20(木) 03:27:31.79ID:??? 前後の関係を知りたいのが主なら1だけど、汎用的には2
570NAME IS NULL
2020/02/20(木) 04:23:11.02ID:??? >>568
件数や更新頻度、データの使われ方による
一括SELECT時のパフォーマンスが重要なら連番順のインデックスを作れるようにする
例えば有理数で管理して1/5, 2/5, 3/5と並んでるところに
データを挿入したければ3/10, 5/10
それで2/10, 3/10, 4/10, 5/10, 6/10の並びになる
他には101000, 102000, 103000のような飛び番で管理して
番号が埋まってきたら番号を振り直す方法もある
挿入時のパフォーマンスが重要なら書いてるようなLinked List的な方法で良いと思う
previousを知る必要がなければ2の方法で十分だがrootが一発でわかるデータは必要
件数や更新頻度、データの使われ方による
一括SELECT時のパフォーマンスが重要なら連番順のインデックスを作れるようにする
例えば有理数で管理して1/5, 2/5, 3/5と並んでるところに
データを挿入したければ3/10, 5/10
それで2/10, 3/10, 4/10, 5/10, 6/10の並びになる
他には101000, 102000, 103000のような飛び番で管理して
番号が埋まってきたら番号を振り直す方法もある
挿入時のパフォーマンスが重要なら書いてるようなLinked List的な方法で良いと思う
previousを知る必要がなければ2の方法で十分だがrootが一発でわかるデータは必要
571NAME IS NULL
2020/02/20(木) 18:03:03.56ID:??? INSERTする頻度がそれほどでないなら
順番を決められるような非整数の項目用意して
通常は整数値を入れておき、
挿入時に前後の項目の中間値を入れるなんてどうかな
順番を決められるような非整数の項目用意して
通常は整数値を入れておき、
挿入時に前後の項目の中間値を入れるなんてどうかな
572NAME IS NULL
2020/02/20(木) 19:50:02.82ID:??? >SELECTする時は漏れなく連番の先頭から最後まで一括で取得
取得する順番はどうでもいいのか?
取得する順番はどうでもいいのか?
573NAME IS NULL
2020/02/20(木) 20:55:47.42ID:???574NAME IS NULL
2020/02/20(木) 21:26:21.35ID:???575NAME IS NULL
2020/02/20(木) 21:53:23.57ID:??? 用途によるわな。
二項関係を全部保持する設計だと参照は爆速。
二項関係を全部保持する設計だと参照は爆速。
576NAME IS NULL
2020/02/20(木) 22:07:16.22ID:??? あとnullはやめて-1や0にしといたほうが吉
577NAME IS NULL
2020/02/21(金) 05:29:35.02ID:???578NAME IS NULL
2020/02/21(金) 20:03:46.42ID:???579NAME IS NULL
2020/04/28(火) 18:41:13.11ID:??? フラグ系のカラム名付け質問
例えば商品マスタ(ID,JANコード、名称、・・・)があって
こいつらにセール対象、まとめ買い対象、みたいなフラグカラム追加したいときってどういうカラム名がいいんでしょ?
セール対象テーブル追加してそっちみろは無しでお願いします
is_Bargain、is_MatomeGay(英語わからんので適当)とかにする?
例えば商品マスタ(ID,JANコード、名称、・・・)があって
こいつらにセール対象、まとめ買い対象、みたいなフラグカラム追加したいときってどういうカラム名がいいんでしょ?
セール対象テーブル追加してそっちみろは無しでお願いします
is_Bargain、is_MatomeGay(英語わからんので適当)とかにする?
580NAME IS NULL
2020/04/28(火) 21:37:21.40ID:??? まとめゲイw
命名規約次第だけど個人的にはon_saleやfor_bulkみたいな名前をつける
is/has縛りなら商品に対応する単語をくっつけたほうがいいかも
セール対象商品 => is_bargain_item
まとめ買い対象商品 => is_matomegai_item
item.is_bargainだと英語的には超微妙
item.is_for_bargainならわりと自然だけどis_for_bargainというカラム名は微妙
item.is_bargain_itemも冗長だけど冠詞がないだけでまあ自然でis_for_bargainに比べるとカラム名としてはマシ
命名規約次第だけど個人的にはon_saleやfor_bulkみたいな名前をつける
is/has縛りなら商品に対応する単語をくっつけたほうがいいかも
セール対象商品 => is_bargain_item
まとめ買い対象商品 => is_matomegai_item
item.is_bargainだと英語的には超微妙
item.is_for_bargainならわりと自然だけどis_for_bargainというカラム名は微妙
item.is_bargain_itemも冗長だけど冠詞がないだけでまあ自然でis_for_bargainに比べるとカラム名としてはマシ
581NAME IS NULL
2020/04/28(火) 21:42:09.42ID:??? ただ現実問題としてis_bargainみたいなboolフラグで管理可能なの?
アフィサイトみたいに表示管理だけでいいなら
それでも問題ないかもしれないけど、実際にキャンペーンやる会社なら
どの期間、どのキャンペーンの対象で、どういう適用条件かみたいなのが最低限必要だからboolじゃ破綻しそう
アフィサイトみたいに表示管理だけでいいなら
それでも問題ないかもしれないけど、実際にキャンペーンやる会社なら
どの期間、どのキャンペーンの対象で、どういう適用条件かみたいなのが最低限必要だからboolじゃ破綻しそう
582NAME IS NULL
2020/04/28(火) 23:30:35.91ID:??? ありがとうございます
そうなんですよね。英語的にはマシかもだけどカラム名として何だか微妙になるんですよね
現状はフラグ1、フラグ2、..みたいな暗黒状態かつ命名規約何それなので、それよりはマシなのですが
実際は簡単なフラグ管理だけで良いので、バーゲン期間とかは考慮しなくて大丈夫です
良かろうと思って一般的なサンプルでっち上げると余計な検討点が出てきてダメですね
私の悩みを10年前に通過している列海王的な方がいたら、引き続きナイスな命名案をよろしくお願いします
そうなんですよね。英語的にはマシかもだけどカラム名として何だか微妙になるんですよね
現状はフラグ1、フラグ2、..みたいな暗黒状態かつ命名規約何それなので、それよりはマシなのですが
実際は簡単なフラグ管理だけで良いので、バーゲン期間とかは考慮しなくて大丈夫です
良かろうと思って一般的なサンプルでっち上げると余計な検討点が出てきてダメですね
私の悩みを10年前に通過している列海王的な方がいたら、引き続きナイスな命名案をよろしくお願いします
583NAME IS NULL
2020/04/29(水) 00:45:02.07ID:??? github検索してみたが
on_saleやis_on_saleで命名してるのはそこそこ見つかる
on_saleやis_on_saleで命名してるのはそこそこ見つかる
584NAME IS NULL
2020/05/02(土) 23:39:27.57ID:???585NAME IS NULL
2020/05/03(日) 04:57:59.36ID:??? どうせそれを見るのも日本人だろ
ネイティブが違和感を感じるかどうかより、日本人が納得するかどうかだと思うぞ
DBMSにもよるだろうが、日本語環境以外での動作を考えないなら日本語カラム名でもいいと思う
ネイティブが違和感を感じるかどうかより、日本人が納得するかどうかだと思うぞ
DBMSにもよるだろうが、日本語環境以外での動作を考えないなら日本語カラム名でもいいと思う
586NAME IS NULL
2020/05/04(月) 17:11:14.86ID:??? 以前はfoo_flag, bar_flagみたいな命名はダサいから可能な限り避けようとしてたが
最近は一貫性が取れてるならis_fooやis_barよりもベターなケースが多いと思うようになってきた
組織の英語力やDBリテラシー次第
最近は一貫性が取れてるならis_fooやis_barよりもベターなケースが多いと思うようになってきた
組織の英語力やDBリテラシー次第
587NAME IS NULL
2020/05/04(月) 22:00:17.67ID:??? うちのアカンDB
boo(0,1)とるカラムがxx_kbn
int(0~9)とるカラムがxx_flag
せめて逆じゃね?
boo(0,1)とるカラムがxx_kbn
int(0~9)とるカラムがxx_flag
せめて逆じゃね?
588NAME IS NULL
2020/05/04(月) 23:04:59.53ID:??? 逆ならよかったね〜
589NAME IS NULL
2020/05/10(日) 15:13:42.60ID:DCNb3jN3 普通はデータベースって蓄積するもので、
普通は削除フラグにとどめて、よほどのことがないとdeleteするようなことってないと思いますが、
deleteしまくることによって何か問題が起きたりするのでしょうか?
あと消したあとも、ゴミ箱にいれたHDDの中身みたいに実は復旧可能だったりしますか?
問い合わせのログみたいなのを一定期間後に完全削除するのを考えてます。
普通は削除フラグにとどめて、よほどのことがないとdeleteするようなことってないと思いますが、
deleteしまくることによって何か問題が起きたりするのでしょうか?
あと消したあとも、ゴミ箱にいれたHDDの中身みたいに実は復旧可能だったりしますか?
問い合わせのログみたいなのを一定期間後に完全削除するのを考えてます。
590NAME IS NULL
2020/05/10(日) 15:37:54.86ID:??? >>589
削除するかどうかは要件次第
不要になったら一旦アーカイブに移動させて
その後、事前に決めた一定期間を過ぎたらメディアにバックアップとって削除する
メディアも事前に決めたメディア用の一定期間を過ぎたら廃棄する
そういうデータライフサイクルを要件定義時に決めて運用にのせるのが普通
復元できるかどうかはバックアップやトランザクションログの残し方による
削除するかどうかは要件次第
不要になったら一旦アーカイブに移動させて
その後、事前に決めた一定期間を過ぎたらメディアにバックアップとって削除する
メディアも事前に決めたメディア用の一定期間を過ぎたら廃棄する
そういうデータライフサイクルを要件定義時に決めて運用にのせるのが普通
復元できるかどうかはバックアップやトランザクションログの残し方による
591NAME IS NULL
2020/05/19(火) 13:31:17.65ID:FzKBKTy1 同じ設計で別の用途に使用したいテーブルがある場合、テーブル名をどうしていますか?
例えばブログの場合、
article → 記事テーブル
category → カテゴリーテーブル
article_cateogry →記事のカテゴリーテーブル
と設計することがあると思います。
ここに「特集」という別のコンテンツを追加したい場合、
special → 特集テーブル
special_category → 特集カテゴリーテーブル
special_special__cateogry →特集の特集カテゴリーテーブル
とするのは変です。
記事と特集はテーブル設計が異なるので、同じテーブルでまとめられません。
しかし、「カテゴリー」テーブルの設計は同じです。同名でも意味は通じます。
categoryではなく、type(種類)とかclass(クラス)とか別名にして対応するのでしょうか?
例えばブログの場合、
article → 記事テーブル
category → カテゴリーテーブル
article_cateogry →記事のカテゴリーテーブル
と設計することがあると思います。
ここに「特集」という別のコンテンツを追加したい場合、
special → 特集テーブル
special_category → 特集カテゴリーテーブル
special_special__cateogry →特集の特集カテゴリーテーブル
とするのは変です。
記事と特集はテーブル設計が異なるので、同じテーブルでまとめられません。
しかし、「カテゴリー」テーブルの設計は同じです。同名でも意味は通じます。
categoryではなく、type(種類)とかclass(クラス)とか別名にして対応するのでしょうか?
592NAME IS NULL
2020/05/19(火) 15:41:38.69ID:??? >>591
「特集」は特集記事であって記事の特化したものではないの?
ある一つのカテゴリーを選択した場合に
それに合致する記事も特集も拾いたいケースがあるなら
カテゴリーテーブルは一つにしたほうがよくて
特集テーブルも記事テーブルと1 ― 0..1 の関係で作るか
特集テーブルと記事テーブルを汎化したテーブルを検討する
「特集」は特集記事であって記事の特化したものではないの?
ある一つのカテゴリーを選択した場合に
それに合致する記事も特集も拾いたいケースがあるなら
カテゴリーテーブルは一つにしたほうがよくて
特集テーブルも記事テーブルと1 ― 0..1 の関係で作るか
特集テーブルと記事テーブルを汎化したテーブルを検討する
593NAME IS NULL
2020/05/19(火) 16:47:06.21ID:FzKBKTy1 >>592
「特集」という例がわかりづらいなら、掲示板(bbs)でもいいです。
掲示板でも「カテゴリー」って分類は必要ですよね?
でも、記事のカテゴリーと掲示板のカテゴリーは内容そのものが違います。
たとえカラムが同じであっても、用途が異なるテーブルを共有し使うのはよくありません。
だからcategoryではない別名が必要なのですが、その命名が難しいという相談です。
「特集」という例がわかりづらいなら、掲示板(bbs)でもいいです。
掲示板でも「カテゴリー」って分類は必要ですよね?
でも、記事のカテゴリーと掲示板のカテゴリーは内容そのものが違います。
たとえカラムが同じであっても、用途が異なるテーブルを共有し使うのはよくありません。
だからcategoryではない別名が必要なのですが、その命名が難しいという相談です。
594NAME IS NULL
2020/05/19(火) 20:13:30.72ID:??? この程度のことを聞ける人が会社にいないんだろうかw
595NAME IS NULL
2020/05/19(火) 20:32:01.95ID:??? 記事カテゴリーと掲示板カテゴリーでなんの不都合がある?
596NAME IS NULL
2020/05/19(火) 20:45:57.38ID:???597NAME IS NULL
2020/05/19(火) 21:13:48.53ID:??? 命名がうまくいかないケースの7~8割は
モデリングがうまくできてないケース
モデリングがうまくできてないケース
598NAME IS NULL
2020/05/19(火) 21:52:13.20ID:??? 悩みは理解できるがmany-to-manyで管理が必要なカテゴリーテーブルが
1つのスキーマに複数必要になるケースってそうそうないよね
1つのスキーマに複数必要になるケースってそうそうないよね
599NAME IS NULL
2020/05/19(火) 21:58:57.66ID:??? そもそもそんな場合はDB分けるし
600NAME IS NULL
2020/05/19(火) 22:14:36.92ID:??? >>591
そもそも special_category という名称が意味不明
そもそも special_category という名称が意味不明
601NAME IS NULL
2020/05/19(火) 23:39:26.48ID:???602NAME IS NULL
2020/05/19(火) 23:45:42.87ID:??? とにかく的確な答えがない=よくある設計の悩みじゃないってことですかね
categoryじゃなくても、menuとかclassとかgenreとか似たような用途に使える
名前があるし、わざわざカテゴリーって呼び方にこだわらなくてもいいかもしれません
一般的な質問でない場合、上記のように解釈して妥協します。
categoryじゃなくても、menuとかclassとかgenreとか似たような用途に使える
名前があるし、わざわざカテゴリーって呼び方にこだわらなくてもいいかもしれません
一般的な質問でない場合、上記のように解釈して妥協します。
603NAME IS NULL
2020/05/20(水) 02:26:52.88ID:??? 力技で命名するより先に設計見直したほうがいいって言われてるのが理解できないのかな
記事カテゴリー
掲示板カテゴリー
お知らせカテゴリー
特集カテゴリー
クチコミカテゴリー
求人カテゴリー
普通のお客さんならキレるよ
記事カテゴリー
掲示板カテゴリー
お知らせカテゴリー
特集カテゴリー
クチコミカテゴリー
求人カテゴリー
普通のお客さんならキレるよ
604NAME IS NULL
2020/05/20(水) 09:07:47.41ID:??? >>603
お客さんに提供してないのでキレられることはないですが、
設計を見直すということは、既存のテーブルの名前を変えろということですか?
何度も記載していますが、最初はただの「カテゴリー」として作っていたものを
後から「記事カテゴリー」と別名にするのはリスク高いと思います。
だから力技で命名するしかないのではないか?と思う次第です。
「いや、後から用途が増えるなら変えるべきだろ」
というなら私の認識が間違っているので変更しますが、
確信的なレスがないので納得できないでいます。
お客さんに提供してないのでキレられることはないですが、
設計を見直すということは、既存のテーブルの名前を変えろということですか?
何度も記載していますが、最初はただの「カテゴリー」として作っていたものを
後から「記事カテゴリー」と別名にするのはリスク高いと思います。
だから力技で命名するしかないのではないか?と思う次第です。
「いや、後から用途が増えるなら変えるべきだろ」
というなら私の認識が間違っているので変更しますが、
確信的なレスがないので納得できないでいます。
605NAME IS NULL
2020/05/20(水) 09:15:02.49ID:??? 自分の説明の仕方が悪いと思うので、もう一度整理します。
(1)初期運用段階
article → 記事テーブル
category → カテゴリーテーブル
article_cateogry →記事のカテゴリーテーブル
(2)「カテゴリー付きの掲示板が必要」という要件が発生した
bbs → 掲示板テーブル
bbs_category → 掲示板カテゴリーテーブル
bbs_bbs__cateogry →掲示板の掲示板カテゴリーテーブル
[悩み]こういうテーブル設計を追加するのはおかしいと思う。
一般的にはどうするべきですか?
(補足)>>603さんの案:既存のテーブル名を変更
article_category → 記事カテゴリーテーブルに変更
article_article_cateogry →記事の記事カテゴリーテーブル
[悩み]途中で既存のテーブル名を変更するのはリスクが高くないか
(1)初期運用段階
article → 記事テーブル
category → カテゴリーテーブル
article_cateogry →記事のカテゴリーテーブル
(2)「カテゴリー付きの掲示板が必要」という要件が発生した
bbs → 掲示板テーブル
bbs_category → 掲示板カテゴリーテーブル
bbs_bbs__cateogry →掲示板の掲示板カテゴリーテーブル
[悩み]こういうテーブル設計を追加するのはおかしいと思う。
一般的にはどうするべきですか?
(補足)>>603さんの案:既存のテーブル名を変更
article_category → 記事カテゴリーテーブルに変更
article_article_cateogry →記事の記事カテゴリーテーブル
[悩み]途中で既存のテーブル名を変更するのはリスクが高くないか
606NAME IS NULL
2020/05/20(水) 12:39:47.56ID:??? いやいやw
>>603のは普通は全部一つのカテゴリーテーブルでまとめられるだとって話なんだけど・・・
CMSで管理するサイトコンテンツのカテゴリーでしょ?
記事に付けるタグと求人に付けるタグが共通でも問題ないし
どちらか一方にしか使えないタグが必要でも
いちいち別テーブルにしなくてもまとめて管理できるでしょ
力技の命名ってのは関連テーブルを示すprefix/infix/suffixを決めて
それを該当スキーマ内で一貫して使うみたいな規約で逃げるという意味
既存のテーブル名を変更するのがリスクが高いかどうかはアプリの作り次第だが
CMSならリスクは知れてる
>>603のは普通は全部一つのカテゴリーテーブルでまとめられるだとって話なんだけど・・・
CMSで管理するサイトコンテンツのカテゴリーでしょ?
記事に付けるタグと求人に付けるタグが共通でも問題ないし
どちらか一方にしか使えないタグが必要でも
いちいち別テーブルにしなくてもまとめて管理できるでしょ
力技の命名ってのは関連テーブルを示すprefix/infix/suffixを決めて
それを該当スキーマ内で一貫して使うみたいな規約で逃げるという意味
既存のテーブル名を変更するのがリスクが高いかどうかはアプリの作り次第だが
CMSならリスクは知れてる
607NAME IS NULL
2020/05/20(水) 17:44:51.41ID:??? >>606
もしかしてCMS=既存のCMSを指してますか?
そうでなくて、自作の話なのですが・・。
それにひとつのカテゴリーテーブルで、>>603みたいなのをまとめるのは無理です。
例えば以下のようなカテゴリーが必要だとします。
記事 |全般、Web制作、システム開発、データベス
掲示板|パソコン、ニュース、エンタメ
お知らせ|サービス、イベント、運営会社
記事コンテンツで、掲示板で使用する「パソコン」というカテゴリーはいらないし、
お知らせコンテンツにある、運営会社というカテゴリーもおかしいです。
カテゴリーテーブル(category)を以下のカラム構成にして
id(pk)|target|name|
1 |article|全般
2 |bbs |パソコン
SELECT * FROM category WHERE target='article'
というSQLを実行すれば、「記事だけのカテゴリーを抽出」することは可能です。
しかし、こんな設計は明らかにアンチパターンですよね?
JOINするときはWHEREとセットになるし、SQLコストも増大します。
通常は要件に伴ったテーブルを用意するはずです。
それともアンチパターンとか関係なく、上記のようにするのが普通なのでしょうか?
あるいは、カラム設計自体も違うというのであれば、正しい設計を教えていただきたいです。
もしかしてCMS=既存のCMSを指してますか?
そうでなくて、自作の話なのですが・・。
それにひとつのカテゴリーテーブルで、>>603みたいなのをまとめるのは無理です。
例えば以下のようなカテゴリーが必要だとします。
記事 |全般、Web制作、システム開発、データベス
掲示板|パソコン、ニュース、エンタメ
お知らせ|サービス、イベント、運営会社
記事コンテンツで、掲示板で使用する「パソコン」というカテゴリーはいらないし、
お知らせコンテンツにある、運営会社というカテゴリーもおかしいです。
カテゴリーテーブル(category)を以下のカラム構成にして
id(pk)|target|name|
1 |article|全般
2 |bbs |パソコン
SELECT * FROM category WHERE target='article'
というSQLを実行すれば、「記事だけのカテゴリーを抽出」することは可能です。
しかし、こんな設計は明らかにアンチパターンですよね?
JOINするときはWHEREとセットになるし、SQLコストも増大します。
通常は要件に伴ったテーブルを用意するはずです。
それともアンチパターンとか関係なく、上記のようにするのが普通なのでしょうか?
あるいは、カラム設計自体も違うというのであれば、正しい設計を教えていただきたいです。
608NAME IS NULL
2020/05/20(水) 18:55:01.20ID:??? >>607
細かいところを置いておくとそのテーブルイメージの考え方はアンチパターンではないよ
同じ情報を管理するのに全部別テーブルにするほうがアンチパターン
JOINするときWHEREとセットになるんじゃなく
記事/掲示板/お知らせみたいな要素を指すIDが結合条件になる
仮にWHEREで指定することになったところで
カテゴリーテーブルの件数なんてめちゃくちゃ少ないし
きちんとインデックス付けてればSQLコストが増大とかしないから
細かいところを置いておくとそのテーブルイメージの考え方はアンチパターンではないよ
同じ情報を管理するのに全部別テーブルにするほうがアンチパターン
JOINするときWHEREとセットになるんじゃなく
記事/掲示板/お知らせみたいな要素を指すIDが結合条件になる
仮にWHEREで指定することになったところで
カテゴリーテーブルの件数なんてめちゃくちゃ少ないし
きちんとインデックス付けてればSQLコストが増大とかしないから
609NAME IS NULL
2020/05/20(水) 18:57:14.65ID:??? はじめからそういう要件を想定できなかった以上、きれいな設計にしたいなら作り直せ
610NAME IS NULL
2020/05/20(水) 19:00:20.45ID:???611NAME IS NULL
2020/05/20(水) 19:04:47.61ID:??? この態度で回答するやついたら神だな
俺は絶対スルー案件だわw
俺は絶対スルー案件だわw
612NAME IS NULL
2020/05/20(水) 19:28:50.40ID:??? >>607
上でもそうだったけど、命名がおかしい気がする
掲示板のところにある「パソコン」「ニュース」「エンタメ」というのは
5ちゃんねるで言う板のこと? (たとえばこのスレはデータベース板だけど)
記事・掲示板・お知らせの関係がわかると答えやすくなると思う
(例えば掲示板と記事は一対多の関係など)
上でもそうだったけど、命名がおかしい気がする
掲示板のところにある「パソコン」「ニュース」「エンタメ」というのは
5ちゃんねるで言う板のこと? (たとえばこのスレはデータベース板だけど)
記事・掲示板・お知らせの関係がわかると答えやすくなると思う
(例えば掲示板と記事は一対多の関係など)
613NAME IS NULL
2020/05/20(水) 19:48:43.41ID:??? なにがどうアンチパターンなのかも判断できないのに
こいつのアンチパターンだからダメって脅迫概念はどっからきてるんだ
こいつのアンチパターンだからダメって脅迫概念はどっからきてるんだ
614NAME IS NULL
2020/05/20(水) 20:15:27.77ID:???615NAME IS NULL
2020/05/20(水) 20:25:38.47ID:???616NAME IS NULL
2020/05/20(水) 20:26:36.28ID:???617NAME IS NULL
2020/05/20(水) 21:04:01.67ID:???618NAME IS NULL
2020/05/20(水) 21:17:12.37ID:??? >>615
>既存テーブルのカテゴリーを使用する箇所すべてで、SQLを組み直すんですよ?
>単純にリスクが増大すると思うんですよね。手間云々だけじゃなくて。
自分のまずい設計を正当化するためにリスクが増大するんですって言ってるんじゃなく
微妙な設計になることのデメリットと既存の部分を触ることによるデメリットを
天秤に掛けた上の判断なら別にいいと思うよ
CMSでカテゴリーテーブルを使用する箇所が
あっちこっちに散在してるようならそもそもの設計がまずいとは思うけどね
>既存テーブルのカテゴリーを使用する箇所すべてで、SQLを組み直すんですよ?
>単純にリスクが増大すると思うんですよね。手間云々だけじゃなくて。
自分のまずい設計を正当化するためにリスクが増大するんですって言ってるんじゃなく
微妙な設計になることのデメリットと既存の部分を触ることによるデメリットを
天秤に掛けた上の判断なら別にいいと思うよ
CMSでカテゴリーテーブルを使用する箇所が
あっちこっちに散在してるようならそもそもの設計がまずいとは思うけどね
619NAME IS NULL
2020/05/20(水) 21:26:58.14ID:??? >>617
要求されています。
>>618
618さんの解釈では、
「すでにカテゴリーテーブルが有るのに同じようなものを用意する必要はない」
ということですよね?それがまずい設計だと、
私は「ひとつのテーブルですべてのカテゴリーを管理する」
ことがまずい設計だと思っているんです。
なぜまずいと思うかというと、アンチパターンだったり、正規化できていなかったりと
一般的に悪いと言われるテーブル設計を採用しろと言われているからです。
618さんの言う「カテゴリーはカテゴリーなんだから、複数あるのはおかしい」
という主張は理解できます。
しかし、ひとつのテーブルに用途違いのデータが入ることの正当性が
私には理解できないので、618さんの主張が正しいと思えないんです。
煽っているのではなく、主張を正しいとする論拠がわからないんです。
要求されています。
>>618
618さんの解釈では、
「すでにカテゴリーテーブルが有るのに同じようなものを用意する必要はない」
ということですよね?それがまずい設計だと、
私は「ひとつのテーブルですべてのカテゴリーを管理する」
ことがまずい設計だと思っているんです。
なぜまずいと思うかというと、アンチパターンだったり、正規化できていなかったりと
一般的に悪いと言われるテーブル設計を採用しろと言われているからです。
618さんの言う「カテゴリーはカテゴリーなんだから、複数あるのはおかしい」
という主張は理解できます。
しかし、ひとつのテーブルに用途違いのデータが入ることの正当性が
私には理解できないので、618さんの主張が正しいと思えないんです。
煽っているのではなく、主張を正しいとする論拠がわからないんです。
620NAME IS NULL
2020/05/20(水) 21:32:41.33ID:qpD3w8BM 意識低い系の自分はその場合カテゴリのテーブルは一つのままカテゴリの種類ごとにidの範囲を変えて運用してしまうな
記事カテゴリは10000〜19999、特集カテゴリは20000〜29999みたいな
記事カテゴリは10000〜19999、特集カテゴリは20000〜29999みたいな
621NAME IS NULL
2020/05/20(水) 21:34:11.67ID:??? >>612 は?
622NAME IS NULL
2020/05/20(水) 21:49:45.25ID:???623NAME IS NULL
2020/05/20(水) 22:07:40.68ID:??? >>622
掲示板と記事は一対多なの?
掲示板と記事は一対多なの?
624NAME IS NULL
2020/05/20(水) 22:25:53.64ID:??? >>619
>「すでにカテゴリーテーブルが有るのに同じようなものを用意する必要はない」ということですよね?
違う、そういう考え方じゃない
既存のしがらみは一旦忘れて同じエンティティなのか異なるエンティティなのかを考える
その答えは要件によって変わるんだが
今のところ異なるエンティティとして管理すべき要件は見当たらない
正規化できないというのは君の思い込み
コンテンツの種別ごとにカテゴリーテーブルとその中間テーブルを作らなきゃいけないのは
SQLアンチパターンの9章にある”Antipattern: Clone Tables or Columns”
>「すでにカテゴリーテーブルが有るのに同じようなものを用意する必要はない」ということですよね?
違う、そういう考え方じゃない
既存のしがらみは一旦忘れて同じエンティティなのか異なるエンティティなのかを考える
その答えは要件によって変わるんだが
今のところ異なるエンティティとして管理すべき要件は見当たらない
正規化できないというのは君の思い込み
コンテンツの種別ごとにカテゴリーテーブルとその中間テーブルを作らなきゃいけないのは
SQLアンチパターンの9章にある”Antipattern: Clone Tables or Columns”
625NAME IS NULL
2020/05/20(水) 22:39:11.58ID:??? CMSならコンテンツを管理する単位が記事だろうと掲示板だろうと
共通に扱える仕組みを用意した上で個別に必要な拡張が施せるようにする
記事に特化した記事管理システムなら
そこに掲示板管理システムをそのまま増設するのは悪手で
DB含めてシステムを分けるか再構築してまともなCMSにする
共通に扱える仕組みを用意した上で個別に必要な拡張が施せるようにする
記事に特化した記事管理システムなら
そこに掲示板管理システムをそのまま増設するのは悪手で
DB含めてシステムを分けるか再構築してまともなCMSにする
626NAME IS NULL
2020/05/20(水) 23:15:00.78ID:???627NAME IS NULL
2020/05/20(水) 23:35:03.93ID:???628NAME IS NULL
2020/05/20(水) 23:41:09.52ID:??? 突然伸びててビビったズラ
テレワークは終わりですよ
テレワークは終わりですよ
629NAME IS NULL
2020/05/21(木) 01:00:34.53ID:??? お前の言うカテゴリーとは何なのかを詳細に詰めないとベストな答えなんか出ないわ
テーブル名とかまあどうでもいいわな
掲示板カテゴリーと記事カテゴリーが別だとするなら別テーブル作ればいいし
同じだが使用箇所が違うだけだと思えば一つで良い
テーブル名とかまあどうでもいいわな
掲示板カテゴリーと記事カテゴリーが別だとするなら別テーブル作ればいいし
同じだが使用箇所が違うだけだと思えば一つで良い
630NAME IS NULL
2020/05/21(木) 06:52:31.63ID:??? 命名規約があるなら結果変なテーブル名になっても仕方ない
それがいやならテーブル名を連番にでもすればいい
それがいやならテーブル名を連番にでもすればいい
631NAME IS NULL
2020/05/21(木) 11:31:44.45ID:??? >要件毎にテーブルを作るやり方ではなく
要件という言葉を理解してないw
無知なのにイキってる感じがQiitaっぽいな
要件という言葉を理解してないw
無知なのにイキってる感じがQiitaっぽいな
632NAME IS NULL
2020/05/21(木) 17:40:13.28ID:??? カテゴリと内容の関係ならカテゴリに記事と特集を示すフィールド入れれば解決ずら
その程度の変更もできないプログラムだったらプログラム側の設計も見直したほうがいいら
その程度の変更もできないプログラムだったらプログラム側の設計も見直したほうがいいら
633NAME IS NULL
2020/05/21(木) 18:10:57.18ID:??? 話題変わるけど10万円給付のオンライン申請で多重申請とかで問題出て停止しているようだけど
これってDB設計が糞だと思うんだけどどうだと思いますか?
これってDB設計が糞だと思うんだけどどうだと思いますか?
634NAME IS NULL
2020/05/21(木) 18:20:21.15ID:??? システム設計の根本から間違えている
635NAME IS NULL
2020/05/21(木) 18:57:20.13ID:??? 多重申請を許容するかどうかは要件次第なので
多重申請ができるからといってDB設計が糞とは言い切れない
DV被害者対策や郵送申請もあるので
後続の業務はもともと多重申請がある前提で設計しておく必要がある
実際のところは短期間での開発を要求されたから
普通なら必要になる画面や機能を削った結果
多重申請を許容する仕様にせざるを得なかったんだろうな
多重申請ができるからといってDB設計が糞とは言い切れない
DV被害者対策や郵送申請もあるので
後続の業務はもともと多重申請がある前提で設計しておく必要がある
実際のところは短期間での開発を要求されたから
普通なら必要になる画面や機能を削った結果
多重申請を許容する仕様にせざるを得なかったんだろうな
636NAME IS NULL
2020/05/21(木) 19:02:38.66ID:??? ググったら10人以上の世帯は複数回申請しないといけないからってのと
間違った内容で申請した場合に後から正しい内容で申請できるようにするために
多重申請ができる仕様にしてるらしい
付け焼き刃だし仕方ないかもね
郵送に一本化しといたほうが効率的だった可能性もある
間違った内容で申請した場合に後から正しい内容で申請できるようにするために
多重申請ができる仕様にしてるらしい
付け焼き刃だし仕方ないかもね
郵送に一本化しといたほうが効率的だった可能性もある
637NAME IS NULL
2020/05/21(木) 19:29:00.39ID:??? 今回の目的はギョウムカイゼンじゃなくて感染防止だから……
単に用紙の持ち込みをオンライン化しただけで
持ち込まれたデータのチェック・管理はすべて人力
分かりやすいシンプルな良いシステム
単に用紙の持ち込みをオンライン化しただけで
持ち込まれたデータのチェック・管理はすべて人力
分かりやすいシンプルな良いシステム
638NAME IS NULL
2020/05/21(木) 19:49:25.34ID:??? >新型コロナウイルスの感染拡大に伴う現金10万円の一律給付を受けるためのオンライン申請について、
>東京 調布市と福生市は入力された情報の確認に時間がかかり給付が遅れるおそれがあるとして、受け
>付けや手続きを停止しました。オンライン申請を巡っては、同じような対応をとる自治体が各地で相次い
>でいます。
https://www3.nhk.or.jp/news/html/20200521/k10012439151000.html
>東京 調布市と福生市は入力された情報の確認に時間がかかり給付が遅れるおそれがあるとして、受け
>付けや手続きを停止しました。オンライン申請を巡っては、同じような対応をとる自治体が各地で相次い
>でいます。
https://www3.nhk.or.jp/news/html/20200521/k10012439151000.html
639NAME IS NULL
2020/05/21(木) 21:19:53.32ID:C+Ki3nmV オンラインで申請すると郵送よりも処理に時間がかかる上、
郵送分の処理も妨害して遅くするのでやめてほしいそうだ。
郵送分の処理も妨害して遅くするのでやめてほしいそうだ。
640NAME IS NULL
2020/05/22(金) 15:56:07.78ID:??? >>607
自分が俄で視点が近いからか微妙に解る気がするんだけどこの設計がEAVじゃないかって気になるって事であってる?
けどこれって>624の「同じエンティティなのか異なるエンティティなのかを考える」が全てで、
カテゴリーっていう同じエンティティなんだから同じテーブルに纏めたってEAVにはならないのではって事だと思うが
このテーブルに[targer:person_name, name:田中]みたいなレコード登録したらEAVだと思うけど
自分が俄で視点が近いからか微妙に解る気がするんだけどこの設計がEAVじゃないかって気になるって事であってる?
けどこれって>624の「同じエンティティなのか異なるエンティティなのかを考える」が全てで、
カテゴリーっていう同じエンティティなんだから同じテーブルに纏めたってEAVにはならないのではって事だと思うが
このテーブルに[targer:person_name, name:田中]みたいなレコード登録したらEAVだと思うけど
641NAME IS NULL
2020/05/22(金) 23:25:58.05ID:??? EAVかどうかなんて考え方次第
カテゴリーテーブルがサブカテゴリーにたいするEAVだって考え方もある
EAVだからアンチパターンでダメだって考えが間違ってる
アンチパターンと言われているものの、何がどうダメなのかちゃんと考えないと
カテゴリーテーブルがサブカテゴリーにたいするEAVだって考え方もある
EAVだからアンチパターンでダメだって考えが間違ってる
アンチパターンと言われているものの、何がどうダメなのかちゃんと考えないと
642NAME IS NULL
2020/05/23(土) 00:18:19.59ID:??? AmazonみたいなECサイトで商品カテゴリと顧客カテゴリを管理するとしたらほぼ確実に別エンティティ
Youtubeの動画に付けるタグとGmailのメールにつけるタグも1テーブルで管理することはまずない
(RDB使ってない可能性のほうが高いけど)
QiitaがもしQ&A掲示板を始めたり技術イベントの告知・集客サービスを始めて
各スレッドや各イベントにタグ付けできる機能を実装するようなケースは
既存の記事向けのタグと同じエンティティとして管理する可能性が高い
Youtubeの動画に付けるタグとGmailのメールにつけるタグも1テーブルで管理することはまずない
(RDB使ってない可能性のほうが高いけど)
QiitaがもしQ&A掲示板を始めたり技術イベントの告知・集客サービスを始めて
各スレッドや各イベントにタグ付けできる機能を実装するようなケースは
既存の記事向けのタグと同じエンティティとして管理する可能性が高い
643NAME IS NULL
2020/05/23(土) 09:51:07.58ID:??? あきらかに回答でもなく雑談(笑)
644NAME IS NULL
2020/05/23(土) 11:30:26.74ID:??? 雑談と言うより単なる妄想
645NAME IS NULL
2020/05/23(土) 12:34:48.23ID:??? 雑談っちゃ雑談だけど抽象化思考が苦手なやつが多いみたいだから具体的なインスタンスを示してみたんだよ
ケースバイケースとか考え方次第で済ませてその判断基準を何も提示しないのはゼロ回答に等しいからさ
ケースバイケースとか考え方次第で済ませてその判断基準を何も提示しないのはゼロ回答に等しいからさ
646NAME IS NULL
2020/05/23(土) 12:59:28.25ID:??? ここは、モノローグスレ
647NAME IS NULL
2020/05/23(土) 14:37:43.95ID:??? 適当な妄想垂れ流すぐらいならゼロ回答のほうがマシ
648NAME IS NULL
2020/05/23(土) 16:07:15.63ID:??? 事例に対する個人の判断結果を示してるだけで、肝心の判断基準を示してない件
649NAME IS NULL
2020/05/23(土) 18:14:02.96ID:??? >>648
それは「考え方次第」
それは「考え方次第」
650NAME IS NULL
2020/05/23(土) 20:48:19.09ID:??? でも語るスレだからいいのか
651NAME IS NULL
2020/05/23(土) 21:52:49.37ID:??? >>650
それは「ケースバイケース」
それは「ケースバイケース」
652NAME IS NULL
2020/05/27(水) 07:37:48.25ID:??? 質問です
csv ファイルを提供されて
数量データが4000なのですが
少数第二位までという4000.00の意味の
400000というデータで提供されます
毎回エクセルで100で割ってからインポートします
また、顧客コードが10桁で
数字の羅列が醜いので
12-3456-7890とハイフンの追加も行ってから
インポートします
毎月の事なのですが
この数量データ割算と、顧客データハイフンを
いちいちExcelで処理せずに
インポート時やインポート後にうまく処理する方法は無いでしょうか?
csv ファイルを提供されて
数量データが4000なのですが
少数第二位までという4000.00の意味の
400000というデータで提供されます
毎回エクセルで100で割ってからインポートします
また、顧客コードが10桁で
数字の羅列が醜いので
12-3456-7890とハイフンの追加も行ってから
インポートします
毎月の事なのですが
この数量データ割算と、顧客データハイフンを
いちいちExcelで処理せずに
インポート時やインポート後にうまく処理する方法は無いでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【芸能】中居正広氏の代理人が音声データを再要求「開示できるはず」 第三委の“ゼロ回答”受け ★2 [jinjin★]
- 【テレビ】小泉進次郎農相 備蓄米の店頭価格『2000円』と明言 26日に事業者向け説明会「とにかくスピード」 [冬月記者★]
- 【芸能】『ポスト永野芽郁だと思う女優』ランキング! 3位小芝風花、2位芳根京子を抑えた1位は? 「演技力が素晴らしい」 [冬月記者★]
- 【免許】「4時間でMT習得?それ無理だろ…」運転免許の取得方法変更に不安しかないワケ [ひぃぃ★]
- スーパー「アキダイ」の秋葉社長「精米できてパッケージングもできる小売店はほぼない」政府が放出する備蓄米に言及……ミヤネ屋 [少考さん★]
- 日産、横浜本社の売却検討 7工場削減などリストラ費用に ★2 [蚤の市★]
- イオンで催涙スプレー噴射してジャップ12人を病院送りで逮捕された男性、アメリカ人だった事が深夜にひっそり公表される [949681385]
- ▶破壊されない兎田ぺこらスレ
- 【悲報】森保監督、佐野海舟の性的暴行逮捕を「ミス」と連呼して大炎上… 日本人にとってはパスミス程度の話 [452836546]
- 【画像】Xの愛国者、「更迭」が書けず「更送」と書く 愛国者「誤字でキャッキャするな」→「誤字ではなく知らないんですよ」 5万いいね [808139444]
- 【悲報】国土交通省、税金でマイクラ [279254606]
- 小泉進次郎「コメは保管中に減価償却される」 [256556981]