X



トップページDB@2ch掲示板
1002コメント323KB
DB設計を語るスレ 10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0373NAME IS NULL
垢版 |
2018/06/09(土) 10:32:23.91ID:???
任意項目への未回答は空文字か、回答無し値(事前に決めた値)にする
0374NAME IS NULL
垢版 |
2018/06/09(土) 17:01:40.73ID:???
要件次第だな
事前に決めた値で問題ないならそうするかもしれんが
まあnullだな
0375NAME IS NULL
垢版 |
2018/06/09(土) 18:03:57.54ID:hcbikbxQ
>>370 は未回答という状態が存在しているとしているのなら、未回答という状態のレコードが存在しないとおかしい。
0376NAME IS NULL
垢版 |
2018/06/09(土) 18:27:03.88ID:Icn+Lx+K
説明不足でした

Q1 性別 1.男 2.女
Q2 参加して 1.よかった 2.どちらとも 3.悪かった
Q3 よかったもの(複数回答可) 1.下着 2.靴 3.帽子
こんなアンケートの結果を
man int, ans1 int, ans2 int, ans3_1 bool, ans3_2 bool, ans3_3 bool
のカラムを持つテーブルに記録しようと思っています
manは1番から自動で割り振りのpkです
ans3_?はTRUE,FALSEで判断して未回答はFALSEと同義になります
問題はans1, ans2の未回答に0かnullのどちらを使うかです
0378NAME IS NULL
垢版 |
2018/06/09(土) 18:55:06.75ID:???
アンケートで、「答えたくない」って選択を用意しているときがあるな
未回答を避け、こういう選択肢を用意すると言うのも方法だと思う
0379NAME IS NULL
垢版 |
2018/06/09(土) 18:56:49.19ID:???
適当に安価なオブジェクトストアを建ててそのまま保存かな
どうせしばらく経ったら丸ごと捨てるんだろ?
0380NAME IS NULL
垢版 |
2018/08/11(土) 20:14:14.25ID:HUdhIw+b
>>332
カラムを_id, fruit_name, date, priceにして、すべての取引を記録すればいいじゃん
最高値と最安値はその都度、SQL文書いて取り出せばよくない?
MaxとMinをいちいち記録する必要ある?
複雑化するだけじゃん。
0381NAME IS NULL
垢版 |
2018/08/11(土) 20:15:06.24ID:???
>>332
最大、最小しかデータ入れられないのか
糞レスしてごめん
0382NAME IS NULL
垢版 |
2018/08/11(土) 20:48:43.90ID:???
糞レス以前に遅レスすぎる
0383NAME IS NULL
垢版 |
2018/08/12(日) 01:13:04.21ID:444bh0X0
>>380
ものによってはレコード数が多すぎて毎回、最少値、最大値を求めるのはおかしい設計になることもある。

最少値、最大値を別のテーブルで管理していても要件次第ではこちらの方が正しい。
0384NAME IS NULL
垢版 |
2018/08/18(土) 19:03:47.85ID:???
一日毎のレコードで最大最小が確定するんだったら
日替わりのタイミングで取得して別テーブルに登録したいね
0385NAME IS NULL
垢版 |
2018/08/23(木) 20:53:10.04ID:5PrJS+b6
ここまで全部アプリケーション設計の話題
0386NAME IS NULL
垢版 |
2018/08/26(日) 10:09:20.42ID:???
普通、設計って運用面も考えるんじゃないの?
0387NAME IS NULL
垢版 |
2018/08/26(日) 10:12:25.44ID:l1qaluN3
>>386
実際は、運用や移行無視の機能要件しか満たさないような設計も多い。
テスト工程の終盤で気付いて火を噴く
0388NAME IS NULL
垢版 |
2018/08/27(月) 03:53:49.73ID:???
DB設計に限れば運用ってバックアップ/リストアぐらいしかないんじゃね
統計情報更新とかフラグメント対策とかの運用をちゃんと設計段階で織り込んでる?
0390NAME IS NULL
垢版 |
2018/08/27(月) 22:01:12.24ID:Ee+4ykO9
>>388
データ容量が見積もりと、過去データ削除方式の設計など考慮すべきは山ほどある。
0391NAME IS NULL
垢版 |
2018/08/28(火) 06:28:49.33ID:???
DBAがいないと漏れがちなこと、ってのが趣旨なんでは
データ容量や保持期間の設計は費用に直結することだからやらないなんてあり得なくて、ちょっと違うと思う
0392NAME IS NULL
垢版 |
2018/08/30(木) 23:28:39.42ID:YS+AC+kz
既存のテーブルに後から10カラムほど追加するというのはありなのでしょうか?

