akane_sign 2012-08-25 18:41:51

[その他] HOW TO ABC.. このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

実際にあった某システムの超重要なマスターのテーブルSQL。 カラム名はまんまこの通り。

create table item_master (
 A varchar(2000),
 B varchar(2000),
 C varchar(2000),
 D varchar(2000),
 E varchar(2000),
 F varchar(2000),
 G varchar(2000),
 H varchar(2000),
 I varchar(2000),
 J varchar(2000),
 K varchar(2000),
 L varchar(2000),
 M varchar(2000),
 N varchar(2000),
 O varchar(2000),
 P varchar(2000),
 Q varchar(2000),
 R varchar(2000),
 S varchar(2000),
 T varchar(2000),
 U varchar(2000),
 V varchar(2000),
 W varchar(2000),
 X varchar(2000),
 Y varchar(2000),
 Z varchar(2000),
)

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(12)

#1 math_neko 2012-08-25 22:50:06  

DB 設計の段階で潰せ

#2 InternalServerE 2012-08-26 01:41:49  

ちょっと心配になったんですが、
> 某システムの超重要なマスターのテーブルSQL。 カラム名はまんまこの通り。
とあるんですが、貴方が守秘義務違反に問われる恐れはないんですかね。

万一、セキュリティ要件の非常に高いシステムで、難読性確保のため意図的にやってたんだとしたら。。

#4 Verna_Velna 2012-08-26 02:48:11  

1つは全カラム暗号化のためにvercharで長さも冗長に取ってあるという説。 検索性も無いしキーも使えそうにないのでデータベースとしては恐ろしく使いにくそう。 1つはカラムが固定長文字列しか使えない時代から悪い継承をしたか。 今でも何でもvercherな設計する人は居るから、そういうのは潰したい。

#5 hardtimes777 2012-08-26 18:46:34  

このまま"AA", "AB"ってすると "AS" あたりでエラーになりそうですねぇ。。。

#6 math_neko 2012-08-27 00:23:54  

難読性の確保のために意図的にやってたとしてもこれは開発の段階で確実にバグのもとになる。あと何より香ばしいのは、このテーブル、主キーがないw

#8 InternalServerE 2012-08-27 14:30:33  

> 難読性の確保のために意図的にやってたとしてもこれは開発の段階で確実にバグのもとになる。
> あと何より香ばしいのは、このテーブル、主キーがないw

それが難読性向上のための手段なんだもの。突っ込んでも仕方がない。
。。っと、想像の域を出ない話を勝手に膨らますのは、このくらいにしておこうっと。。

#9 takhead 2012-08-29 01:53:10  

これは...(汗)

#10 ikumimashiba 2012-08-29 02:41:11  

これが難読化設計か!!

#11 ikumimashiba 2012-08-29 02:41:20  

これが難読化設計か!!

#12 Miraranran 2013-01-12 03:27:52  

ききかじりでしかないけどメモリが少なかった時代の遺産じゃないのかな。テーブル構造を複数読み込みたくないので全然違うタイプのレコードをぶちこんでたという。 「A=通しID B=type C=個別ID」までが共通で、「B=顧客 なら C=顧客ID D=名前 E=TEL ...」、「B=商品 なら C=商品ID D=商品名 E=価格 ...」みたいに読み替えられて行く。だからフィールド名はつけられないし、型も定義できず無難なVARCHARに。

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[Java] フルHD推奨。

このエントリーをはてなブックマークに追加

画面の左側がわりと無駄な気がします。

public int hoge(){
    int result = 0;
...

鑑賞する »

[その他] そのプレフィックスいる? & 予備・・・...

このエントリーをはてなブックマークに追加

ネーミングが日本語のローマ字っていうのも...

create table syain (
syain_bango int no...

鑑賞する »

[Java] スベテカンスウ

このエントリーをはてなブックマークに追加

何でもやってくれる関数って、便利ですよね...

class Processor
{
	public bool process...

鑑賞する »