3.データベース設計
重要なのは、依然として mysql の効率、mysql メモリの適切な割り当て、特にテーブル キャッシュの
サイズです。さらに、システムの電源が突然失われるとどうなりますか? mysqlは堅牢ですか?
テーブルの名前設計では、タイプを示すプレフィックスが使用され、すべて小文字 (?) で表されます。例:
ユーザー テーブルのように、システムのデータベースの前に s が付きます: suser (sUSER はどこですか?)
s: システムテーブル、suser、sclass
m: ユーザーメールテーブル、msysop、mdrangon
w: ユーザーメッセージテーブル、wsysop、wdrangon
a: レイアウトインデックステーブル、alinux、acampus
b: レイアウトアーティクルテーブル、 blinux、bcampus
c: 特殊分類レイアウト テーブル、cnewboard
i: 必須領域インデックス テーブル、ilinux、ilinux01、icampus、icampus04
j: 必須領域記事テーブル、jlinux、jcampus、
また、次のように文字列または数値を使用する必要がありますか?識別子?たとえば、sysop という名前のアカウントの
id は 1 です。彼の文字のテーブルは msysop ですか、それとも m00001 ですか?同様に、campus というバージョンの場合、対応する
コードは 5 なので、このバージョンの記事のテーブル名は bcampus または b00005 ですか?文字列を使用するとわかりやすいかもしれません。エラーを確認してみましょう。
ユーザー情報テーブル: suser
usernum int unique, // 一意の識別子、最大 30,000 アカウント、少なすぎますか?
userid char[20] Primary key, // ソートキー、ID、すべて小文字。
passwd char[20], // パスワードは、暗号化された暗号文を保存します。
realid char[20], //実際の ID、大文字と小文字混合。
username char[24], // ユーザー名
userlevel longint, // 64 権限?
numlogins int,
numposts int,
firstlogin time,
lastlogin time,
stoptime time, /* 合計滞在時間*/
lasthost char[32],
email varchar[100],
address varchar[100],
/ / 他に何かデータが必要ですか?後でテーブルを変更できるように、特定の予約値を確保しておく必要がありますか
// 新しいフィールドを追加するときの効率はどれくらいですか?
レイアウト分類テーブル: sclass
classnum int unique, // 分類識別子
classid char[20], // 分類英語 ID:computer
classname varchar[100], // 分類中国語の説明: Computer World
classtable char[ 20] , // 特殊なカテゴリに対応するレイアウト テーブル
// 一般的に、Riot セクションなどの特殊なカテゴリの場合、各レイアウトは 1 つのカテゴリにのみ属します。
// 新しいレイアウトは特殊なテーブルで記述できます
レイアウト テーブル : sboard
boardnum int unique, // ボードの識別 (必要ですか?)
boardid char[20], // ボードの英語名
boardname varchar[100], // ボードの中国語名
boardclass char[20] ], // ボードが属するカテゴリ
boardsysop varchar[100], // 投稿者のリスト
boardposts int, // ボード内の記事の数
boardlevel int, // ボードの読み取りおよび書き込み権限
Indextable char[20], // ボードに対応するインデックス テーブル名: aboardid?
texttable char[20], //レイアウトに対応する記事テーブルの名前: bboardid?
// 最後の 2 つの項目が表示される必要がありますか? それらは必然的な対応と見なすことができますか? それとも、
// より大きな柔軟性を可能にしますか?さらに、レイアウトの大文字化の問題を直接デフォルトにできますか?
// 最初の文字のみ大文字になります。
特別なカテゴリのレイアウト テーブル: snewboard、sstarboard
boardid char[20], // レイアウトの ID
//そのようなテーブルは必要ですか?
レイアウトインデックステーブル: acampus、alinux、afootball。 。 。 。 。 。
id int, // 記事番号、手動で調整しますか? ? ? ?
mark char[1], // 記事マーク、m、g、b、d。 。 。 。
title varchar[100], // 記事タイトル
Writer char[20], // 記事著者 ID
posttime time, // 公開時刻
textnum longint, // 対応する数値? ? ?調整なし
レイアウト記事テーブル
textnum longint, // 記事番号?
textword text, // 記事の内容?
// インデックスと記事コンテンツを分離する必要がありますか?効率の観点から、遅延フラッシュ
// は避けられません。削除するには、最初にマークを付けます。
// ユーザーページの記事の未読データは比較的複雑ですか? これを実現するには、大量のテーブルを作成する必要がありますか?
//
// 投票機能はまだ考慮されていません。 。 。 。
上記は、bbs.txtnovel.com のコンテンツを含む、mysql に基づく bbs.txtnovel.com の bbs デザインを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。