2012-09-10 53 views
8

Tôi muốn thêm một tính năng blog rất đơn giản trên một trong các trang LAMP hiện có của tôi. Nó sẽ được gắn với hồ sơ hiện có của người dùng và họ có thể chỉ cần nhập tiêu đề và nội dung cho mỗi bài đăng trong blog của họ và ngày sẽ được tự động đặt khi gửi. Họ sẽ được phép chỉnh sửa và xóa bất kỳ bài đăng và tiêu đề blog nào vào bất kỳ lúc nào. Blog sẽ được hiển thị từ gần đây nhất đến cũ nhất, có lẽ 20 bài đăng lên một trang, với phân trang thích hợp ở trên đó. Những người dùng khác có thể để lại nhận xét trên mỗi bài đăng mà chủ sở hữu blog sẽ được phép xóa nhưng không được kiểm duyệt trước. Đó là về cơ bản nó. Như tôi đã nói, rất đơn giản.Làm thế nào để cấu trúc các bảng của một blog rất đơn giản trong MySQL?

Tôi nên cấu trúc bảng MySQL như thế nào?

Tôi giả định rằng vì sẽ có các bài đăng trên blog và nhận xét, tôi cần một bảng riêng cho từng mục, đúng không? Nhưng sau đó tôi cần những cột nào trong mỗi bảng, tôi nên sử dụng cấu trúc dữ liệu nào và tôi nên liên kết hai bảng này với nhau như thế nào (ví dụ: bất kỳ khóa ngoại nào)?

Tôi không thể tìm thấy bất kỳ hướng dẫn nào về điều này và những gì tôi đang thực sự cung cấp cho người dùng phiên bản blog đơn giản nhất có thể. Không có thẻ, không kiểm duyệt, không có hình ảnh, không có định dạng ưa thích, vv Chỉ cần một nhật ký đơn giản, văn bản thuần túy blog với bình luận của người dùng khác.

+0

Trông giống như bài tập về nhà Cho biết bạn đã thử và triển khai thực hiện điều gì? – djadmin

+3

@djadmin: Xem lịch sử của tôi trên Stack Overflow. Tôi chắc chắn không có sinh viên. Tôi chưa thử thực hiện bất kỳ điều gì vì đây là trang web sản xuất. Tôi không làm "thử nghiệm và lỗi" trên các trang web trực tiếp, trước tiên tôi tìm ra cách tốt nhất để triển khai một cái gì đó, và sau đó tôi thực hiện điều đó. Đó là những gì tôi đang cố gắng tìm ra. – ProgrammerGirl

+0

Hãy xem cách bất kỳ công cụ viết blog nào tồn tại thực hiện nó. Có rất nhiều ví dụ để xem xét. – ceejayoz

Trả lời

19

Tôi muốn nói bạn cần bảng sau

Posts 
    PostID (identity) 
    PostTitle (varchar) 
    PostDate (datetime) 
    Deleted (int) 
    OwnerID (int FK to Users) 

PostDetails 
    PostDetailID (identity) 
    PostID (FK to Posts) 
    Sequence (int) -> for long posts you order by this 
    PostText (text) 

Comments 
    CommentID (identity) 
    Comment (text) 
    CommenterID (int FK to Users) 
    CommentDate (datetime) 
    Deleted (int) 

Users 
    UserID (identity) 
    UserNAme (varchar) 
    UserEmail (varchar) 
    CreatedDate (datetime) 
    Active (int) 

Tất cả các lĩnh vực datetime mặc định đến thời điểm hiện tại, tất cả các lĩnh vực nhận dạng là PK Các lĩnh vực chuỗi trong bài viết chi tiết là có trong trường hợp bạn không sử dụng các loại văn bản và đi với varchar, do đó bạn có thể chia một bài viết trên một số hồ sơ.

Khác với điều này, tôi sẽ xem xét bất kỳ hệ thống viết blog nguồn mở nào và xem những gì họ đã làm và trừ đi những gì tôi không cần.

Hy vọng rằng sẽ giúp

+0

Thú vị, cảm ơn. Bạn có thể giải thích tại sao bạn đề xuất tạo bảng "PostDetails" riêng biệt thay vì kết hợp các cột của nó với bảng "Bài đăng" không? – ProgrammerGirl

+1

Hai lý do: Đầu tiên là tách dữ liệu để tạo mối quan hệ chính/chi tiết (vì cách này bạn không cần phải mang theo bài viết rất dài khi bạn muốn tiêu đề) và thứ hai là thực tế bạn có thể kết thúc lên vượt quá khả năng lĩnh vực (có thể không phải là một vấn đề với một lĩnh vực văn bản, nhưng nếu bạn đi với varchar, mà tôi muốn làm, có nghĩa là bạn có một chiều dài tối đa cố định cho mỗi hàng). Tất cả trong tất cả chỉ là vấn đề ưu tiên tôi muốn tách thông tin càng nhiều càng tốt –

+0

Bạn có thể giải thích cách sử dụng cột Trình tự (int) mà bạn đã sử dụng trong bảng PostDetails trong câu trả lời của bạn không? Cột Trình tự được sử dụng để làm gì? – bobble14988

Các vấn đề liên quan