X



トップページDB@2ch掲示板
1002コメント323KB
DB設計を語るスレ 10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0247NAME IS NULL
2018/02/21(水) 23:27:11.35ID:???
順次SAMは総なめしたり
Trに振りまら混ぜたりたいへんだから違うのはわかりますが

相当まーじとか冗談言っていた時代が懐かしいw
0248NAME IS NULL
2018/02/21(水) 23:29:59.45ID:???
振り分け
0249NAME IS NULL
2018/04/07(土) 17:29:50.05ID:???
経理システムは一つの仕分けテーブルに借方も貸方も詰め込んでフラグで分別してると思うけど
これを借方テーブル、貸方テーブルの二つに分けるのはどうだろうか?
デメリットとして処理が複雑になるけど、貸方だけの検索とかがデータが半分になる分だけ速くなりそうだけど。
0250NAME IS NULL
2018/04/07(土) 17:51:30.32ID:???
>>249
インデックスを適切に設定してたらデータ量の倍半分とかではたいした差はでないよ
0251NAME IS NULL
2018/04/07(土) 18:32:05.17ID:???
振替伝票1枚ごとに伝票番号振るとすると、
貸方か借方で違うテーブルに入るのはどうなのかな
0252NAME IS NULL
2018/04/25(水) 14:23:33.67ID:???
マスタデータをJavaServletのアプリケーションスコープ変数に格納して
そこを参照したほうが処理が軽いかと思ったけど、DBが同じサーバー
にある場合はあまり変わらないのかな?
0253NAME IS NULL
2018/04/25(水) 17:25:06.73ID:0kFJEAdZ
>>252
コンピュータの仕組みを勉強してください。
0254NAME IS NULL
2018/04/27(金) 19:37:20.55ID:???
>>253
未だに末尾の長音符を省略してしまうおじいちゃんは黙っててね
0255NAME IS NULL
2018/04/28(土) 06:14:34.24ID:???
え、逆にIT業界で省略しないとかあるの?
問題起きたことないんか?
0256NAME IS NULL
2018/04/28(土) 10:38:35.05ID:???
>>255
おじいちゃんなの?
そもそも問題ってなに?
0257NAME IS NULL
2018/04/28(土) 10:56:07.06ID:???
>>255
今は2018年ですよ
0258NAME IS NULL
2018/04/28(土) 11:09:37.85ID:???
>マスターデーターをJavaServletのアプリケーションースコープー変数に格納して

こう?
0259NAME IS NULL
2018/04/28(土) 12:28:02.71ID:???
それ面白いの?
0260NAME IS NULL
2018/04/28(土) 13:02:27.58ID:???
なあ、俺と知識をシェアーしようぜ!
0261NAME IS NULL
2018/04/28(土) 13:29:20.62ID:???
わざわざ慣用に逆らう必要性説明できる?
もし取引先が慣用を知らなかったらどんな奴らが仕事してんのか不安になるよな
0263NAME IS NULL
2018/04/28(土) 14:11:16.33ID:???
>>262
これと個々のIT企業との関連は?
0264NAME IS NULL
2018/04/28(土) 14:14:36.67ID:???
>>263
関係ないと思う

って言うような取引先なんて余計に不安になるだろ
0266NAME IS NULL
2018/04/28(土) 14:24:05.30ID:???
最近思うんだけどみんな無知な奴を相手にし過ぎ。
みんなが知ってる常識レベルの事知らないで、
さも、それが当たり前の様に振る舞ってる奴とかいるじゃん。
そういう奴に正しい事を教えてくれと請われるならともかく、
わざわざ教える事無いって。

