[前][次][番号順一覧][スレッド一覧]

mysql:8526

From: "Jun Akita" <"Jun Akita" <j-akita@xxxxxxxxxx>>
Date: 17 Dec 2003 14:41:55 +0900
Subject: [mysql 08526] Re: MySQL でユニークキー

あきた@草加市です。

たくさんのコメントありがとうございます。

# 妙な疑問ですみません (^_^;)

# 今度も一通にまとめさせていただきました。
# 引用前後しますがご容赦ください。

>  「MySQLの場合」というより「このような掲示板を作る場合」なんですね。
>  であれば、あきたさんの方法でもよいのでは?

「このような掲示板を作る場合」、Oracle であればシーケンス(と日付等を組
み合わせて)で無限にレコードを作成できると考えていたのですが、MySQL だと
シーケンスがないので AUTO_INCREMENT を使わざるを得ないかな、と。

で、AUTO_INCREMENT というのはシーケンスのように(論理的に)無限ではない
ので「なんとなく気持ちが悪い」と思った次第です。
無限ではないと言っても、実際には無限といっても差し支えないですし、シーケ
ンスにしてもディスク容量等に引っ張られて結局は無限ではないわけですから、
良く良く考えてみるとあまり悩む必要がないような気がしてきました。

だから

>  AUTO_INCREMENTにしてもシーケンスにしても、物理的な値の上限はあるのです
> から。 AUTO_INCREMENTがNG、シーケンスがOK、は、違うと思いますよ。

については松枝さんがおっしゃる通りですね。


菅原さんの考え方

>  僕だったらRDBMSによらず
> ・掲示板ID(ここをAUTO_INCREMENT)を保持するテーブル
> ・掲示板IDとスレッドID(ここをAUTO_INCREMENT)を保持するテーブル
> ・掲示板IDとスレッドIDと書き込みID(ここをAUTO_INCREMENT)と書き込み内容
> を保持するテーブル
> にしますけどね。

も、かわじさんの考え方

> 上記の 3層の構造を、一つの primary key で賄うのではなくて、
> 3つのテーブルの primary key に分ける方法もあります。

も同じ意味合いですよね?

あまり詳しく説明していなかったので申し訳ないのですが、私も上記の通りにし
ています。
ただ単純に、AUTO_INCREMENT が(論理的に)有限という点がずっと気になって
いたのです。


>  複数のフィールドに主キーを張る事は行われている事ですが、主キーの意味が
> 主キー以外の意味と混同されているケースが多い様に思われます。

こちらについては、すみません。
私が例としてあげた「主キー」と Subject の「ユニークキー」がごっちゃになっ
ていますよね。

一意なキーが論理的に有限だという点がずっと気になっていた、ということです。
(物理的に有限なので、上の方でも書きましたがかなり意味のない疑問だった
 ような気がしています)


> 日付だけでまずいという事でしたら、例えば日付+数値フィールドを主キーにし
> たらどうでしょう??
> 同一時刻の書き込みは、多くても大した数ではないでしょうから、これで少しは
> 安心できるかな?って気がしまして・・・w

えっと、考え方は渡辺さんと同じだと思っています。
ですが、「数値フィールド」に AUTO_INCREMENT を使ってしまうと(論理的に)
有限だなぁと。

前述の通り、Oracle ではシーケンスを使っていたのですが、MySQL にはそれが
ないので気になっていました。

# シーケンス的なロジックを AP で作り込めば解決するんですけどね。

---
あきた じゅん(j-akita@xxxxxxxxxx)



[前][次][番号順一覧][スレッド一覧]

      8475 2003-12-11 10:08 ["tonegawa" <tonegawa] rowid のようなもの                      
      8476 2003-12-11 11:44 ┗[OHTSUKA Ko-hei <tech]                                       
      8477 2003-12-11 12:03  ┣[<ataka@xxxxxxxxxx>  ]                                     
      8479 2003-12-11 12:28  ┃┗[SUGAWARA Hajime <sug]                                   
      8480 2003-12-11 12:42  ┃ ┗[<ataka@xxxxxxxxxx>  ]                                 
      8516 2003-12-17 07:19  ┃  ┗[とみたまさひろ <tomm]                               
      8518 2003-12-17 11:23  ┃   ┣["Jun Akita" <j-akita] MySQL でユニークキー (Re: rowid のようなもの)
      8519 2003-12-17 11:39  ┃   ┃┣["Kawaji, Shinya" <ka]                           
      8521 2003-12-17 12:10  ┃   ┃┃┗["Jun Akita" <j-akita] Re: MySQL でユニークキー
      8522 2003-12-17 12:35  ┃   ┃┃ ┣[SUGAWARA Hajime <sug]                       
->    8526 2003-12-17 14:41  ┃   ┃┃ ┃┗["Jun Akita" <j-akita]                     
      8527 2003-12-17 18:34  ┃   ┃┃ ┃ ┣[ML account <ml@xxxxx]                   
      8530 2003-12-17 21:21  ┃   ┃┃ ┃ ┃┗["Jun Akita" <j-akita]                 
      8529 2003-12-17 20:30  ┃   ┃┃ ┃ ┗[SUGAWARA Hajime <sug]                   
      8523 2003-12-17 12:38  ┃   ┃┃ ┣["Kawaji, Shinya" <ka]                       
      8524 2003-12-17 12:38  ┃   ┃┃ ┣[ML account <ml@xxxxx]                       
      8525 2003-12-17 12:41  ┃   ┃┃ ┗[takuma watanabe <tak]                       
      8520 2003-12-17 11:40  ┃   ┃┗[SUGAWARA Hajime <sug]                           
      8532 2003-12-18 01:46  ┃   ┗["zen kishimoto" <zen] オープンソース DB の質は商用ソフトの「 6 倍優れる」
      8478 2003-12-11 12:28  ┗["tonegawa" <tonegawa]                                     
      8481 2003-12-11 12:43   ┗[SUGAWARA Hajime <sug]                                   
      8482 2003-12-11 14:04    ┗["tonegawa" <tonegawa]