最初は別のテーブルにしようと思ったのですが、
1対1の関係であるため、ひとつにまとめた方が良いのではないか?と悩んでいます。
0393NAME IS NULL
垢版 |
2018/08/30(木) 23:32:31.99ID:lHt449yM
>>392
改修コスト見合いだが
将来にわたり1:1ならいいんじゃね
0394NAME IS NULL
垢版 |
2018/08/30(木) 23:41:15.81ID:???
ありだと思います。よくやってました。
0395NAME IS NULL
垢版 |
2018/08/30(木) 23:45:46.14ID:YS+AC+kz
>>393-394
ありがとうございます。分ける方法もよくあるんですね
0396NAME IS NULL
垢版 |
2018/09/03(月) 03:03:59.17ID:xugX4t13
>>395
どちらかというと分けた方がいい。

あとから追加するものはそのカラムのまとまりに意味があるはずで、別エンティティにすべき。

カラムの追加をし始めるとどんどん追加されて、テーブルがただの入れ物になる。

コボラーさんや頭が古いひとはカラムを追加したがる。
0397NAME IS NULL
垢版 |
2018/09/03(月) 06:44:35.34ID:???
>>396
まとまりに意味があるからテーブル分けろ?
他に理由ないならバカとしか思えない
0398NAME IS NULL
垢版 |
2018/09/03(月) 07:49:30.05ID:8k7Ekz6C
ただスキルがないだけなのにバカ呼ばわりは少しかわいそうw
0399NAME IS NULL
垢版 |
2018/09/03(月) 10:15:56.89ID:???
それぞれが巨象の一部にふれて、
象とはこういうものだと言い合っている絵を
思い浮かべる議論だな
0400NAME IS NULL
垢版 |
2018/09/03(月) 20:46:20.70ID:xugX4t13
>>399
仏教徒か。仲間だな。
0401NAME IS NULL
垢版 |
2018/09/04(火) 19:00:44.56ID:PCCrVc8p
>>396
コボラーさんはカラムを後から追加はしません。
基本的に予備領域を割り当てます。
コボラーさんがRDBで設計すると、予備1〜予備10みたいな項目が全てのテーブルに初期装備されます。
0402NAME IS NULL
垢版 |
2018/09/04(火) 19:13:28.23ID:NpqdKDu5
>>401
つまらん。コボラーが項目が追加できると知るとどんどん追加する。そしてテーブルの結合を嫌がる。
0403NAME IS NULL
垢版 |
2018/09/04(火) 20:02:08.75ID:???
>>401
JCLでレコード長の数字を弄らんといかんようになるからな w
0404NAME IS NULL
垢版 |
2018/09/04(火) 21:09:30.08ID:???
それ以前にテープに格納されてるマスタのレコード長とか変えれんから
0405NAME IS NULL
垢版 |
2018/09/05(水) 08:27:53.10ID:1yHvak3l
なんでCOBOLの話をしているのか?
0406NAME IS NULL
垢版 |
2018/09/05(水) 12:14:38.49ID:sxBfz2nK
コボラーだもの
0407NAME IS NULL
垢版 |
2018/09/05(水) 21:29:08.15ID:???
小学生相手に威張る中学生、みたいな。叩ける相手がコボラーくらいしかいないんだろう。
0408NAME IS NULL
垢版 |
2018/09/05(水) 23:49:38.89ID:w+IuU8zi
ちうがくせいにいぢめられんのかコボラーてw
0409NAME IS NULL
垢版 |
2018/09/06(木) 11:24:17.20ID:???
列追加は構わんけど処理速度への影響も含めて検討してほしい
0410NAME IS NULL
垢版 |
2018/09/06(木) 14:27:57.81ID:GycufIMP
>>409
0411NAME IS NULL
垢版 |
2018/09/06(木) 18:52:24.46ID:???
>>410
レコード長が倍違うテーブルのデータをupdateしたら、updateにかかる時間が倍になるって話
例えば主キー指定のupdate文で1項目だけ値を変更するとして、1件あたりはミリ秒以下でも何百万〜何千万件と積み上げたら明確に差が出る
DBMSによって違いはあるだろうけどね
0412NAME IS NULL
垢版 |
2018/09/06(木) 22:15:09.33ID:???
まさかレコード単位でIOかましてるとでも思ってるのか
0413NAME IS NULL
垢版 |
2018/09/06(木) 23:46:24.34ID:???
いや
ただ計測したらそうなった
0414NAME IS NULL
垢版 |
2018/09/07(金) 19:37:22.26ID:KGOTOtzd
>>411
それは追加したカラムのデータを別の物理ファイルや領域に格納するRDBMS製品の話ではないのか?
0415NAME IS NULL
垢版 |
2018/09/07(金) 19:58:59.63ID:KGOTOtzd
カラムを追加したら、明らかに処理が遅くなるのなら、同じレコードであってもカラムを飛び飛びで持っている証拠になる。

