X



トップページDB@2ch掲示板
1002コメント323KB
DB設計を語るスレ 10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0101NAME IS NULL
垢版 |
2017/12/22(金) 08:14:52.49ID:???
>>95
例えば、レコードとして実在の個人を表現したいのに氏名しかないから同姓同名の人が
区別できない、なんてのはそもそもシステム設計の失敗。
それを単に連番振れば解決するかのように言う奴はバカだし有害。

有効な自然キーがないから人工キーを振るというなら、例えば同姓同名の二人
(ここでは便宜上AさんBさんとする)に対して、Aさんは1、Bさんは2というように
個人を特定したうえでキーを採番することが必要だし、その紐付けが維持できるような
仕組みも必要。。
0102NAME IS NULL
垢版 |
2017/12/22(金) 08:43:18.68ID:???
>>101
> 個人を特定したうえでキーを採番することが必要だし、その紐付けが維持できるような
> 仕組みも必要。。
そんな当たり前のことを力説されても困るわ w
0103NAME IS NULL
垢版 |
2017/12/22(金) 10:45:03.07ID:???
>>101
>有効な自然キーがないから人工キーを振るというなら、例えば同姓同名の二人
>(ここでは便宜上AさんBさんとする)に対して、Aさんは1、Bさんは2というように
>個人を特定したうえでキーを採番することが必要だし、その紐付けが維持できるような
>仕組みも必要。。

すまんが、これって連番振るのと何が違うの?
0104NAME IS NULL
垢版 |
2017/12/22(金) 11:01:13.97ID:???
>>103
俺もそう思うんだよね。
連番であってもなくてもいいけど、社員コードが社員の識別に役立てないとでも思ってんのか
0105NAME IS NULL
垢版 |
2017/12/22(金) 12:45:16.02ID:KAIeoRcz
おいおい>>101>>102は勘違いバカやぞw
0106NAME IS NULL
垢版 |
2017/12/22(金) 14:56:17.28ID:???
>>105
さっさと、PKにハッシュ値を設定すべき理由を教えてくれや
0107NAME IS NULL
垢版 |
2017/12/22(金) 18:50:39.54ID:???
>>101,104
要件による前提をかってに決めないで話してくれ
0108NAME IS NULL
垢版 |
2017/12/22(金) 19:45:03.18ID:KAIeoRcz
>>106
さすが勘違いバカやなwお前には一体何が見えとるんやw
0109NAME IS NULL
垢版 |
2017/12/22(金) 20:36:34.50ID:???
>>107
この要件は

名簿みたいなデータではPKを何にしたら良いでしょうか?

これ以外質問者からは提示されていない。
ウスラバカのお前こそ勝手に決めつけんな
0110NAME IS NULL
垢版 |
2017/12/22(金) 21:19:47.34ID:???
>>103
重要なのはA=1,B=2なのかA=2,B=1なのか特定できてるってこと。
そうじゃない単なるユニークなだけのキーを振っても意味ない。
0111NAME IS NULL
垢版 |
2017/12/22(金) 22:01:01.41ID:KAIeoRcz
>>110
おまえキチガイのふりしたいみたいやけんどわざとらしすぎていまいち萌えんのうw
0112NAME IS NULL
垢版 |
2017/12/22(金) 22:24:18.98ID:???
なんか変なのが居ついてるな。
0113NAME IS NULL
垢版 |
2017/12/22(金) 22:43:39.26ID:???
>>110
すまん、やはりよく分からない
特定できることにどのようなメリットがあるの?
0115NAME IS NULL
垢版 |
2017/12/22(金) 23:34:05.23ID:???
でも、もういいよ。消えてくれ。

わかったよ。ハッシュでPK最高ー!
0116NAME IS NULL
垢版 |
2017/12/22(金) 23:53:46.12ID:KAIeoRcz
>>114
おまえなあwエセ関西弁使う奴が全部俺やと勘違いしとるやろw
さすが勘違いキングやなwww
てかお前完全に名前を主キーにして大目玉くらうタイプやなw
どんな腐った脳ミソしとったらハッシュを知らんお前をバカにしとる俺と
ハッシュを知らん発言の>>36が同一人物に見えんねんwww
0117NAME IS NULL
垢版 |
2017/12/23(土) 00:05:28.58ID:???
>>116
へーっ。まじっすか。まじはんぱねーっす。

自分、すげー尊敬しちゃうんで、何に噛み付いてんのかまじ教えてほしいっす。
0118NAME IS NULL
垢版 |
2017/12/23(土) 08:01:51.82ID:???
>>113
特定できるとメリットがあるというより、AなのかBなのか判別できないデータじゃ意味ないだろうと。
ユニークキーが存在しない状態と変わらんじゃん。
0119NAME IS NULL
垢版 |
2017/12/23(土) 11:03:50.26ID:???
たとえば山田太郎さんが二人いて
山田太郎Aと山田太郎Bを区別しないといけないなら
そのためのカラムを持つべき
そうじゃなくて、山田太郎が二人いる事だけ分かれば良いなら
単なるユニークなだけのキーを振っておけばいい

今ここで連番を主キーにしろって主張は自然キーの候補がないならって前提だぞ

そもそも主キーが要らないだろって話は別の議論な
0120NAME IS NULL
垢版 |
2017/12/23(土) 12:25:57.35ID:V+00B+qt
フリだけかと思ったらガチキチっぽいやんコイツw
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
いやだから、気になりませんか?って話です。
本質とかルールがどうこうではなく、心情的な面で。
■ このスレッドは過去ログ倉庫に格納されています

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