常識知らずに正しい事教えても常識を真似するだけで理解してないし、
表面的に真似されると常識知らずを判別出来なくなる。
馬鹿は馬鹿のままでいてもらった方が関わりを避けれる。
無駄に教えちゃいかんと思う。
0267NAME IS NULL
2018/04/28(土) 14:32:49.38ID:D5cEBG7Q
無知には教えたくない()教えたがりのジレンマwいじらしいのおwww
0268NAME IS NULL
2018/04/28(土) 14:32:59.28ID:???
>>266
常識はそれぞれの主観に基づく上に
そんなことしても見栄の張り合いで専門板なんて成り立たないぢゃん。。
このスレに限って見てもまともに進行したのは初心者の質問に自称上級者が答えるときだけよ
あとは不毛な罵り合い非建設的なやり取りだけ
ある種のクッションを設けるために多様な人が必要ですわよ
0270NAME IS NULL
2018/04/28(土) 16:36:14.55ID:???
知ってるか?ここ実はDB設計スレなんだぜ……
0271NAME IS NULL
2018/04/28(土) 18:13:36.79ID:???
>>270

おおっっっそれは知らなかった!
0272NAME IS NULL
2018/05/12(土) 07:21:49.70ID:???
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/
0273NAME IS NULL
2018/05/25(金) 21:13:08.94ID:Jccz1Fx2
論理削除否定派のヤツが設計したシステム
取引先からの依頼データなど大事なデータ平気でdeleteしてるんだが、そもそも他人が作ったデータを跡形もなく消せて、その消した証拠すら残さないとかシステムとして間違ってる。
0274NAME IS NULL
2018/05/25(金) 21:15:53.50ID:???
削除データの扱い方、議論始めると荒れるんだけど
0275NAME IS NULL
2018/05/25(金) 21:21:20.27ID:Jccz1Fx2
だけどその議論はいつも、ユーザーデータはみんなで使ってる共有資産であるという重要な視点が抜けてる。
0276NAME IS NULL
2018/05/25(金) 21:24:01.69ID:???
君の個人情報もみんなで共有しよう
0277NAME IS NULL
2018/05/25(金) 21:26:30.82ID:Z93MyXqj
そんなゴミはいらん
おまえ一人で共有しとけ
0278NAME IS NULL
2018/05/25(金) 21:34:37.41ID:???
>>273
必要ないからdeleteしてるんでしょ?
0279NAME IS NULL
2018/05/25(金) 21:54:12.06ID:Jccz1Fx2
>>278
それが必要だったから大トラブル
0280NAME IS NULL
2018/05/25(金) 22:01:35.26ID:Z93MyXqj
つまり必要なデータを削除してしまったマヌケを論理削除の問題だと勘違いしてしまったもっとマヌケな>>273
というおはなしやな
少々笑えた
0281NAME IS NULL
2018/05/25(金) 23:10:40.85ID:???
postgresで一切vacuumしないで運用したらいいんじゃね。time machineで任意の時点に戻れるぞ。
0282NAME IS NULL
2018/05/25(金) 23:17:56.83ID:TatbyLnb
>>273
同じテーブルに残す方がわかりにくい。
0283NAME IS NULL
2018/05/25(金) 23:20:27.43ID:TatbyLnb
>>281
実際はどのRDBMSでもそんな簡単な使い方をしていないから、それをやることはほぼない。
0284NAME IS NULL
2018/05/25(金) 23:25:58.38ID:???
具体例で考えた方が良いと思う
例えば商品マスターだと、在庫切れやメーカー廃番でも削除する事はしていない
会員情報の場合だと、会員登録申請、会員情報更新、退会をそのまま反映している
退会の場合は、一定期間保留しその後物理削除している
商品販売時は、販売後にサポートが必要だったりするため、
退会とはリンクせずそのまま販売履歴として残している
0285NAME IS NULL
2018/05/25(金) 23:47:38.82ID:TatbyLnb
>>284
言いたいことは理解できるが、データ量と更新・参照頻度を書かずにものを言っても意味がない。