レコードのデータを連続データとして格納していないRDBMSは、SELECTもINSERTもUPDATEも当然、遅くなる。
0416NAME IS NULL
垢版 |
2018/09/07(金) 20:01:04.05ID:???
分からないんだけど、
連続データなら一挙にできるが
分散していると、一つ一つがバラバラに処理されるってこと?
0417NAME IS NULL
垢版 |
2018/09/07(金) 21:15:09.98ID:cf7Dw2jW
昔SQL鯖でカラム追加した時に、クラスタインデックスが断片化して酷い目にあったなぁ
0418NAME IS NULL
垢版 |
2018/09/09(日) 09:06:55.49ID:???
>>414>>415
SQLServerなんだけどね
カラムを追加したとかではなく元々レコード長が倍違うテーブルで、どっちも主キーはInteger型の一項目だけ、主キー以外のインデックスなんかは削除した状態
この2つのテーブルの一項目だけを更新するのに、これとは別に主キーと更新したい値だけを持つ2カラムのテーブルをカーソルで読み込んで、主キーをwhere条件に1件1件更新する処理を流した結果、時間が倍違った
(個人的な検証なのでカーソル使わずに一括Updateすりゃいいじゃんてのは無しで)

この違いの理由を考えた結果、単純に1ページ辺りのレコード件数が倍違うのが差に出てきたのかなあと思ったわけ
SQLServer特有のことかもだけど、レコード長が大きいテーブルは要注意、ひいてはカラム追加も注意が必要だと自分の中で結論を出した
(もちろん、カラム追加が絶対悪というつもりは毛頭なく、処理次第だと思ってる)
0419NAME IS NULL
垢版 |
2018/09/09(日) 11:14:36.11ID:???
行ストアだからそんなもんでしょ
0420NAME IS NULL
垢版 |
2018/09/09(日) 12:57:35.94ID:???
主キーはクラスタ化なのかとか、断片化してないのとか、ページ分割が起こってないのとか
まあ不定要素多すぎて何とも言えんけど

それはそもそもレコード長が違うテーブルの更新時間が違うって話で
カラム追加するかどうかと別な話

