X



トップページDB@2ch掲示板
1002コメント323KB
DB設計を語るスレ 10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0121NAME IS NULL垢版2017/12/23(土) 12:47:20.20ID:???
>>120
へーっまじっすか。まじはんぱねーっす。早く何に噛み付いてるか教えてくださいよ。
0122NAME IS NULL垢版2017/12/23(土) 15:22:28.35ID:???
とりあえずWikipediaの主キーの項を
100回読んできたら?
あとデータベーススペシャリストに合格するくらい勉強したら、良いと思うよ
0123NAME IS NULL垢版2017/12/25(月) 21:50:56.03ID:???
>>119
> 山田太郎Aと山田太郎Bを区別しないといけないなら
> そのためのカラムを持つべき

横からだが、それがサロゲートキーだろ
0124NAME IS NULL垢版2017/12/26(火) 02:36:23.97ID:???
>>123
サロゲートじゃなくて、自然キーで区別できるようなカラムが必要だろって事だろ
0125NAME IS NULL垢版2017/12/26(火) 07:14:12.54ID:???
>>123
むしろサロゲートキーは
> そうじゃなくて、山田太郎が二人いる事だけ分かれば良いなら
> 単なるユニークなだけのキーを振っておけばいい
の方だろ
0126NAME IS NULL垢版2017/12/26(火) 08:25:45.48ID:???
>>124,125
なるほど住所や何かで複合主キーにしろという事か
読解力がなくて悪かった

それでも不便な自然キーを優先させようとは理由がない限り思わんが
0128NAME IS NULL垢版2017/12/26(火) 12:09:06.71ID:???
住所はダメよ
同じ住所の可能性はゼロじゃないから
0129NAME IS NULL垢版2017/12/26(火) 12:36:20.97ID:???
だから名寄せは難しいと
0130NAME IS NULL垢版2017/12/26(火) 12:59:30.71ID:???
>>127
要件による
てか、何と何の複合でやろうとしてるのかすらわからんのに正解かどうかきかれてもな
0131NAME IS NULL垢版2017/12/26(火) 13:00:41.95ID:???
>>128
そもそも住所は引っ越しとか町村合併で結構頻繁に変わるし
0132NAME IS NULL垢版2017/12/26(火) 17:44:38.01ID:???
ORMの都合とかで、すべての主キーを単独の連番にってのはみたことあるな
0133NAME IS NULL垢版2017/12/26(火) 21:57:54.33ID:???
>>127
複合キーでできるならそれでいいが、ハンドリングしにくいならそのサロゲートでもいい。
ただし複合キーでもユニークに特定できないものはサロゲートにしたところでやっぱりダメ。
0134NAME IS NULL垢版2017/12/26(火) 22:43:04.71ID:???
>>130
氏名 住所 年齢
くらいで十分じゃあないの?
0135NAME IS NULL垢版2017/12/26(火) 22:58:10.93ID:???
>>134
生年月日ならまだしも年齢とか変わっていくものをPKの一部にするとか変わってるな
0136NAME IS NULL垢版2017/12/26(火) 23:03:51.55ID:???
いいじゃん毎年発生するデータなら。健康診断結果テーブルとか。
0137NAME IS NULL垢版2017/12/26(火) 23:17:18.41ID:???
それぞれの誕生日に更新しないと
0138NAME IS NULL垢版2017/12/27(水) 08:04:26.05ID:???
>>136
Aさんのここ5年間の情報頂戴って言われたらどうするつもりなんだ? w
0139NAME IS NULL垢版2017/12/27(水) 08:12:27.79ID:???
やりたいこと次第で「できます」か「できません」のどっちかでしょ?