単にリレーショナルデータベースの知識、SQLの理解が足らないことで論理削除状態にしていることがある。
0286NAME IS NULL
2018/05/26(土) 00:50:49.12ID:bRsNkwI2
>>280
制御が不十分で、仕掛中のデータが削除できてしまいデータ不整合となった。
どこから発生したか出元の不明なデータだけが存在する状況で、大混乱。
結局前日のバックアップから発生元のデータをサルベージしたって話・・
0287NAME IS NULL
2018/05/26(土) 06:48:26.89ID:???
>>286
いやそれ削除フラグ云々以前のレベルやろ...
0288NAME IS NULL
2018/05/26(土) 07:04:47.67ID:n2n4g8U4
延々と削除フラグの話を続けるんだね w
0289NAME IS NULL
2018/05/26(土) 08:11:25.72ID:bRsNkwI2
>>287
削除フラグはともかく、物理削除はダメだろって話。
消しちゃいけない理由は、後付けで増えていくことが多いから、考慮漏れがあると死ねる
0290NAME IS NULL
2018/05/26(土) 08:32:39.78ID:???
制約も知らんアホは黙ってなよ... w
0291NAME IS NULL
2018/05/26(土) 08:41:20.21ID:???
考慮漏れで問題を起こす可能性を考えたらなんでもありだろう。
削除フラグを見落として処理するコードが混入していて大混乱、とかね。
0292NAME IS NULL
2018/05/26(土) 09:43:20.38ID:bRsNkwI2
>>291
それでも跡形もなく消えるよりマシ
少なくとも原因はすぐわかる。
0293NAME IS NULL
2018/05/26(土) 10:04:04.12ID:???
面会記録は跡形もなく消します
0294NAME IS NULL
2018/05/26(土) 19:39:28.98ID:Pmk3UmpV
レコードの削除をしても他のテーブルで保管するのが普通。

同じテーブルにためたがるのは、古めかしいデータそのものがどういう状態かを自ら示すという発想から来ているもの。
0296NAME IS NULL
2018/05/26(土) 21:55:41.58ID:Pmk3UmpV
>>295
集合演算子を知らない。
0297NAME IS NULL
2018/05/26(土) 22:16:19.76ID:???
>>296
何言ってんのこいつwww
0298NAME IS NULL
2018/05/26(土) 23:00:10.53ID:???
削除して良い要件と、削除方法は別の話なんだが
そして削除フラグは、データの削除ではなく単なる状態変更の場合があるって話

これが理解できない奴が削除フラグの話をかきまわしてるだけ
0299NAME IS NULL
2018/05/26(土) 23:11:28.11ID:???
継続して議論したいなら、コテハン付けるなりトリップ表示させなよ
0300NAME IS NULL
2018/05/26(土) 23:21:53.44ID:???
削除フラグの話題にすらついてこれない人がどうしてこのスレにいるの?
0301NAME IS NULL
2018/05/27(日) 10:01:04.63ID:???
ちゃんと削除フラグの話題で進めばいいけど>>286とか>>294みたいに頓珍漢なこと持ち出してグダグダになった過去が何回もあるからなぁ w
0302NAME IS NULL
2018/05/27(日) 10:57:41.83ID:0Fr+f65w
>>301
おまえの事やぞw
0304NAME IS NULL
2018/05/27(日) 15:55:32.12ID:8hLmukSL
>>298
ステータスならフラグという持ち方は変。
0305NAME IS NULL
2018/05/27(日) 15:57:15.03ID:8hLmukSL
ひとつのレコードにたくさんフラグ項目を持っていて、それを複雑な条件で判断するようなやつは死ねよ!
0306NAME IS NULL
2018/05/27(日) 18:20:01.00ID:???
>>304
状態がオン/オフしかないようなものならフラグでおかしくない

>>305
フラグたくさん持ってるとか条件が複雑とか、それが要件なら仕方ない
むしろ全然関係ないフラグをビットフィールドにまとめるほうが迷惑
0307NAME IS NULL
2018/05/27(日) 21:18:51.26ID:8hLmukSL
>>306
>>298 は削除フラグが状態変更と言っている。単に論理削除ではないと言っている。それをただ「削除フラグ」と呼んだら普通は意味がわからない。
0308NAME IS NULL
2018/05/27(日) 21:20:22.92ID:8hLmukSL
>>306
おまえ、ジジイだろ?

そんなわかりにくいデータの持ち方は、リレーショナルデータベースの考え方ではない。
0309NAME IS NULL
2018/05/27(日) 21:25:12.75ID:???
削除フラグの泥沼スレという名前のスレを建ててそこでやれよ。
0310NAME IS NULL
2018/05/27(日) 22:50:53.39ID:Cl/1K8fE
だいたい削除フラグなんていらないしな。