ちゃんと比較するなら、カラム追加したときと、別テーブルにカラム持ったばあいの処理で比較しないと
0421NAME IS NULL
垢版 |
2018/09/10(月) 14:21:33.58ID:???
>>420
要は最後の1文に書いてくれたことも検討したほうがいいよって言いたかったの
まわりくどくなっちゃってごめん
0422NAME IS NULL
垢版 |
2018/10/06(土) 14:35:50.55ID:Kml7Tt+s
皆さんデータベースを作るやりがいってなんですか?
0423NAME IS NULL
垢版 |
2018/10/06(土) 16:33:44.55ID:i1VqU+gz
・ニックネーム
・id・
・パスワード・
・最終ログイン日時
・最後にパスワードを設定した日時
・備考欄

これらのデータを管理する場合どのようなテーブル構成にしたら良いのか本を購入して学びたいのですが
良い本を教えてください。
会員サイト用のデータベースです。
0424NAME IS NULL
垢版 |
2018/10/06(土) 18:20:10.06ID:???
>>422
趣味で作るんならともかく、仕事で作るのにやりがいもへったくれもあるか
0426NAME IS NULL
垢版 |
2018/10/14(日) 20:23:24.26ID:???
 私たち日本人の、日本国憲法を改正しましょう。
『憲法改正國民投票法』、でググってみてください。
(へいわ)は、勝ち取るものです。拡散も含め、お願い致します。
0427NAME IS NULL
垢版 |
2018/10/14(日) 20:53:15.89ID:XnVgDh+Y
>>426
戦争反対!
0428NAME IS NULL
垢版 |
2018/10/17(水) 23:43:26.92ID:???
イオンみたいな巨大小売で、個人客が買い物した商品なんかのDBってどう管理してるんでしょうか?

主キー 会員ID 購入商品 品数 日付
1 a01 チロルチョコ 10 2018/10/17
2 a01 牛乳 1 2018/10/17
3 a02 牛肉 1 2018/10/17
4 a02 ポカリ 2 2018/10/17

こんな感じでテーブルに購入された商品1つ1つ登録してたら、1日で日本全国で百万レコードとか行っちゃいますよね?
何かいい手があるんでしょうか?毎日テーブルを作ってるのかな?
0429NAME IS NULL
垢版 |
2018/10/17(水) 23:52:23.40ID:???
>>428
何の為にDBに登録するのか、その目的次第だと思う

