mysql:8523
From: "Kawaji, Shinya" <"Kawaji, Shinya" <kawaji@xxxxxxxxxx>>
Date: Wed, 17 Dec 2003 12:38:36 +0900
Subject: [mysql 08523] Re: MySQL でユニークキー
かわじ、です。 > 設計したときは掲示板だったのですが、それは > > ・掲示板が複数作成できる > ・各掲示板の中にはスレッドが複数入る > ・各スレッドの中には複数の書き込みが入る > > というもので、平たく言えば 2ch のようなイメージです。 以下、考え方の一つとして。 上記の 3層の構造を、一つの primary key で賄うのではなくて、 3つのテーブルの primary key に分ける方法もあります。 例えば、ですが、 create table bbs ( bbs_id int unsigned not null auto_increment, title text, primary key (bbs_id) ); create table thread ( bbs_id int unsigned not null, thread_id int unsigned not null auto_increment, title text, unique key (bbs_id,thread_id) ); create table mes ( bbs_id int unsigned not null, thread_id int unsigned not null, mes_id int unsigned not null auto_increment, title text, body text, unique key (bbs_id, thread_id, mes_id) ); とすれば、理論的には、掲示板の数(bbs_id) * スレッドの数(thread_id) * 投稿の数(mes_id) の数だけ、投稿を受け付けられることになります。 2ch タイプでしたら、スレッドごとに投稿数を 1000 とかに制限するのが 普通でしょうから、insert 前(もしくは後)にチェックすれば、 primary key が溢れることは無くなります(掲示板の数とスレッドの数を含め、 適切にチェックしていれば)。 上記のテーブル構造では、bbs_id が 8 で、その bbs の thread_id が 13 に 投稿があった場合、insert 文は insert mes values ( 8, 13, NULL, '投稿のタイトル', '投稿の本文' ); 等となります。
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]