とにかく汎用機ジジイがリレーショナルデータベースを使うとこうなる。

またはExcelシートだと思っている素人が考えるとこうなる。
0311NAME IS NULL
2018/05/28(月) 12:33:38.94ID:JjIEU8hM
何故突然エクセルwバカってこわいwww
0312NAME IS NULL
2018/05/28(月) 21:04:44.29ID:ZV4d+P4d
>>311
リレーショナルデータベースをExcelと同じようなものと考えている人は多いぞ。
0313NAME IS NULL
2018/05/28(月) 22:09:34.92ID:HWd426F6
>>305
一つの項目がステータスを表し、0〜9の値を持ち、2と7が削除扱いという設計を見たことがある。
2が取引先からのキャンセル、7がこちら都合のキャンセル。
嫌になった。
0314NAME IS NULL
2018/05/31(木) 21:41:41.10ID:???
毎日の果物の価格を記録するデータベースを作りたいんですがどういうテーブルをつくったらいいですか?とりあえずitemsテーブルに果物の種類とidのカラムを作ります。
毎日の価格はどういうテーブルにしたらいいですか?
0315NAME IS NULL
2018/05/31(木) 21:59:40.22ID:???
>>314
itemテーブルはそんなものだろうと思う。

毎日の価格を登録するテーブルというのが、
実際の販売時の価格を取引単位で記録して行くのか、
それとも一定時間での平均価格等を記録して行くのか
もう少し具体的な要件を出してもらう方が良いかと思う
0316NAME IS NULL
2018/05/31(木) 22:14:59.09ID:???
>>315
価格というのは市場で取引された価格の高値と安値で1日2つの価格に決まります。
0317NAME IS NULL
2018/05/31(木) 22:20:51.12ID:???
その高値と安値の取得は、システム側でリアルタイムに行うのか、
それとも、一日の最後に取得するものなのか
前者の場合は、そういう記録もとっておき、更新しないとならなくなるよね
0318NAME IS NULL
2018/05/31(木) 22:23:34.53ID:???
更新は一日に一回だけです。
0319NAME IS NULL
2018/05/31(木) 22:26:08.06ID:???
では、難しく考える必要はない
記録したい項目をテーブルに用意して終わりでしょう
0320NAME IS NULL
2018/05/31(木) 23:07:07.03ID:???
例えばこんな感じかな
item_id
high_price
low_price
date

他に必要な項目があれば追加
0321NAME IS NULL
2018/06/01(金) 04:08:11.91ID:???
>>320
プライマリキーは要らないんですか?
あとテーブル名ってどんな感じに付けますか?
0322NAME IS NULL
2018/06/01(金) 04:10:01.84ID:???
必要かどうか分からないが、
どうしてもキーを付けるなら、
一意になりそうな日付かな?
テーブル名はお好きにどうぞ
0323NAME IS NULL
2018/06/01(金) 11:25:16.22ID:???
果物取引実績(果物取引実績ID PK, 果物ID NN, 取引年月日 NN, 取引価格 NN)
チェック(取引年月日 = 時間切捨(取引年月日))
チェック(取引価格 >= 0)
インデックス(果物ID, 取引年月日)

select 果物ID, 取引年月日, max(取引価格) 最高値, min(取引価格) 最安値
from 果物取引実績
group by 果物ID, 取引年月日
0324NAME IS NULL
2018/06/01(金) 14:29:47.30ID:???
>>323
そうだね、一意にするためには日付だけではなく
itemIDとセットにしないといけなかった
0325NAME IS NULL
2018/06/01(金) 21:03:43.61ID:???
しかし>>323はindex付けただけでuniqueにはしていないという
0326NAME IS NULL
2018/06/01(金) 21:04:55.21ID:???
販売実績だからユニークにしなくていい
同じ果物が何度も売れてもいい
0327NAME IS NULL
2018/06/01(金) 21:48:46.17ID:???
要件ガン無視ワロタ
0328NAME IS NULL
2018/06/01(金) 22:16:10.56ID:???
質問者を放置して持論展開はいつもの事
0329NAME IS NULL
2018/06/01(金) 22:30:46.29ID:???
客は要件わかってないからな
要件そのまま聞くとまあ後でおかしくなるよ
この場合だと、その日の最後に入力するので取引実績をメモしておかないといけないんだけどめんどくさい、だとか
最大最小を計算するのめんどくさいからどうにかして、といった具合
0330NAME IS NULL
2018/06/01(金) 23:15:49.45ID:???
入手できるデータが取引単位なのか日単位なのかなんて開発者が勝手に決められるわけないわな。
0331NAME IS NULL
2018/06/02(土) 00:24:27.89ID:gAkF9Xc4
夢見る乙女もまんぐり返る妄想力やなw
0332NAME IS NULL
2018/06/02(土) 00:54:08.86ID:???
どうしても日単位の最大最小でしかデータを入れられないなら
insert into 果物取引実績 values
('id1', 'banana', 年月日, 最高値),
('id2', 'banana', 年月日, 最安値)
といった形にすればよろしい
最初からテーブル構造が壊れてると想定外の事態に回避策とりにくい(メモめんどくさいとか手集計めんどくさいとかね)
テーブル構造がまっとうなら回避策も容易に見つかる
0333NAME IS NULL
2018/06/02(土) 01:03:54.25ID:???
>>332
それだと、レコード一つだけ見たときにそrが最高値か最安値か分からないだろう
0334NAME IS NULL
2018/06/02(土) 07:10:37.22ID:???
こういう、なにがキーかわからないテーブルを設計してしまうID厨
0335NAME IS NULL
2018/06/02(土) 07:36:22.88ID:???
>>332
どうやったらこんなアホな発想に至るんだろう...
0337NAME IS NULL
2018/06/02(土) 07:44:01.56ID:???
>>334
どう見てもidがキーとわかる
果物idと日付をキーにする派閥もあるが
後で見た人は同じ日に同じものが売れたらどうなるんだ?と疑問を感じざるをえない
0338NAME IS NULL
2018/06/02(土) 07:44:49.55ID:???
>>335
せめて反論の形にしないと敗北宣言と同じだよ?
0339NAME IS NULL
2018/06/02(土) 07:48:00.32ID:???
データベースは1行に1つの事実を保存する
基本中の基本
最大値や最小値を1行に保存するということはこれに反する
統計値とは複数の事実から導き出されるものだからだ
0340NAME IS NULL
2018/06/02(土) 07:49:44.49ID:???
>>338
え゛っ、マジで言ってるの?
値を参照するだけで>>323相当のSQL要るし、既に>>320みたいなまっとうな例もでてるのに w
0341NAME IS NULL
2018/06/02(土) 07:53:31.65ID:???
>>339
基地害キタ━(゚∀゚)━!
0342NAME IS NULL
2018/06/02(土) 07:55:18.85ID:???
>>340
統計値を参照するのに集計クエリが要るのは正常

>>320はまっとうじゃないよ
手作業で出した集計値を保存するという暗黙の手続きの上にかろうじて成立しているだけ
それと試しにこのテーブルにまっとうな名前をつけてみなさい
0344NAME IS NULL
2018/06/02(土) 08:01:53.58ID:???
形式だけ正規化して満足してしまう人が多すぎる
彼らは形式しかみないから>>320のような歪なテーブルを受け入れてしまうがそれはダメだ
意味的にも正しく正規化すべきだ
0345NAME IS NULL
2018/06/02(土) 08:05:20.94ID:???
そろそろ最初の質問者である>>314が出てきて要件について後出しでも何でも良いから(というか思ってることでもいいから)
はっきりさせるべきだな。
0346NAME IS NULL
2018/06/02(土) 08:13:57.12ID:???
>>344
「正規化」って用語を「正しいテーブル設計」の代名詞みたいに使う人は相変わらずいるねぇ。
意味的に正しい正規化ってなんだろう。
■ このスレッドは過去ログ倉庫に格納されています

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