小売店での現金販売だとそこまで細かくデータはとってないだろうし
そこまで細かくデータが取れるとすれば通販でクレジット決済したときくらいか
0430NAME IS NULL
垢版 |
2018/10/18(木) 00:21:22.13ID:tCAmet/Z
>>428
例示のレコードでレコード長40byteくらいだとする
1日100万でも40Mとかだから現代ではそこまででもない
0431NAME IS NULL
垢版 |
2018/10/18(木) 01:28:56.96ID:NAGDWV1s
>>429
取る取る、もっと細かく取るよ。
0432NAME IS NULL
垢版 |
2018/10/18(木) 01:47:15.31ID:???
小売店で取れるデータって、POSレジの範囲だぞ
個人を特定可能なデータはとってない
特定可能なポイントカードを使わせれば良いかもだが
すべての客が使う訳じゃないからな
0433NAME IS NULL
垢版 |
2018/10/18(木) 06:59:59.61ID:???
>>428
> 1日で日本全国で百万レコードとか行っちゃいますよね?
今時そこら辺に転がってるPCでもヤ楽々処理できるレベル
1億レコード超えたら本気出す
0434NAME IS NULL
垢版 |
2018/10/18(木) 07:03:00.50ID:???
顧客のだけでなく業者からの仕入データだって膨大になるだろうに毎日テーブル作ってたらどうなるんだよ
0435NAME IS NULL
垢版 |
2018/10/18(木) 07:33:05.12ID:???
>>428の例で、毎日テーブルを作るとしてさ、
「今年会員IDa01が購入した商品全部抽出して」って言われたらSQL文てどうやるの?テーブルを365個SQLに書かなきゃダメ?
0436NAME IS NULL
垢版 |
2018/10/18(木) 16:22:23.06ID:???
本だと
購入日、性別、年代、書籍コード(ISBNや雑誌コード)、冊数が
届いてたなあ
0437NAME IS NULL
垢版 |
2018/10/18(木) 23:03:46.70ID:???
パーティショニングはしてるかもしれんが、テーブル毎日つくるとかないわ
0438NAME IS NULL
垢版 |
2018/10/18(木) 23:29:31.96ID:???
ようつべとか、視聴履歴をめっちゃ昔まで遡れるやん?
数億人が毎日見てるんだぜ?考えるとすごくね?しかも検索結果の抽出も早いしどうなってんだ
0439NAME IS NULL
垢版 |
2018/10/19(金) 03:14:59.08ID:???
超並列とか言ってみる
0440NAME IS NULL
垢版 |
2018/10/20(土) 17:50:10.77ID:???
厚さ0.1mmの新聞紙でも42回折ったら月まで届く高さになる
0442NAME IS NULL
垢版 |
2018/10/23(火) 20:01:35.00ID:???
つまり月まで届くほどデータがあっても
検索にかかる時間は0,1mmのデータのたかだか42倍
0443NAME IS NULL
垢版 |
2018/10/23(火) 22:33:49.87ID:hntOGwbv
0.1mmの42倍て4.2mmじゃね?それで月まで届くの?
0444NAME IS NULL
垢版 |
2018/10/23(火) 22:45:12.23ID:???
いやそれはおかしい
0446NAME IS NULL
垢版 |
2018/10/24(水) 01:29:31.23ID:???
しかし折り方を指定してないからな
蛇腹だとたしかに月までどころか5mmにもならん
0447NAME IS NULL
垢版 |
2018/10/24(水) 01:45:22.86ID:???
どういう折り方しても、無理
0448NAME IS NULL
垢版 |
2018/10/25(木) 03:15:40.01ID:???
よってYouTubeの検索速度を再現する事は不可能である
0449NAME IS NULL
垢版 |
2018/10/25(木) 09:51:00.34ID:???
YouTube を実際に使っているユーザーがいないんじゃ?
0450NAME IS NULL
垢版 |
2018/12/13(木) 23:16:46.44ID:Ht+aqMlR
YouTube を仮に使ってるユーザーぐらいいるんじゃね?
0451NAME IS NULL
垢版 |
2018/12/26(水) 10:07:27.12ID:IDBXTEXd
特殊な炭素素材で水を水素と酸素に分解 ゼビオHDのグループ企業、クロステクノロジーラボが開発
0452NAME IS NULL
垢版 |
2019/03/20(水) 08:24:10.88ID:???
500項目超とかの巨大テーブルいい加減ヤメてほしい
0453NAME IS NULL
垢版 |
2019/03/30(土) 17:46:10.62ID:???
>>452
DBMS何使ったらそうなんの?オラコー?
0454NAME IS NULL
垢版 |
2019/03/30(土) 17:52:56.67ID:klkn0vtv
紙の業務の置き換えで
10明細x50の伝票!あと10年は変更ありません!
とかだとよくやる。官公庁だあとありがち。
正規化するといちいちJOIN書かないといかんし
0455NAME IS NULL
垢版 |
2019/03/30(土) 19:41:39.53ID:???
>>452
見たのは確かOracle
項目多過ぎでSQLが実行できない
0456NAME IS NULL
垢版 |
2019/03/30(土) 22:37:17.45ID:???
COBOLで書かれたような奴の移植ならよくある
0457NAME IS NULL
垢版 |
2019/05/31(金) 20:09:56.83ID:h9fg3gjJ
主キーをサロゲートキー(serial)にするか、複合カラムの組み合わせでUNIQUE制約をつけて主キーっぽく使うかで悩んでいます。
問題なのが、このテーブルはレコードを削除した後、復活(再度、新規登録)させる必要が出てくる可能性があることです。
その場合、復活させた時に番号が変わるserialを主キーにするのは、ありえないですよね?
0458NAME IS NULL
垢版 |
2019/05/31(金) 20:48:12.74ID:???
そのDBがserial値の明示的挿入を許して、それが滅多に起きないんならなくはないんじゃね