「Aさんは今何歳?」
「今年は西暦何年?」
「今年は昭和何年?」
0140NAME IS NULL垢版2017/12/27(水) 10:25:59.08ID:???
お前等の自然キーにかける情熱はどこから来るんだ
0141NAME IS NULL垢版2017/12/27(水) 12:19:03.35ID:5EZatHLU
情熱てw単なる無理解やんけw
0142NAME IS NULL垢版2017/12/27(水) 12:46:24.97ID:???
>>134
年齢を生年月日にするにしても
同姓同名の誕生日も同じ人が
ルームシェアで同じ家に住んでる可能性がある以上
十分とはいえない
0143NAME IS NULL垢版2017/12/27(水) 14:18:50.57ID:???
同姓同名、同じ誕生日で同じ場所に住む人が2人居ても良いと思うし、
そういう風にDBに入るなら、間違いではないし誰も困らない
0144NAME IS NULL垢版2017/12/27(水) 14:26:47.16ID:???
そもそもの>>33の名簿という要件を満たすのそれ
0145NAME IS NULL垢版2017/12/27(水) 14:48:03.83ID:???
まだ続いてんだ、これ。
>>33すら放棄してんのに
お前らヒマなんやな w
0146NAME IS NULL垢版2017/12/27(水) 14:55:09.55ID:???
提示されていない条件を仮定しても意味が無いと思うけど
0147NAME IS NULL垢版2017/12/27(水) 19:19:41.67ID:lvRR+7xm
氏名も住所も年齢もすべて値が変化するものだと気づかない時点でダメだな。
0148NAME IS NULL垢版2017/12/27(水) 21:05:50.80ID:???
この世に変化しないものなんかないんだから主キーだって変化すればいいじゃない
0149NAME IS NULL垢版2017/12/27(水) 21:22:32.89ID:???
「昨日?そんな昔の事は忘れた。
明日?そんな先の事は分らない」
0150NAME IS NULL垢版2017/12/27(水) 21:23:22.17ID:???
>>146
それな
なのに>>101が連番ではダメと難癖つけたから脱線しただけだよ
0151NAME IS NULL垢版2017/12/27(水) 22:01:00.99ID:???
「連番付けとけばいい」「連番じゃダメ」
どっちが一方かだけが提示されていない条件を仮定したかなんて決められるもんかねぇ。
0152NAME IS NULL垢版2017/12/27(水) 22:20:42.71ID:???
「連番じゃなきゃダメ」はどこいった?
唯一の条件を問わない正解なのに
0153NAME IS NULL垢版2017/12/28(木) 17:05:27.38ID:???
>>146
回答するに当たって条件があるなら示しとかないとな

>>147
>>101は自然キー(候補キー)の必要性の問題を連番が問題だと勘違いしてるからな

>>152
>「連番じゃなきゃダメ」
そもそもそんな主張がどこにあった?
0154NAME IS NULL垢版2017/12/28(木) 17:17:30.46ID:???
それは「唯一の条件を問わない正解」なんて言っている時点で触っちゃダメな人。
0155NAME IS NULL垢版2017/12/29(金) 11:03:53.55ID:dtNZwIie
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

NULCDBFZ4S
0156NAME IS NULL垢版2017/12/31(日) 10:46:46.28ID:???
DB勉強中です。
Primary Keyがないテーブルを使うと何か問題が起こりますか?
0157NAME IS NULL垢版2017/12/31(日) 18:11:01.37ID:rWX012Ww
テーブルが問題を起こすのではない
おまえが問題を起こすのだ
0158NAME IS NULL垢版2017/12/31(日) 18:32:52.59ID:???
例えば同姓同名の人がいたとして
その人から自分の電話番号変わったから変更してって言われても
どちらを更新して良いか分からない(=人間)
全部書き換えようとする(=DB)
こんなことが起こる

普通は一意性を確保するために、
社員IDやら学生IDやらマイナンバーやら
他と重ならないキー情報を用意して、
それをPKにしている。
0159NAME IS NULL垢版2017/12/31(日) 18:54:16.62ID:XZEULNad
>>158
そういうのは履歴を取る設計にするのが普通なんだよ。
0160NAME IS NULL垢版2017/12/31(日) 19:11:39.10ID:???
マスターは最新の状態で良いと思う
そんなに頻繁に変えるとは思わないし
履歴は履歴レコードで残せば
0162NAME IS NULL垢版2017/12/31(日) 20:47:09.37ID:rWX012Ww
>>161
あくまで俺の予想だけど
そういうのは履歴を取る設計にするのが普通なんだよ。
って言ってるんだと思う
0163NAME IS NULL垢版2017/12/31(日) 21:23:49.22ID:???
>履歴を取る設計にするのが普通

