DB設計を語るスレ 11
>今、1ヶ月ぐらい要件考えてから設計に落とし込めないってのを繰り返してるわ このレスはそもそも要件が決まらないのか要件は決まったけど設計ができないのかどっちなの? まあどっちにしても決められないのはそいつが無能だからなわけだから 要件決められないならそんなシステム作るのはあきらめたほうがいいし、設計できないなら金出して設計できる人雇えばいい その際に金をだせないならシステム作るのあきらめろ それだけの話でこのスレでダラダラやる話じゃねーわw >>255 もしかして、地道にユーザーにインタビューすれば要件が出てくる業務システムのようなものじゃなくて エンドユーザー向けサービスの話だったりするのかな。 >>258 そもそも要件が設計に落とし込めないって話だったはずだが つまり要件は決まってる前提の話だろ 設計をするのに十分と言える要件に落とし込めてるかどうか それを判断できないということなんだろう いつまでもうんうん悩んで書きかけの検討メモばっか量産してるんだろ 叩き台という言葉を知らんのか >>258 別に「こうしろ」とは言ってない 良い製品・サービスを作るのに第三者の声、特にコンサルが必要だと思ってるのが間違いだと言ってるだけ コンサルを雇う側コンサルとして雇われる側どちらの経験もあるよ コンサルは同業他社のものを押し付けてくるだけだしな たとえばツリー構造の設計があるだろ?入れ子集合モデルみたいな。 親カテゴリ └子カテゴリ └孫カテゴリ 要件(複数カテゴリ)はわかるけど、ツリー構造に落とし込めない場合 実現できない(設計できない)となるわけじゃん。 で、知識ある設計士に「複数カテゴリを実現するテーブル設計書を作って」 と依頼すれば作ってくれるだろうけど、概念を理解できないと開発ができない こう説明すればわかってくれるか? なお、「複数カテゴリが必要か否か」みたいな要件を、 その道に詳しいコンサルに相談したっていう意味な >要件(複数カテゴリ)はわかるけど、ツリー構造に落とし込めない場合 >実現できない(設計できない)となるわけじゃん。 そのギャップが埋められない理由があよくわからんな。 要件定義でその「カテゴリ」というものがどう振舞わなければならないのか分析が足りてないんだと思うが そこをコンサルがやってくれなかったってことなのかな。 それができないなら、まずその複数カテゴリがホントに入れ子のツリーなのか考えたほうが良いよ やってることが逆で、設計(ツリー)に要件(複数カテゴリ)を当てはめようとするからできないんだよ で、できる人に頼んだら出来上がった設計物の概念が理解できないってか? それなら作成も金出して頼めよ お前には無理ってやつだ アイデアとられそうとかそういうのを回避したいのかもしれんが 自分がやってることを言えばいいものをたとえ話出すとかいみわからんわ そもそも概念で設計者に作ってもらおうとするからできないんだろw 要件作れよw ツリー構造の話で言えば一般的には 親キー、子キーの情報を持つテーブルと それぞれのキーが持つ情報のテーブルだけじゃね そもそも君には無理だと思うからあきらめたほうがいいんじゃない 要件定義時点ならまだ後戻りできるでしょ みんなの予想通り要件定義ができてなかったパターンだったね カテゴリの構造はDB実装とは関係のないビジネス要件 ツリー構造だとしても使われ方によってRDBMSでもいろんな実装方法がある >>274 実装がDB設計の事をいってるんだとしたら>>271 書いたの俺なんだけど 自分も何個も設計したわけじゃないし設計した場合は99%これなんだけど これ以外の設計ってどんな感じなのがあるのかね ツリーとは少し違うんだけど 1階層目は固定で2-5階層(最大5階層まで)っていう制約があるものだけ 1-5階層の項目を持ったテーブル設計したぐらいだわ >なお、「複数カテゴリが必要か否か」みたいな要件を、 >その道に詳しいコンサルに相談したっていう意味な コンサルってECコンサルかよ しかも必要か否かはコンサルが決めることじゃないだろw DB設計以前に経験が無さ過ぎるみたいだから どこかで丁稚奉公して出直すことをオススメする >>275 一番よく使われてるのは隣接リストモデル(単に親IDもしくは子IDのカラムを付与して管理するやつ) 多対多が必要なら>>271 のようにする(これはClosureテーブルというやり方) 他には>>268 に書いてる入れ子集合モデルや経路列挙モデルなんかがある SQL ServerのhierarchyidやPostgresのltreeが経路列挙モデルを簡単に扱えるようにしたもの >>276 ECコンサルではない たとえば弁護士ドットコムみたいなサイト作るのに 弁護士の人にお金出して教えてもらうって感じだ ツリー構造は例で出したのに、相変わらずそこだけ切り取るのな 俺より論理的に考えられる設計士のはずなのに こういうところでは短絡的なんですね そもそもだけど、俺(241)は話の流れで「要件定義でこういう悩みがある」 って自分の経験を語ってるだけで、悩みを相談してるわけじゃないぞw なぜか悩み相談者みたいな扱いうけてるけど >要件(複数カテゴリ)はわかるけど、ツリー構造に落とし込めない場合 >実現できない(設計できない)となるわけじゃん。 これってもしかして 階層の深さを限定しないツリー構造が必要になる要件があった場合に 設計者がRDBでのツリー構造の実現方法(例えば入れ子集合モデル)を知識として持ってなければ 要件が明確でも設計に落とし込めないだろ、という例として書いてるのかな? だとするともう少し日本語どうにかしないと伝わらないぞ >>281 いや、日本語わからないのは都合の良い箇所を切り取ってるからだろ 端から「たとえば~」って書いてるのに なぜかその部分だけ切り取って批判してるじゃん そのたとえ話で主張したい点がどこなのかがよくわからないってことだと思うぞ。 俺>>281 じゃなくて>>269 だけどやっぱりよくわからん。 で>>281 は単なる批判じゃなくて助け舟を出していると思うがそれも伝わらないのか。。。 設計自体が思い浮かばないって話は全く理解できないけど 知識不足が原因でキレイな設計や性能が十分出る設計に落とし込めないという話なら理解できる そういうことが言いたかったんだろうということで好意的に解釈しとくわ 契約者、契約など、こんな入れ物の単位も思いつかない人間が多い。 Excelで資料を作らせると、シート間の関連すらわからないドキュメントを作る人間には、DB設計なんて無理です。 ポータルサイトによくある「検索条件を保存する」って機能。 検索フォームと同じだけのカラムを用意するんじゃなくて、 JSON型のカラムに詰め込むやり方でも問題ないよね? 問題ないかどうかはデータの使い道次第 まあ要件次第と同じだなw でもまぁここで考慮する必要があるのはそのフォーム定義情報の内部を検索に用いたり 部分的に更新したりする必要があるかどうかくらい。 それがなければjsonでまとめても問題ないんじゃね。 顧客のふわっとした要望からいきなり特定の実装方法に飛びつきすぎ 「問題ないよね?」なんて聞く前に どういう選択肢があってそれぞれメリットデメリットは何かくらいは考えよう その上で状況に一番適切と思われる選択肢を選ぶのが設計というもの >>290 「検索条件を保存する」って要件にその懸念はおかしくね? どういう想定したら、検索条件を再検索するんだ? 部分的に更新にしても、検索フォームに反映した後に再保存するだけでは? なんか無理やり難癖つけて答える気がないようにしか見えない >>292 >どういう想定したら、検索条件を再検索するんだ? >部分的に更新にしても、検索フォームに反映した後に再保存するだけでは? 逆にあれだけの説明からそのへんの有り無しを断言しようもないと思うが。 俺からすると「なんでそこ勝手に決めつけちゃうの?」と思う。 >なんか無理やり難癖つけて答える気がないようにしか見えない 難癖に見えるかねぇ? それに、その条件次第でjsonで問題ないとちゃんと回答してるんだが? >>293 与えられた材料で検討するのが要件定義だろ 本人がそれ以上言ってこないんだから決めつけるしかない 「◯◯したいのですがどうすれば良いですか?」→Aにしろ 「いえ、Aだと無理です。××も必要になります」→Bにしろ みたいなやりとりでいいんだよ。仕事じゃないんだから 条件次第とかふわっとしすぎなんだよ。優柔不断かよ 単なる便所の落書きで会社みたいな要求するなよ 読み手が内容を解釈できるレベルですらなければ何を言っても無駄だね 仕事ならすぐ違う人間に交代させられるんだけど >>292 >どういう想定したら、検索条件を再検索するんだ? ポータルサイトによくある「検索条件を保存する」って機能で保存された検索条件が検索されてないとでも思ってるの? むしろどういう想定してるんだ? >部分的に更新にしても、検索フォームに反映した後に再保存するだけでは? インタラクティブに1件ずつ再保存する以外に更新されることが無いなら良いんじゃね? 例えば仕様変更によって保存された検索条件とフォームとの互換性がなくなる場合 データを更新しないならアプリ側に異なるバージョン間での互換性を保つ機能が必要になる そのためには各バージョンのスキーマを定義して参照できるようにしておかないとすぐ破綻する (一般的にシリアライズフォーマットのschema evolution対応と呼ばれる類のもの) アプリ側で対応するのが面倒ならデータを更新するしかないが DBMSが対応してる部分更新の範囲でなければ単純なSQLでは対応できないから 1件ずつデリシアライズして変更して再シリアライズする専用の更新プログラムを用意することになる 要はJSONを1つの文字列(もしくはバイナリ)データとして扱うのみで DBレイヤーでは”将来を含めてJSONの中身を構造化データとしては一切扱わない”なら大きな問題ないということ 一部でも構造化データとして扱う必要があるならトレードオフの判断が必要 ユースケース(CRUD)とデータ(中身と構造)からそれを判断可能にするのが要件なんだが 「検索条件を保存する」というふわっとした要望ではその判断が不可能 だから要件と呼べるものではない 要件定義をしろって言われる理由が少しは分かってもらえるといいんだが ポータルサイトによくある「検索条件を保存する」って機能。 検索フォームと同じだけのカラムを用意するんじゃなくて、 JSON型のカラムに詰め込むやり方でも問題ないよね? [ChatGPT] はい、JSON型のカラムに検索条件を詰め込む方法は、ポータルサイトでの検索条件保存機能として一般的な手法の一つです。この方法を使用することで、検索条件のデータを1つのフィールドにまとめて保存し、後で必要なときに取り出すことができます。 JSON型のカラムに検索条件を保存する場合、以下のような利点があります。 1. 柔軟性: JSON型のカラムは、異なる検索条件のセットを保存できます。たとえば、検索フォームに追加された新しいフィールドやオプションがあっても、データベーススキーマの変更が不要です。 2. シンプルさ: 検索条件を1つのフィールドにまとめることで、データベーステーブルの構造がシンプルになります。これにより、テーブルの設計やクエリの作成が容易になります。 3. 拡張性: JSON型のカラムは、必要に応じて追加の情報を含めることができます。たとえば、保存された検索条件にタイトルや作成者の情報を含めることもできます。 ただし、注意点もあります。 1. 検索条件の検索効率: JSON型のカラムに保存されたデータは、データベース内での検索やフィルタリングが難しくなる場合があります。特定の検索条件でデータを絞り込む必要がある場合は、適切なインデックスを作成するか、別途テーブルを使用して条件を保存する方法を検討することが重要です。 2. データの整合性: JSON型のカラムに保存されたデータは、データベースがその内容を理解することはありません。そのため、データの整合性やバリデーションを確保するための追加の処理や制約が必要になる場合があります。 以上が、JSON型のカラムに検索条件を保存する方法の一般的な考え方です。具体的な実装やデータベースの設計には、使用しているデータベースシステムやアプリケーションの要件に応じて適切な対策を行う必要があります。 ポータルサイトによくある「検索条件を保存する」って機能。 検索フォームと同じだけのカラムを用意するんじゃなくて、 JSON型のカラムに詰め込むやり方だと問題あるよね? [ChatGPT] JSON型のカラムに検索条件を保存する方法は、一般的には適切な方法ではありません。以下に、JSON型のカラムに検索条件を保存することに関連する問題点をいくつか挙げます。 1. 検索条件の構造変更の難しさ: JSON型のカラムに検索条件を保存すると、検索条件の変更や追加が困難になります。検索条件が単一のフィールドにまとめられるため、個々の条件を独立して変更することができません。検索条件の修正や特定の条件を削除する場合には、JSONを解析して変更する必要があります。 2. インデックスの効率性の低下: 検索クエリを実行する際に、JSON型のカラムに含まれるデータを解析する必要があります。データの解析は処理コストが高く、パフォーマンスに影響を与える可能性があります。一方、各検索条件を個別のカラムとして保持すれば、データベースのインデックスを最適に活用して高速な検索が可能になります。 3. クエリの複雑性と可読性の低下: JSON型のカラムに検索条件が格納されている場合、検索クエリの作成が複雑になります。クエリ内でJSONの操作や条件の解析を行う必要があり、可読性が低下します。また、JSON内に格納されたデータの形式によっては、検索条件の抽出や比較が困難になる場合があります。 以上の理由から、検索条件を保存する場合は、各検索条件を個別のカラムに分割して保存することをおすすめします。これにより、データの構造変更の柔軟性やクエリの効率性、可読性が向上し、より効果的な検索が可能になります。 「◯◯したいのですがどうすれば良いですか?」→Aにしろ 「Aなんて無理じゃないですか!××も必要なんですよ!!!」 >>287 安易にJSON型にするとなんでもありになるから注意しろよ じゃあマイナンバーをキーにしちゃいけない理由とやらを聞こうか。 マイナンバーをプライマリキーにする話がPythonスレ出たのでこっちに移動 https://mevius.5ch.net/test/read.cgi/tech/1677856680/601-618 A: マイナンバーをプライマリーキーにすれば95%くらい解決する話 B: マイナンバーをプライマリキーにしたらダメだよ C: マイナンバーに紐付くべき情報を保持するテーブルでマイナンバーをキーにするのは何もおかしなことはない B: マイナンバーを発行する機構のシステムでもアクセスキーを持つ情報保有機関のシステムでもそんな設計したらダメだよ B:詳しく知りたければDB設計スレにでもどうぞ 笑った 個人番号を自分たちで作っているなら主キーになるものがあってもいい >マイナンバーに紐付くべき情報を保持するテーブルでマイナンバーをキーにするのは何もおかしなことはない。 漏洩したマイナンバーをハッカーがRDBで管理するのに マイナンバーをプライマリキーにするみたいな非合法な用途なら何もおかしくないんだが 合法な用途だとマイナンバーをプライマリキーにしたいテーブル自体がまず存在しない 一番近いのは失効リストだけどそれもマイナンバーをプライマリキーにはしない 同姓同名の人がいるような住所録で、マイナンバーをキーにして区別する何て使い方はないんだろうか (ふと思いつきw) >>308 プライマリキーと候補キーに本質的な違いはないからね。 >>312 >合法な用途だとマイナンバーをプライマリキーにしたいテーブル自体がまず存在しない 存在しないと言い切る理由がわからんな。 例えば、マイナンバーを発行した日付を記録する必要があったとしたらそのテーブルのキーは何にする? >>315 >例えば、マイナンバーを発行した日付を記録する必要があったとしたらそのテーブルのキーは何にする? マイナンバーを発行した日付を記録する必要があるのはマイナンバーを発行する機構だけなので 発行日付を記録するテーブルのキーはマイナンバー発行処理のID (発行処理のIDが発行依頼のIDから派生する可能性はある) あと前提知識がわからないから書いておくけど マイナンバーの発行は市町村からの依頼を受けて地方公共団体情報システム機構が行うもので 現状の個人用マイナンバーはハッシュ関数に住民票コード11桁とソルト的なものを渡して生成した11桁と1桁のチェックディジットを足したもの マイナンバー変更時は同じ住民票コードからソルト的なものを変更して別のマイナンバーを生成する (住民票コードを変更してもマイナンバーは変更されないので番号間の紐付けはDB内のマッピングのみ) >発行日付を記録するテーブルのキーはマイナンバー発行処理のID マイナンバーからマイナンバー発行処理のIDを求めるのはどうするんだろう >>317 (発行処理ID, …, マイナンバー, …, 発行日付) SELECT 発行処理ID FROM table WHERE マイナンバー = my_number マイナンバー特有のシステム的な事情はともかくとして チェックディジットを含むような外部生成コードをPKにして許されるのはものすごく特殊な状況 値の更新やフォーマット変更時の影響範囲が大きくなりすぎるから よく言われるISBNやJANコードをプライマリキーにする是非と同じ話 ものすごく短期間だけ使うDBだったり個人が趣味で使うDBだったり 一般的な業務システムに求められる信頼性や保守性が明らかに不要であれば別に構わない >>318 マイナンバーに対する発行処理IDを一意に保証するには結局マイナンバーを一意キーにするしかないが。 UNIQUE NOT NULL じゃなくてただの UNIQUE はプライマリキーと違うとか言っちゃう? 普通に考えたらマイナンバーを主キーにしたら駄目だろう.. 外部IFする場面ではあると思うけどね >>320 関数従属性の方向が違う それにマイナンバーにユニーク制約を付与するんじゃなくて マイナンバーを構成する11桁で一意性を担保しないと駄目 んでUNIQUE NOT NULLでもプライマリキーとは違う 例えばマイナンバーの桁数が15桁に変更になって14桁部分での一意性を担保する仕様に変わった場合 マイナンバーがプライマリキーならテーブル全部作り直しで 外部キーとして参照してるテーブルもすべてデータ更新が必要 UNIQUE NOT NULLなカラムなら1テーブルだけ変更すればいい UNIQUE NOT NULLなカラムを外部キーで使ってたら駄目だけど マイナンバーみたいなのではまずやらない あと UNIQUE NOT NULLは更新可能 プライマリキーは更新不可(少なくともSQL標準では) >>313 法令で定められた事務以外でマイナンバーを利用するのは法律違反 マイナンバーを利用する事務に従事する人が勝手に目的外で利用してたら刑事罰 >>322 >関数従属性の方向が違う 違わんよ。 発行処理ID→発行日付 と 発行処理ID→ マイナンバー があったとしても もともとの マイナンバー→発行日付 という関数従属を表現するなら マイナンバー→発行処理ID→発行日付 となるはず。 発行処理ID→ マイナンバー かつ マイナンバー→発行処理ID なら 発行処理IDが候補キーの場合同時に マイナンバーも候補キーになる。 >マイナンバーを構成する11桁で一意性を担保しないと駄目 なるほど、これは理解した。 >例えばマイナンバーの桁数が15桁に変更になって14桁部分での一意性を担保する仕様に変わった場合 >マイナンバーがプライマリキーならテーブル全部作り直しで >外部キーとして参照してるテーブルもすべてデータ更新が必要 型を変更しなければならないというならそこは本質的な問題じゃないだろう。 それを別にするなら作り直しなんて必要ないと思うが。 11桁のマイナンバーと14桁のマイナンバーは別のナンバーなわけだし。 そこを、個人とマイナンバーを混同しているから個人に対するマイナンバーが変更になったら 全部洗い替えしなきゃならないという発想につなっている気がするな。 >>325 発行処理においてはマイナンバーは導出項目なんだよ 一意性のある導出項目が物理的に保存されてれば二次識別子として利用可能だけど モデリング上は候補キーにもならないしプライマリキーにもならない 逆にマイナンバーが何に関数従属しているかを考えれば発行処理で管理すべきデータが見えてくる プライマリキーの型を変更しようとすると 参照テーブル含め全部作り直しが必要になってしまうという話は ユニークであっても外部生成コードをプライマリキーしちゃダメだよっていう一般的な話 こっちは教科書的なものであればほぼ必ず書いてあることだからわかりやすいと思うんだけど 雑談レベルなんですけど、テーブルの垂直分割ってどのくらいやればいいんですかね。 1..n みたいに分割するしかない場合は除くとして、つまり 1..0 or 1..1 の場合。 理屈で言えば分割すれば全ての列をnot nullに出来る。 でも実際は分割するとちょっとデータを取るのにもjoinしないといけないし、 データをinsert updateする時は主データのテーブルをselectする必要がある(これは作り方次第だけど) どっちにしてもSQLが長くなって面倒なら、分割せずに1テーブルにカラム数十個設定すりゃいいんじゃないかと思ったりもして どう設計すればいいんだ >>326 導出項目だからといって絶対に導出に用いた元データをキーとして使わなければならないということはないな。 免許証番号なんかも都道府県や犯行粘土などいろいろな要素から構成されているけど、常にそれらをキーとするのは 大変だし、そもそもそれができるのは発行したシステムだけであってそのコードを利用するだけのシステム側では無理。 一般的に言えばサロゲートキーだな。 >ユニークであっても外部生成コードをプライマリキーしちゃダメだよっていう一般的な話 こっちはナチュラルキーだな。どの教科書にどう書いてある話なんだろう。 ナチュラルキーにこだわるデータモデルは、だいたいうまくいかない。 >>328 アメリカの有名人にナチュラルキー派がいる。 理屈をこねくり回しているだけのジジイ。 ナチュラルキーをそのまま広範囲に使うかサロゲートキーに置き換えて局所化するかだけの違い。 どっちにしろナチュラルキーを意識しなけりゃならんことは変わらん。 サロゲートキー振ったから後から変更があっても大丈夫とかいってそのへんの分析を疎かにしていると事故る。 >>328 導出に用いた元データをプライマリキーにするかどうかはまた別の話 値を導出する処理を管理するテーブルのプライマリキーに導出した結果の値を使うのが間違ってるよという話 向きが逆 >こっちはナチュラルキーだな。 違う ユニークな外部生成コードは基本的にナチュラルキーだけどその逆は成り立たない ナチュラルキーは状況によってプライマリキーとして使う場合もあるけど 外部生成コードはプライマリキーとして使わない(保守性を考えなくて良い使い捨てのシステムは除く) >>327 別途切り出して管理することにどのくらい意味があるかによるので 都度メリット・デメリットを比較して判断する >>332 >値を導出する処理を管理するテーブルのプライマリキーに導出した結果の値を使うのが間違ってるよという話 なんで「値を導出する処理を管理するテーブル」に限定する?そんな話はしtないが。 >ユニークな外部生成コードは基本的にナチュラルキーだけどその逆は成り立たない >ナチュラルキーは状況によってプライマリキーとして使う場合もあるけど ユニークな外部生成コードは基本的にナチュラルキーで状況によってプライマリキーとして使うと言っているのに >外部生成コードはプライマリキーとして使わない(保守性を考えなくて良い使い捨てのシステムは除く) なんでそういう結論になるのか飛躍しすぎてよくわからんな。 >>334 >なんで「値を導出する処理を管理するテーブル」に限定する? 君が「マイナンバーを発行した日付を記録する必要があったとしたら」という話をしたからだよ それを記録する必要があるのは地方公共団体情報システム機構でマイナンバー生成を管理する箇所だけだから 市役所の住基テーブルとかでマイナンバーを登録した日付だったり 更新した日付を記録したりはするだろうけどそういうのは発行した日付とは別だし すでに別のキーが存在しているところに情報を足すわけなので マイナンバーをプライマリキーにしようと考えるようなユースケースがない >ユニークな外部生成コードは基本的にナチュラルキーで状況によってプライマリキーとして使うと言っているのに 包含関係がわからない? ナチュラルキーは外部生成コード以外の場合が多々あるということ >>335 >君が「マイナンバーを発行した日付を記録する必要があったとしたら」という話をしたからだよ 重機コードなどを基に導出する話をしていたのかと思ったが、この日付の例で導出云々は何の関係がある? 単に生成された値を格納するだけの話じゃん。 >ナチュラルキーは外部生成コード以外の場合が多々あるということ 外部生成コードがナチュラルキーだとは書いたが、その逆が真じゃないのはそりゃそうだな。 それを「違う」と言ったのは>>332 んで、外部生成コードをプライマリキーに使えるかどうかという話にそれがどう関係する? >>333 まあそうですよね… 趣味のコードなので、今度は切り出してやってみます お前らマイナンバーに詳しいんだな なんの話をしてるのかわからんから、 だれかちょっと要件まとめて、議論の前提を整備してくれ 外部とか内部とか生成コードとか、ちゃんと定義合わせてくれ 個人番号はマイナンバーカードを発行したときに住んでいた自治体がわかる番号なんだけどな。 >>340 個人情報保護では知らないとまずい話だよ? マイナンバーカード発行時にマイナンバーが作られると思ってるやつがいるんだな さすがにこのレベルは一般常識だから ボラクル君だけが例外だと思いたい >マイナンバーをプライマリキーにしようと考えるようなユースケースがない これに尽きる そもそもマイナンバー自体が異なる組織のデータベースを横串で刺すことを目的とした二次的な識別子 マイナンバーはもちろん免許証番号やパスポートの旅券番号などをプライマリキーとして使うケースはない もし使ってるとしたらそれは初歩的な設計ミス >>245 >>マイナンバーをプライマリキーにしようと考えるようなユースケースがない >これに尽きる それは必要ないって話で、使っちゃダメという話とは別だな。 >そもそもマイナンバー自体が異なる組織のデータベースを横串で刺すことを目的とした二次的な識別子 二次的な識別子だからプライマリキーには使うなという話なのかな? >>246 >もし使ってるとしたらそれは初歩的な設計ミス 理由をあげて説明しようよ。設計スレなんだし。 マイナンバーや免許証番号や旅券番号がからむ案件なら、 何らかの扱いはしなければいけないと思う、その上で、 プライマリキーにしてはいけないと言う理由はなんだろう >>343 個人番号とマイナンバーカードは、もともとセットで導入するつもりだったもの。 だからいまの政府も先に進むことはできても、前に戻すことはできない。 >>348 テストなどでデータをマスクすることがあるから、主キー列に重要な業務項目値を使うのはデメリットがある。 単にユニークになるからという理由で主キー列の候補にすると、サブエンティティなどで複合主キーを使うことになる。 ちなみにNTT東西、NTTドコモなどは、主キーは、サロゲートキーを使う慣習が大昔からある。 そこはナチュラルキーをそのまま使うかサルゲートキーに置き換えるか得失を踏まえて判断する 一般的な話だな。>>331 あたりにも書いたが。 >>348 逆にプライマリキーにするべきケースがあると思ってるの? データベース設計したことある? しないと言う理由を簡潔に語ってくれれば解決 したことあるか、とは違う あいかわらず「必要ない」と「やってはならない」の区別がついてない人が議論をひっかきまわす 文脈を一切理解しようとしないのな マイナンバーをプライマリキーにして頑張ってくれ プライマリキーにするべきでない理由を説明すればいいだけなのにそれは書かずに文脈を理解しろと言われてもな。 ちなみにどこのどういう文脈を理解しろと言っているんだろう。 >>357 現実にはそんなユースケースはないから頑張りようもないぞ >>358 教えて君はユースケースを先に理解した方がいいんじゃね read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる