頼むから正規化しろよ 第二正規形

1NAME IS NULL2005/05/15(日) 03:56:41ID:43QLdn9b
正規化について語りましょう。

前スレ(dat落ち)

頼むから正規化しろよ
http://pc8.2ch.net/test/read.cgi/db/1060690405/

240NAME IS NULL2009/12/26(土) 04:06:02ID:???
>>239
案ずるには及ばないと思うよ。インデックスとサーチのアルゴリズムは高度だから。
この程度のデータなら、RDBMSで数万件からの抽出でも、あっという間な筈。

あと他の方法となれば、制限を設けて自前のアルゴリズムで管理するしかないね。
WindowsならVC++やVC#、VBなどでサービスプログラムを組んで、Webページの
サーバーサイドから呼ぶとかね。
ハッシュアルゴリズムとか独自方式とか好きな技法でカスタムメイドできるよ。

241NAME IS NULL2009/12/26(土) 19:20:41ID:???
>>238
ニコニコはMYSQLだと聞いてる。

242NAME IS NULL2009/12/26(土) 22:13:20ID:???
>>238
現実的に考えて、RDB以外にないだろ。

243NAME IS NULL2009/12/27(日) 00:06:26ID:???
多くの工業科&組込制御系育ちはRDBMSをなかなか理解できないらしい。
自分をCPUに見立てたプログラム実行ロジックで考えてしまう癖が抜けなくて、
データの順番や個数、アドレス問題はポインタで解決済みの早見表として
オンメモリですべてを掌握していないと納得できないという。

役割分担や分散処理が苦手で、すべて自分のプログラムだけでやろうとする。
そして孤高だったりする。

244NAME IS NULL2010/01/20(水) 21:17:11ID:X+55Zxtj
>>242
動画番号に対して固定長(古いコメントは消えるので)のコメント領域を返すkey-valueじゃだめ?

245NAME IS NULL2010/01/21(木) 08:45:08ID:???
>>244
現時点のいろんな意味で、その実装に
もっとも適しているのがRDBだろ。


246NAME IS NULL2010/01/21(木) 18:56:38ID:???
>>245
non-Relationalなkey-valueで済むなら、そのほうがスケーラビリティとかパフォーマンスで有利では。

247NAME IS NULL2010/01/21(木) 20:03:46ID:???
それだと重くならないかとか・・・、固定長の領域を返せばとか・・・って、ちょっと違うんじゃね?

なぜ動画投稿コミュニティサイトのような規模のシステム全体を、同じCPUとメモリの配下で
動作する単一のプログラムやプロセスとして考えるんだよ。スレ的にも当然RDBMSを使い、
サブシステムごとに分散処理だろw

248NAME IS NULL2010/01/22(金) 04:17:32ID:???
結構昔だけどYouTubeなんかはBigTable使い始めたってどっかで読んだ。

249NAME IS NULL2010/01/22(金) 15:53:53ID:???
>>247
>同じCPUとメモリの配下で動作する単一のプログラムやプロセスとして考える
何のことを言ってるのかちょっと分かんないです><

250NAME IS NULL2010/04/09(金) 23:50:09ID:???
4月1日からDBの仕事するようになって1週間だが、早くもタイトル通りの叫び声あげたくなった。
これが現場のDBって奴なのか……

251NAME IS NULL2010/04/14(水) 18:37:37ID:???
既存なら泣く
設計中なら正規化を押し通せ

252NAME IS NULL2010/04/15(木) 05:02:26ID:???
設計は完全に終ってる。
既にシステムの一部は稼働していて、リリースまでに間に合わなかった機能を実装している段階だ。

253NAME IS NULL2010/04/23(金) 15:29:57ID:???
自分の視野が世界の全て病

254NAME IS NULL2010/07/07(水) 22:36:04ID:/39YW+Cp
正規化について勉強を始めたのですが
一人の人に複数の趣味のフィールドを持たせたい場合は
どうするべきでしょうか
shumi1,shumi2のようなカラムを作るのは非正規と理解しています。
趣味のテーブルを分けて、shumi_idという外部キーでやるとした場合

name shumi
kiteretu 1
kiteretu 2

の様に重複するフィールドが出てくるので正規化はされていない
と思っています。どうすればよいのか教えてください。

255NAME IS NULL2010/07/07(水) 23:10:47ID:???
第4正規形になるね。
正規形を崩すかBCNFにしてFKで整合性を取るかじゃないかな

256NAME IS NULL2010/07/08(木) 12:20:56ID:???
>>254
普通に第二正規形ではない。例えばリレーションpersonが以下の
ようであるとして、

person(person_id, name, gender, shumi_id)

で仮に一人の人が複数の趣味を持つとすると、このリレーション
の候補キーは(person_id, shumi_id)になる。
でもnameやgender(性別)といった非キー属性はperson_idにだけ
関係従属する。

person_id -> name
person_id -> gender

テーブルの候補キーに完全関数従属していないので非第二正規形。
これを第二正規形にするには、部分従属する非キー属性nameと
genderを別のリレーションに分ける。

person(person_id, shumi_id) 候補キーperson_id, shumi_id
person2(person_id, name, gender) 候補キーperson_id

まぁ実際は後者のリレーション名をpersonにして前者は
person_shumiとかにすると思うけれどもね。

257NAME IS NULL2010/07/08(木) 21:10:32ID:???
>>255
>>256
ありがとうございます。
なんとか理解できそうなので、続けてサンプルを見まくります。

258Perl忍者 ◆M5ZWRnXOj6 2010/09/03(金) 17:24:39ID:zlBbPnBj
web土方でSQLもろくに使えねえし設定もできねえし
正規化もろくにできてねえし
お前ばかなの?しぬの?
っていったら

得意気に黒い画面だして ポストグレ起動して手動でinsertやりまくって追加してた

脳味噌がかわいそうだった

かわいそすぎて泣いた

259NAME IS NULL2010/09/14(火) 03:05:12ID:???
>>258
何を言っているのかよくわかりません。
あなたもかわいそうな人に見えます。

260NAME IS NULL2010/10/28(木) 15:47:02ID:???
5年くらい昔であろうか?
有名なSlerが受注した外資系企業のシステムで開発者を200人以上集めた。
Oracleのバージョンは忘れた。

既にメンバーからはずれた人が設計したという500列だったかの
ワークテーブルなるのものがあって、正規化した各テーブルから
データをかき集めてワークテーブルでまとめて更新。

新たに参加したメンバーは必ずこの仕様ではプログラムは書けない、
ワークテーブルも削ろう、と進言したが、現テーブル設計担当は
ぐずぐずしているだけでまったく動かず。

動的SQLを多用しないとプログラムを書けず、当然プログラム・バグが
多発。残業・徹夜してもバグの原因がなかなかわからず。

結局、社長命令でシステム開発は中止。
改めて開発予算を確保してテーブル設計からやり直すことに。

得るものは何もない、むなしい仕事だった。
テーブル設計担当を大雪山に生き埋めにしてやりたかった。

正規化は大切だぞ。

261NAME IS NULL2010/10/28(木) 23:36:12ID:???
>>260
ああ、解るわー。

その500列を作った技術者は、コボラーじゃないか?
あと列の名前も意味の無いコードで定義されていたりした?

コボラーにテーブル設計をやらせては駄目だよな。

262NAME IS NULL2010/10/29(金) 02:16:04ID:???
物理名は英字+数字の連番な

263NAME IS NULL2010/11/09(火) 02:22:59ID:???
アラフォーCガリガリプログラマなんだけど、担当者が逃げたASP.NETのシステムを
見ることになってそのままDBの勉強始めたんだけど、DBってこんなに面白かったんだね
正規化とか考えてると楽しい
DBの講習会とか「興味ない」とサボってたのを後悔した

ただSQLはつまらんね
なんでこう、表示、更新、追加でこんなに文法違うんだよ
考えたやつ、頭おかしいだろ

264NAME IS NULL2010/11/09(火) 02:28:31ID:???
COBOL文化の人って、CHAR型好きだよね。
枝番 … EDA CHAR(2) とか。

あと制約付けるのが嫌いで、FETCHが好き。

265Perl忍者 ◆M5ZWRnXOj6 2010/11/12(金) 17:39:54ID:LqoipeIo
正規化してないバカが作ったやつのWEBアプリが
すべてそのままデータぶち込んでてプライマリーすらわかってねーみたいで
頭おわってんなっておもったわ

SQLも理解できないカスグラマも世の中たくさんいるしな
WEBバカはかすばっかりだよ
とくに3キモ言語使ってるやつらな

266NAME IS NULL2010/11/13(土) 08:35:08ID:???
一方で、DWH見て「ぜんぜん正規化とか理解してない、これ設計したのコボラだろwww」
みたいなこと言う奴もいたりするけどな。

267NAME IS NULL2010/11/13(土) 18:03:03ID:???
>>266
オレの事か?

本気でコボラーにはテーブル設計して貰いたくないと感じてる。

268NAME IS NULL2010/11/13(土) 18:43:10ID:WUzshbar
>>267
何もわかってないw

269NAME IS NULL2010/11/13(土) 21:52:14ID:???
「コボラー」よりRDBをわかっているというのが唯一の自慢な人は所詮そんなもんw

