>백엔드 개발 >PHP 튜토리얼 >bbs.txtnovel.com mysql 기반 게시판 디자인 (2)

bbs.txtnovel.com mysql 기반 게시판 디자인 (2)

WBOY
WBOY원래의
2016-07-29 08:33:593711검색

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] 기본 키, // 정렬 키, id, 모두 소문자입니다.
passwd char[20], // 비밀번호, 암호화된 암호문을 저장합니다.
realid char[20], //실제 ID, 대소문자 혼합.
username char[24], // 사용자 이름
userlevel longint, // 권한이 64가지?
numlogins int,
numposts int,
firstlogin time,
lastlogin time,
staytime time, /* 총 체류 시간*/
lasthost char[32],
email varchar[100],
address varchar[100],
// 다른 데이터가 필요합니까? 나중에 테이블을 변경할 수 있도록 특정 예약된 값을 별도로 설정해야 합니까?
// 새 필드를 추가할 때 얼마나 효율적인가요?
레이아웃 분류 테이블: sclass
classnum int Unique, // 분류 식별자
classid char[20], // 분류 영어 id: 컴퓨터
classname varchar[100], // 분류 중국어 설명: Computer World
classtable char[20], // 특수 카테고리에 해당하는 레이아웃 테이블
// 일반적으로 각 레이아웃은 첫 번째 섹션과 같은 특수 카테고리에만 속합니다.
/ / 새로운 레이아웃은 특수 테이블로 기술 가능
레이아웃 테이블 : sboard
Boardnum int Unique, // 보드 식별 (꼭 필요한가요?)
Boardid char[20], // 영문 이름 the board
boardname varchar[100], // 보드의 중국어 이름
boardclass char[20], // 보드가 속한 카테고리
boardsysop varchar[100], // Bamboo 목록
Boardposts int, // 포럼의 글 개수
Boardlevel int, // 포럼의 읽기 및 쓰기 권한
indextable char[20], // 포럼에 해당하는 인덱스 테이블 이름 : 탑승했어?
texttable char[20], //레이아웃에 해당하는 기사 테이블 이름: bboardid?
// 마지막 두 항목이 반드시 나타나야 하나요? 불가피한 대응으로 간주할 수 있나요? 아니면
// 더 큰 유연성을 허용해야 하나요? 게다가 레이아웃의 대문자 문제를 바로
// 첫 글자만 대문자로 할 수 있는지,
특수 카테고리 레이아웃 테이블: snewboard, sstarboard
Boardid char[20], // The 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(2)을 기반으로 한 bbs.txtnovel.com의 bbs 디자인을 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.