すっげーー含蓄のある台詞でした
来年はこれを使おう
0164NAME IS NULL垢版2017/12/31(日) 21:28:58.37ID:???
>>162
>>158からそれが読み取れるとしたらよほど天才か知ったかのアホとしか思えんが w
0165NAME IS NULL垢版2017/12/31(日) 21:44:37.10ID:rWX012Ww
>>164
勘違いクンはお口にチャックやでえwwww
おまえほんまにアホやなあwww
0166NAME IS NULL垢版2017/12/31(日) 21:49:45.03ID:???
またこのパターンかよ...
具体的になにも指摘できないなら絡んでこなきゃいいのに w
0167NAME IS NULL垢版2017/12/31(日) 21:57:51.30ID:rWX012Ww
>>166
絡んできたのお前やろがwww
脳ミソおかあちゃんのアナルに忘れてきたんかお前はwwwww
0168NAME IS NULL垢版2017/12/31(日) 22:16:24.92ID:???
       ,、‐'''''''''ヽ、
     /:::::;;-‐-、:::ヽ             _,,,,,,,_
      l::::::l  _,,、-‐"iiiiiilllllllllllliiiiii、__ゞ:::::::::::`ヽ,
     ヽ::`/: :::..: iiiiiilllll||llllliiiiii: : : : ヽイ~`ヽ:::::::i
.      /;,..-;;;;;;;;;,,,,, : l|l: : : : : : : : : : : : : \ ノ:::::}
      /: /: : ""  ""::::..... ;;/´: `ヽ : : : : : :ヽ:::ノ
.     !: : : .,,ぇzv、..,::;:  :::: '^W;;a=z_: : : : : : :.!
     |: : : :.`'':::.:;;'`::.;   .:.::  -z-a:、,, : ::<iiii|
     |: :      ::.   ..:::::.. `.':::':::''^ ´ : : : :.|   みんないいこだから
     |:::.....    .;''   '::::::;;i;..      ..:;; : : :i    けんかはやめよう
    /:.ト;;;;;;;;.......'ヾ ::.::;iii;;ノ: :..    ..;;,.イ: : :.i
    ̄|: ::';;;`':::;'    ,,、`,,'  '::::;;,,,,;;;::'''::::<iii/
.   /!.: ::.   ヽ.'',,,,::;;;v;;;;;:....   ''''  :-─/─
     ヽ :. .... ヾ;i;f",,i",_i.j;;;''""..   ,,:ヽ/
      \;:::   ヾ';;;;;;;;;;;::''' ...::'':: ,,::::::/\
        `''‐、、__  ̄ ̄   __,,,,、-‐"
.      //:::::/ヽ ̄ ̄ ̄ ̄ノ::::/\
.    / /:::::/  ` ̄ ̄ ̄/:::::/.  \
0169NAME IS NULL垢版2018/01/01(月) 14:02:21.33ID:KcPEsTvV
運用の経験がないとデータの変化を追えないとたいへんなのがわからないのだろう。
0170NAME IS NULL垢版2018/01/01(月) 15:50:18.06ID:???
データの変化を追えなかった、その経験談良かったらここに書いて貰えます?
0171NAME IS NULL垢版2018/01/01(月) 20:56:53.06ID:iMl2Nb4o
>>170
人的データパッチミス、プログラムの変更、追加によるバグが変なデータを作り出す。
0172NAME IS NULL垢版2018/01/01(月) 21:23:07.91ID:???
それはすごいシステムだ
そんな所利用したくない
0173NAME IS NULL垢版2018/01/01(月) 21:26:43.18ID:???
>>169
ふーん。全てのデータをinsertとフラグ列のupdateとかで更新してくってこと?
0174NAME IS NULL垢版2018/01/01(月) 22:30:38.24ID:g9MeygUN
大規模なシステムに関わったことがないと理解できないだろう
0175NAME IS NULL垢版2018/01/01(月) 22:32:52.66ID:g9MeygUN
>>173
履歴レコードの話だよ。マスタデータでもトランザクションデータでも追跡できないのは運用で困る。何がどうなったのか他人に説明できないだろうが。
0176NAME IS NULL垢版2018/01/01(月) 22:56:14.39ID:QeD1IQaw
トランザクションデータてそれ自体がログやからトランザクションなんやで
トランザクションの記録を更新すんなアホw
0177NAME IS NULL垢版2018/01/01(月) 23:08:31.05ID:g9MeygUN
UPDATEと誤解してるのか
0178NAME IS NULL垢版2018/01/01(月) 23:08:36.63ID:???
この人のシステム、怖くて触りたくない
よっぽど酷い人たちで開発してそう
0179NAME IS NULL垢版2018/01/01(月) 23:10:08.13ID:g9MeygUN
世の中には常に数百人が関わってるシステムがあるんだよ。こういうシステムだと何が起こるかわからない。
0180NAME IS NULL垢版2018/01/01(月) 23:41:53.03ID:???
>>156
履歴を記録しろと言い出す謎の勢力が襲い掛かってくる
0181NAME IS NULL垢版2018/01/01(月) 23:46:18.18ID:???
履歴が一種のイベントとして成立しているなら記録すべきだよね
(例えば売上とか)
そうじゃないなら必要性が理解できない
0182NAME IS NULL垢版2018/01/02(火) 00:05:50.83ID:???
テロリスト集団が巣くっているシステム?
0183NAME IS NULL垢版2018/01/02(火) 00:21:32.94ID:???
ここ設計スレだし
履歴が必要なら履歴とるように設計すればいい

