DB設計を語るスレ 10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>95
例えば、レコードとして実在の個人を表現したいのに氏名しかないから同姓同名の人が
区別できない、なんてのはそもそもシステム設計の失敗。
それを単に連番振れば解決するかのように言う奴はバカだし有害。
有効な自然キーがないから人工キーを振るというなら、例えば同姓同名の二人
(ここでは便宜上AさんBさんとする)に対して、Aさんは1、Bさんは2というように
個人を特定したうえでキーを採番することが必要だし、その紐付けが維持できるような
仕組みも必要。。 >>101
> 個人を特定したうえでキーを採番することが必要だし、その紐付けが維持できるような
> 仕組みも必要。。
そんな当たり前のことを力説されても困るわ w >>101
>有効な自然キーがないから人工キーを振るというなら、例えば同姓同名の二人
>(ここでは便宜上AさんBさんとする)に対して、Aさんは1、Bさんは2というように
>個人を特定したうえでキーを採番することが必要だし、その紐付けが維持できるような
>仕組みも必要。。
すまんが、これって連番振るのと何が違うの? >>103
俺もそう思うんだよね。
連番であってもなくてもいいけど、社員コードが社員の識別に役立てないとでも思ってんのか >>105
さっさと、PKにハッシュ値を設定すべき理由を教えてくれや >>101,104
要件による前提をかってに決めないで話してくれ >>106
さすが勘違いバカやなwお前には一体何が見えとるんやw >>107
この要件は
名簿みたいなデータではPKを何にしたら良いでしょうか?
これ以外質問者からは提示されていない。
ウスラバカのお前こそ勝手に決めつけんな >>103
重要なのはA=1,B=2なのかA=2,B=1なのか特定できてるってこと。
そうじゃない単なるユニークなだけのキーを振っても意味ない。 >>110
おまえキチガイのふりしたいみたいやけんどわざとらしすぎていまいち萌えんのうw >>110
すまん、やはりよく分からない
特定できることにどのようなメリットがあるの? でも、もういいよ。消えてくれ。
わかったよ。ハッシュでPK最高ー! >>114
おまえなあwエセ関西弁使う奴が全部俺やと勘違いしとるやろw
さすが勘違いキングやなwww
てかお前完全に名前を主キーにして大目玉くらうタイプやなw
どんな腐った脳ミソしとったらハッシュを知らんお前をバカにしとる俺と
ハッシュを知らん発言の>>36が同一人物に見えんねんwww >>116
へーっ。まじっすか。まじはんぱねーっす。
自分、すげー尊敬しちゃうんで、何に噛み付いてんのかまじ教えてほしいっす。 >>113
特定できるとメリットがあるというより、AなのかBなのか判別できないデータじゃ意味ないだろうと。
ユニークキーが存在しない状態と変わらんじゃん。 たとえば山田太郎さんが二人いて
山田太郎Aと山田太郎Bを区別しないといけないなら
そのためのカラムを持つべき
そうじゃなくて、山田太郎が二人いる事だけ分かれば良いなら
単なるユニークなだけのキーを振っておけばいい
今ここで連番を主キーにしろって主張は自然キーの候補がないならって前提だぞ
そもそも主キーが要らないだろって話は別の議論な >>120
へーっまじっすか。まじはんぱねーっす。早く何に噛み付いてるか教えてくださいよ。 とりあえずWikipediaの主キーの項を
100回読んできたら?
あとデータベーススペシャリストに合格するくらい勉強したら、良いと思うよ >>119
> 山田太郎Aと山田太郎Bを区別しないといけないなら
> そのためのカラムを持つべき
横からだが、それがサロゲートキーだろ >>123
サロゲートじゃなくて、自然キーで区別できるようなカラムが必要だろって事だろ >>123
むしろサロゲートキーは
> そうじゃなくて、山田太郎が二人いる事だけ分かれば良いなら
> 単なるユニークなだけのキーを振っておけばいい
の方だろ >>124,125
なるほど住所や何かで複合主キーにしろという事か
読解力がなくて悪かった
それでも不便な自然キーを優先させようとは理由がない限り思わんが >>127
要件による
てか、何と何の複合でやろうとしてるのかすらわからんのに正解かどうかきかれてもな >>128
そもそも住所は引っ越しとか町村合併で結構頻繁に変わるし ORMの都合とかで、すべての主キーを単独の連番にってのはみたことあるな >>127
複合キーでできるならそれでいいが、ハンドリングしにくいならそのサロゲートでもいい。
ただし複合キーでもユニークに特定できないものはサロゲートにしたところでやっぱりダメ。 >>130
氏名 住所 年齢
くらいで十分じゃあないの? >>134
生年月日ならまだしも年齢とか変わっていくものをPKの一部にするとか変わってるな いいじゃん毎年発生するデータなら。健康診断結果テーブルとか。 >>136
Aさんのここ5年間の情報頂戴って言われたらどうするつもりなんだ? w やりたいこと次第で「できます」か「できません」のどっちかでしょ?
「Aさんは今何歳?」
「今年は西暦何年?」
「今年は昭和何年?」 >>134
年齢を生年月日にするにしても
同姓同名の誕生日も同じ人が
ルームシェアで同じ家に住んでる可能性がある以上
十分とはいえない 同姓同名、同じ誕生日で同じ場所に住む人が2人居ても良いと思うし、
そういう風にDBに入るなら、間違いではないし誰も困らない まだ続いてんだ、これ。
>>33すら放棄してんのに
お前らヒマなんやな w 提示されていない条件を仮定しても意味が無いと思うけど 氏名も住所も年齢もすべて値が変化するものだと気づかない時点でダメだな。 この世に変化しないものなんかないんだから主キーだって変化すればいいじゃない 「昨日?そんな昔の事は忘れた。
明日?そんな先の事は分らない」 >>146
それな
なのに>>101が連番ではダメと難癖つけたから脱線しただけだよ 「連番付けとけばいい」「連番じゃダメ」
どっちが一方かだけが提示されていない条件を仮定したかなんて決められるもんかねぇ。 「連番じゃなきゃダメ」はどこいった?
唯一の条件を問わない正解なのに >>146
回答するに当たって条件があるなら示しとかないとな
>>147
>>101は自然キー(候補キー)の必要性の問題を連番が問題だと勘違いしてるからな
>>152
>「連番じゃなきゃダメ」
そもそもそんな主張がどこにあった? それは「唯一の条件を問わない正解」なんて言っている時点で触っちゃダメな人。 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
NULCDBFZ4S DB勉強中です。
Primary Keyがないテーブルを使うと何か問題が起こりますか? テーブルが問題を起こすのではない
おまえが問題を起こすのだ 例えば同姓同名の人がいたとして
その人から自分の電話番号変わったから変更してって言われても
どちらを更新して良いか分からない(=人間)
全部書き換えようとする(=DB)
こんなことが起こる
普通は一意性を確保するために、
社員IDやら学生IDやらマイナンバーやら
他と重ならないキー情報を用意して、
それをPKにしている。 >>158
そういうのは履歴を取る設計にするのが普通なんだよ。 マスターは最新の状態で良いと思う
そんなに頻繁に変えるとは思わないし
履歴は履歴レコードで残せば >>161
あくまで俺の予想だけど
そういうのは履歴を取る設計にするのが普通なんだよ。
って言ってるんだと思う >履歴を取る設計にするのが普通
すっげーー含蓄のある台詞でした
来年はこれを使おう >>162
>>158からそれが読み取れるとしたらよほど天才か知ったかのアホとしか思えんが w >>164
勘違いクンはお口にチャックやでえwwww
おまえほんまにアホやなあwww またこのパターンかよ...
具体的になにも指摘できないなら絡んでこなきゃいいのに w >>166
絡んできたのお前やろがwww
脳ミソおかあちゃんのアナルに忘れてきたんかお前はwwwww ,、‐'''''''''ヽ、
/:::::;;-‐-、:::ヽ _,,,,,,,_
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;;;''"".. ,,:ヽ/
\;::: ヾ';;;;;;;;;;;::''' ...::'':: ,,::::::/\
`''‐、、__  ̄ ̄ __,,,,、-‐"
. //:::::/ヽ ̄ ̄ ̄ ̄ノ::::/\
. / /:::::/ ` ̄ ̄ ̄/:::::/. \ 運用の経験がないとデータの変化を追えないとたいへんなのがわからないのだろう。 データの変化を追えなかった、その経験談良かったらここに書いて貰えます? >>170
人的データパッチミス、プログラムの変更、追加によるバグが変なデータを作り出す。 >>169
ふーん。全てのデータをinsertとフラグ列のupdateとかで更新してくってこと? 大規模なシステムに関わったことがないと理解できないだろう >>173
履歴レコードの話だよ。マスタデータでもトランザクションデータでも追跡できないのは運用で困る。何がどうなったのか他人に説明できないだろうが。 トランザクションデータてそれ自体がログやからトランザクションなんやで
トランザクションの記録を更新すんなアホw この人のシステム、怖くて触りたくない
よっぽど酷い人たちで開発してそう 世の中には常に数百人が関わってるシステムがあるんだよ。こういうシステムだと何が起こるかわからない。 >>156
履歴を記録しろと言い出す謎の勢力が襲い掛かってくる 履歴が一種のイベントとして成立しているなら記録すべきだよね
(例えば売上とか)
そうじゃないなら必要性が理解できない ここ設計スレだし
履歴が必要なら履歴とるように設計すればいい
履歴とるように設計されてないから苦労したとかならしらんから
運用の話は別スレでやってくれ トランザクションって言葉のイメージする範囲が広すぎてかみ合ってないところがあるな
単にマスタじゃないデータという意味合いでトランザクションって言ってる場合があるけど
この場合は当然そのテーブルが更新されたりする
もっと狭い意味でトランザクションって言ってるなら、トランザクションなんだから追加しかありえないだろ
それを更新するとかありえないって設計もある まあ履歴が必要なシステムもあるんだろうけど>>158からいきなり履歴とか数百人が関わるシステムとか言い出してて笑える 業務的な必要とSQLの仕様ってだいぶ乖離してるよな
DDLは基本1件ずつしか触れないようにしといてほしかった
手動で操作するのこわい DMLじゃなくてDDL?
業務でどんなSQLを実行してるんだ?
まあDMLにしても1件ずつとかありえんけどな
SQLは手続き型じゃないんだよ 運用中のテーブルにカラムを追加する場合、どこに追加しますか?
末尾に追加しますか?それともデータ型やカラム名が合う場所に追加しますか?
くだ質ですが、気になるので教えてください。 >>189
問題はありません。
ですが、DB設計的に揃えるのが通常かな?と思いまして >>190
そもそも間に挿入できると思っているのか?
列順が変わることを想定していないプログラムへの影響、列順が違うのだけなのに運用を止める、データの移行のミス等、面倒なことばかりで普通はやらない。 >列順が変わることを想定していないプログラムへの影響
さすがにそこまでは面倒見きれんw 本来のリレーショナルデータベースなら, 列の順序はないのでは?
実装上で問題があるケースってあるのかな? たとえばカラム一覧が
id,name,address,telephone,comment,date
だとする。そして「携帯電話」を追加したい。
こういった要件の場合、
id,name,address,tel,mobilephone,comment,date
ってしたくならないか?
id,name,address,telephone,comment,date,mobilephone
だとなんか納まりが悪いじゃん 修正。2番めに書いたのが無駄に削ってしまった。
id,name,address,telephone,mobilephone,comment,date >>196
言いたいことはわかるけど、
本来リレーショナルデータベースにはそうした順序性が存在しない >>198-199
いやだから、気になりませんか?って話です。
本質とかルールがどうこうではなく、心情的な面で。 ■ このスレッドは過去ログ倉庫に格納されています