270NAME IS NULL2010/11/13(土) 23:05:36ID:???
DWHってなんぞやと検索したら納得

>>267
何もわかってないww

271NAME IS NULL2010/11/14(日) 23:37:21ID:???
いやいやいや!
DWHは、正規化が完了してから正規化崩しを行っていくんだろ。

コボラーの奴は、正規化が不完全な状態から正規化崩しを行うからgdgdなテーブル設計になるんだって。

272NAME IS NULL2010/11/15(月) 00:29:36ID:???
もっと流れよめ

273NAME IS NULL2010/11/15(月) 02:12:21ID:???
頭が悪いのに付ける薬はないってことだ

274NAME IS NULL2010/11/15(月) 08:06:17ID:???
>>271
マジレスすると、DWHではそのような方法はとらない。
そもそも正規化というのが更新異常を防ぎデータの一貫性を保つための考え方である以上、
個々に更新を行わず、ETLであらかじめ一貫性を整えたデータを一括してロードするDWHには
必要のないもの。

275NAME IS NULL2010/12/12(日) 00:35:52ID:???
性器化の意義:項目間の相関性を極小にし記憶効率を改善する。性器化のしすぎは
多くの場合検索性を損ね、時には信頼性も下げる場合がある。

非性器化の意義:項目間の従属性を許可する。記憶効率は下がるが、多くの場合に
検索性が向上し、時には信頼性が向上する場合がある。

276NAME IS NULL2010/12/16(木) 19:18:29ID:???
>>275
アホちゃう?

277NAME IS NULL2011/03/01(火) 14:42:43.26ID:???
パーでんねん

278NAME IS NULL2011/08/09(火) 17:16:40.70ID:???
第一正規化まで終わってる、つまり1枚の大きなテーブル(4Gくらい)があるんですが、自動でその後の正規化をやってくれるソフトってないですか?
知っている人がいたら教えて下さい。

279NAME IS NULL2011/09/02(金) 19:31:02.37ID:XFcjaMI+
検索用にタグ機能を作りたいんですけど
どんなテーブル構造にするのが一般的ですか?

| 記事ID | タグ |
で記事IDを重複キーにするか

| 記事ID | タグ1 | タグ2 | タグ3 | ・・・ |
で記事IDをユニークキーにするか

タグの上限は未定です

280NAME IS NULL2011/09/08(木) 18:42:15.74ID:???
>>279
要件次第だが

| 記事ID | タグ |

で記事IDとタグを主キーにするかな

281NAME IS NULL2011/09/10(土) 19:46:26.54ID:???
>>279
> | 記事ID | タグ1 | タグ2 | タグ3 | ・・・ |
> で記事IDをユニークキーにするか
おいおい第一正規形にすらなってないぞ

282NAME IS NULL2012/08/09(木) 02:11:16.27ID:57EvxVv2
保守age

283NAME IS NULL2012/10/30(火) 13:13:15.70ID:g6duZ5Cb
保守

284NAME IS NULL2014/04/28(月) 11:28:23.67ID:???
テーブル設計(正規化)のアドバイスをお願いします。
メインテーブルがあり、フィールド数は全部で70程です。
主キーに対して従属はない状態(第二正規化)なのですが、
レコードが同じ内容で繰り返される各フィールドをテーブルに切り出す(第三正規化?)と35もマスタテーブルが出来てしまったのですが、
このテーブルとトランザクションテーブルをリレーションシップしてからクエリで全てのフィールドを再度結合する場合、
結合線もすごい数になってしまいますが、このような状態(数)は正規化出来ていないことになるのでしょうか?
各マスタテーブルは主キーとフィールドが一つのものばかりです。

285NAME IS NULL2015/04/21(火) 21:23:14.43ID:pQzWEcgh
☆ 日本の核武装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆

286NAME IS NULL2015/05/11(月) 22:46:52.65ID:???
>>284
まず主キーはサロゲートキー?それともナチュラルキー?
後からサロゲートキー適当に足して主キーとか言ってないよね?

287NAME IS NULL2017/04/20(木) 13:52:29.39ID:???
保守

288NAME IS NULL2017/05/15(月) 15:03:35.69ID:???
日本トップクラスの企業の次期案件下請けしてるけどテーブル定義マジでゴミ
コミュ力ある奴ばかりで技術力ある奴がマネージャークラスに居ないんだろうな
日本終わってるわ

289NAME IS NULL2017/11/23(木) 09:48:07.38ID:???
necや富士通など大手メーカー系sierの業務系案件でまともな設計のプロジェクトなんて存在するの???

290NAME IS NULL2017/12/29(金) 11:59:02.29ID:dtNZwIie
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

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

N46QAZV1AG

新着レスの表示
レスを投稿する