履歴とるように設計されてないから苦労したとかならしらんから
運用の話は別スレでやってくれ
0184NAME IS NULL垢版2018/01/02(火) 00:28:00.40ID:???
トランザクションって言葉のイメージする範囲が広すぎてかみ合ってないところがあるな

単にマスタじゃないデータという意味合いでトランザクションって言ってる場合があるけど
この場合は当然そのテーブルが更新されたりする

もっと狭い意味でトランザクションって言ってるなら、トランザクションなんだから追加しかありえないだろ
それを更新するとかありえないって設計もある
0185NAME IS NULL垢版2018/01/02(火) 07:23:53.00ID:???
まあ履歴が必要なシステムもあるんだろうけど>>158からいきなり履歴とか数百人が関わるシステムとか言い出してて笑える
0186NAME IS NULL垢版2018/01/08(月) 07:44:30.25ID:???
業務的な必要とSQLの仕様ってだいぶ乖離してるよな

DDLは基本1件ずつしか触れないようにしといてほしかった
手動で操作するのこわい
0187NAME IS NULL垢版2018/01/08(月) 10:32:22.05ID:???
DMLじゃなくてDDL?
業務でどんなSQLを実行してるんだ?

まあDMLにしても1件ずつとかありえんけどな
SQLは手続き型じゃないんだよ
0188NAME IS NULL垢版2018/01/24(水) 13:49:08.82ID:8ow/svL2
運用中のテーブルにカラムを追加する場合、どこに追加しますか?
末尾に追加しますか?それともデータ型やカラム名が合う場所に追加しますか?


くだ質ですが、気になるので教えてください。
0189NAME IS NULL垢版2018/01/24(水) 14:29:33.12ID:???
末尾で問題があるのかって話だよ
0190NAME IS NULL垢版2018/01/24(水) 15:20:39.28ID:8ow/svL2
>>189
問題はありません。
ですが、DB設計的に揃えるのが通常かな?と思いまして
0191NAME IS NULL垢版2018/01/24(水) 17:51:33.77ID:Hghj+DlT
>>190
そもそも間に挿入できると思っているのか?

列順が変わることを想定していないプログラムへの影響、列順が違うのだけなのに運用を止める、データの移行のミス等、面倒なことばかりで普通はやらない。
0192NAME IS NULL垢版2018/01/24(水) 19:47:51.39ID:???
>列順が変わることを想定していないプログラムへの影響

さすがにそこまでは面倒見きれんw
0193NAME IS NULL垢版2018/01/24(水) 20:08:03.01ID:???
本来のリレーショナルデータベースなら, 列の順序はないのでは?
実装上で問題があるケースってあるのかな?
0194NAME IS NULL垢版2018/01/24(水) 20:09:48.86ID:???
select * を使用禁止にする
0196NAME IS NULL垢版2018/01/25(木) 16:14:20.92ID:???
たとえばカラム一覧が
id,name,address,telephone,comment,date

だとする。そして「携帯電話」を追加したい。
こういった要件の場合、
id,name,address,tel,mobilephone,comment,date

ってしたくならないか?
id,name,address,telephone,comment,date,mobilephone

だとなんか納まりが悪いじゃん
0197NAME IS NULL垢版2018/01/25(木) 16:16:11.62ID:???
修正。2番めに書いたのが無駄に削ってしまった。
id,name,address,telephone,mobilephone,comment,date
0198NAME IS NULL垢版2018/01/25(木) 16:22:13.38ID:???
それは趣味の話であって、設計の話ではない
0199NAME IS NULL垢版2018/01/25(木) 17:12:08.82ID:???
>>196
言いたいことはわかるけど、
本来リレーショナルデータベースにはそうした順序性が存在しない
0200NAME IS NULL垢版2018/01/25(木) 17:14:48.52ID:???
>>198-199
いやだから、気になりませんか?って話です。
本質とかルールがどうこうではなく、心情的な面で。
0201NAME IS NULL垢版2018/01/25(木) 17:22:02.78ID:???
気になるもクソもRDBってのは「集合」を扱うもんなの
そして集合には順序なんて概念はないの
0202NAME IS NULL垢版2018/01/25(木) 17:23:25.83ID:???
>>199
もちろん、ユーザに見せるときにはSQLではなくプログラミング言語で調整しているよ
0203NAME IS NULL垢版2018/01/25(木) 17:25:46.44ID:???
じゃ、テーブル設計書作ってるときとかphpMyAdminを利用してるときとかなんでも良いです。
順序がないけど順序を視覚化しているツールを使っている時に、
カラム名やデータ型が異なる順番で並んでると気になりませんか?

単に気持ちの問題ならどうでもよくても、仕様書にした場合、
順序がバラバラだとミスや勘違いの原因になりやすいのではないでしょうか?
0204NAME IS NULL垢版2018/01/25(木) 17:30:24.66ID:???
>>203
気にはなるけどリレーショナルデータベースとはそうしたもんだ

仕様とはまったく別の話
ある順序通りに列を並べたいというのが仕様にあればアプリ側で対応すべき話であって
その順序をDBに持ち込むことがおかしい
0205NAME IS NULL垢版2018/01/25(木) 17:32:15.39ID:???
>>204
つまり、
>>196の要件で「携帯電話」を追加したい場合、
id,name,address,telephone,comment,date,mobilephone