それ以前におれなら復活必要なら論理削除にしとくが
0459NAME IS NULL
垢版 |
2019/05/31(金) 23:33:17.50ID:???
データレコード削除してもサロゲートキーのマスター残しておけば問題ないんでないの。
0460NAME IS NULL
垢版 |
2019/06/04(火) 20:14:47.94ID:???
サロゲートキーのマスターとは?

ここで言ってるserialってのは、システム側で管理して勝手に数値入れてくれるものだと思うが
0461NAME IS NULL
垢版 |
2019/06/04(火) 20:52:02.44ID:???
単なるserial;はふつうサロゲートキーとは言わんだろう。
>>457のように一意性を保証する複合主キーが存在したうえでその代理とするのがサロゲートキー。
んだから元の複合主キーとserialからなるのがマスターだしそれが自動採番されることは矛盾しない。
0462NAME IS NULL
垢版 |
2019/06/04(火) 21:03:46.49ID:???
で、データレコード削除しても残るサロゲートキーのマスターって何?って話だが

自動採番(システム管理)される値をサロゲートキーにするって前提じゃないの?
0463NAME IS NULL
垢版 |
2019/06/04(火) 21:33:06.85ID:???
だから複合主キーとサロゲートキーの対応表だよ。そう書いたつもりだったが。
>>457のようにデータ再投入時にサロゲートキーの値が変わるのを防ぎたいなら
そういうマスターを残しておけばいいという話。
採番が自動か手動かはこの際関係ない。
0464NAME IS NULL
垢版 |
2019/06/05(水) 00:34:03.47ID:???
>>463
そういうマスターを残すには手動でそういうマスターを作らないとダメなわけで
前提を合わす気がないならちゃんとそういっとかないと議論にならん
0465NAME IS NULL
垢版 |
2019/06/05(水) 00:38:31.46ID:???
serialを変えたくないってことは、
その様な使い方を別なところでしているんじゃないかな
ログとか履歴とか
0466NAME IS NULL
垢版 |
2019/06/05(水) 08:10:00.40ID:???
>>464
既に何度も書いているが、そのマスターのサロゲートキーはserialで自動採番して全然問題ないんだが?

あるいは、もともとデータテーブルが1テーブルだったものをマスターテーブルと分離したことを言っているなら
そりゃ当たり前だ。そう提案したんだからな。
0467NAME IS NULL
垢版 |
2019/06/26(水) 12:08:55.23ID:???
大阪市は2019年6月24日、6月7日から翌8日にかけて発生した基幹系システムの障害に
ついて、原因を特定したと明らかにした。米オラクル(Oracle)のデータベース(DB)ソフト
「Oracle Database」のバグが原因だった。

https://egg.5ch.net/test/read.cgi/bizplus/1561468154/
0468NAME IS NULL
垢版 |
2019/06/26(水) 12:32:28.72ID:???
やっぱ脱Oracleだな
ろくに保守サポートされないんだから有料契約の意味がない
0469NAME IS NULL
垢版 |
2019/06/26(水) 19:39:47.63ID:???
でも金で解決してくれるサポートがなけりゃ、問題がDBMS側にあることを
突き止めることすら自前でやらなきゃならんのだぜ。
0470NAME IS NULL
垢版 |
2019/06/26(水) 19:52:43.63ID:???
突き止めることに意味がないからな

責任転嫁のための作業であって
復旧にはどのみち問い合わせじゃ間に合わん
0471NAME IS NULL
垢版 |
2019/06/26(水) 20:14:47.85ID:???
原因がわからなきゃ対策のとりようもないだろう。
「たまたまエラーになったけど原因がわからないからまた起きたらゴメンね。」で済むような仕事ならいいが。
0472NAME IS NULL
垢版 |
2019/06/27(木) 18:25:28.42ID:???
オラクルは、問題がDBMSにあることをつきとめるんじゃなくて、その問題をまず認めてもらうのにサポート窓口が必要なんだよ

あとは直ればラッキーぐらい
■ このスレッドは過去ログ倉庫に格納されています

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