で良いということですか?
これは順序も何も考えて無くて、単に末尾に追加しているだけです。
0206NAME IS NULL垢版2018/01/25(木) 17:38:50.08ID:???
>>205
何度も言っているように、DBはそれで良い
というか、そこで順序にこだわることがおかしい
ユーザ側に見せる時には、プログラミング言語(JavaやC#やPHPでもなんでも)で調整すべき
0207NAME IS NULL垢版2018/01/25(木) 17:39:52.94ID:???
205はリレーショナルモデルの勉強をした方が良いのでは
0208NAME IS NULL垢版2018/01/25(木) 18:03:00.90ID:???
エクセルに切り替えれば解決
0209NAME IS NULL垢版2018/01/25(木) 18:05:52.91ID:???
順序にこだわるのは、>>203にも書いたとおり、
仕様書なり設計書なりを見た人物(自分含む)が
誤認しないか?正しく伝わるか?と思ったからです。

過去にカラム追加が必要だと思ってたら、既にあったということがありました。
正規化しても1テーブルに100近いカラムが並ぶこともあるわけで、
とかく順序を意識して行いと、そういった不具合や誤認が生まれます。

リレーショナルデータベースとしては何が正しいか・正しくないかではなく、
扱うのは人間です。人間にわかりやすいのが一番だと思っています。
その上で出た疑問です。
0210NAME IS NULL垢版2018/01/25(木) 18:08:44.34ID:???
たとえばMySQL「AFTER」というコードが有るのも、「指定位置に追加したい」
という需要があったからこそ用意されたのではないでしょうか?
そうでなければ末尾でも良いわけです。
0211NAME IS NULL垢版2018/01/25(木) 18:12:05.73ID:???
何のためにほとんどのアプリでUIが別途あると思っとる
そういう整形はフロントエンドの役目
0212NAME IS NULL垢版2018/01/25(木) 18:13:18.10ID:???
>>209
まさかと思うけど
リレーショナルデータベースをphpMyAdminで直接編集しようとしている?
(そんなはずはない、と思いたい)

>カラム追加が必要だと思ってたら、既にあったということがありました
というのは、単にモデリングの欠陥を言っているだけで、

>正規化しても1テーブルに100近いカラムが並ぶこともあるわけで、
これもよくあるアンチパターンで、1テーブル100カラムというのはほとんどが設計ミス

>人間にわかりやすいのが一番だと思っています
とか言い訳しているけど、単なる知識不足にすぎないのでは
0213NAME IS NULL垢版2018/01/25(木) 18:19:21.67ID:???
teratailを見ると以下のように回答している人がいました。

「カラム位置のパフォーマンスへの影響ですが、一般的にRDBMSは可変長カラムを後ろに持っていった方が性能は良いです。可変長カラムより後ろのカラムに対しては、実際のデータ長を見て毎回オフセットを計算する必要があるためです。」

これを読み解くと、カラム位置って大事じゃないんですかね?
この回答者が間違っていると言われればそれまでですが。
0214NAME IS NULL垢版2018/01/25(木) 18:26:41.60ID:???
>>213 DBの実装に依存する
これまでの君の主張は見た目の順序のことだから
的外れの突っ込みだぞ
0215NAME IS NULL垢版2018/01/25(木) 18:41:36.73ID:???
どうしてもやりたきゃ
別テーブル作ってそこにコピーしてリネームすれば
0216NAME IS NULL垢版2018/01/25(木) 18:54:38.23ID:???
それこそ無駄じゃないですか?

MySQLに順序変更に関するコマンドがある以上、
私の質問ってそんな的外れじゃないと思うんですけどね
「DBに順序という概念はない」っていう意味はわかりますけども。
0217NAME IS NULL垢版2018/01/25(木) 19:13:05.84ID:???
DBに依存する処理だけど、やりたければやれば良いのだと思うよ
>>216 の動機はやはり的はずれだと思うけど
みんなが言っているようにアプリで対応するのじゃ駄目なの?
0218NAME IS NULL垢版2018/01/25(木) 19:36:37.81ID:???
まあしかし、心情的には理解できなくもない
最終更新日や削除フラグ(笑)の後ろに項目あると、ああ、あとから追加したんだなと切ない気持になる

DBMS的にはカラムは後ろにしか追加できない場合がほとんどだろうけど
GUI系の管理ツールだとテーブル作り直して間に追加したかのごとくしてくれる物もあるぞ
0219NAME IS NULL垢版2018/01/25(木) 19:37:01.16ID:Kd6btbkD
>>216
また馬鹿が調子こいてでまかせ言ってたみたいだなw
迷惑かけてすまんのうw

×:「DBに順序という概念はない」
○:「関係モデルに順序という概念はない」

RDBMSの標準SQLでは定義された列の順番が存在する

よってお前の質問は全く的外れではないし
後から途中に列を挿入するという仕様変更も間違いではない
0220NAME IS NULL垢版2018/01/25(木) 19:40:17.60ID:???
>>219
「DBに順序という概念はない」は216だけが言ってるんじゃないかな
そして標準SQLでは, 途中に列を挿入する処理は存在していないんじゃない?
0221NAME IS NULL垢版2018/01/25(木) 19:52:49.07ID:???
>>220
少なくとも質問者である私は「DBに順序という概念はない」って言っていません。
回答者がそうおっしゃるから、自身の知識を改めただけです。
■ このスレッドは過去ログ倉庫に格納されています

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