Khi bắt đầu xây dựng một website. Công việc đầu tiên cần phải làm là phân tích, thiết kế cơ sở dữ liệu. Mình sẽ viết hướng dẫn xây dựng cơ sở dữ liệu và code từng bước để có thể xây dựng 1 website hoàn chỉnh
Chúng ta hãy bắt đầu với 2 bảng cơ bản của 1 website. TB_Categoty, TB_News
Tiếp theo bài này là Xây dựng cơ sở dữ liệu phần 2 - TRIGGER
Bạn hãy thiết kế theo Diagram như sau:
-- Ngoài các trường như trong Diagram có thể có thêm các trường khác tùy theo yêu cầu của website
1. Category
CateID Mã chuyên mục - sẽ được sinh tự động khi tạo mới
ParentID int Mã chuyên mục cha.
CateName: Tên chuyên mục. VD: Tin tức, Tin thể thao …
Decen phân cấp của chuyên mục (thể hiện menu)
Depth độ sâu của chuyên mục (Bắt đầu từ 0)
Link Liên kết thực
Picture Hình ảnh đại diện cho chuyên mục
CssClass Định dạng hiển thị
Active Trạng thái.
-- Trường Decen và Depth cần được sinh tự động bằng các viết các TRIGGER. Mình sẽ giới thiệu ở bài sau
-- Trường CssClass cũng sẽ được sinh tự động khi thêm mới hoặc cập nhật nhưng sẽ được thực hiện trong Procedure spTB_Category_Edit sẽ được giới thiệu ở bài sau
Vì bảng TB_Category cũng là bảng thể hiện menu đa cấp được mô tả như sau (Minh họa):
[CateID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
[ParentID] [int] NULL,
[CateName] [nvarchar](250) NOT NULL,
[Decen] [int] NULL,
[Depth] [varchar](150) NULL,
[Link] [nvarchar](250) NULL,
[Picture] [varbinary](250) NULL,
[Target] [nvarchar](10) NULL
CONSTRAINT [DF_TB_Category_Targer]
DEFAULT (N'_self'),
[CssClass] [nvarchar](50) NULL,
[Active] [int] NOT NULL
CONSTRAINT [DF_TB_Category_Flag]
DEFAULT (1),
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[TB_Category]
WITH NOCHECK ADD
CONSTRAINT [FK_TB_Category_TB_Category] FOREIGN KEY([ParentID])
REFERENCES [dbo].[TB_Category] ([CateID])
GO
ALTER TABLE [dbo].[TB_Category]
CHECK CONSTRAINT [FK_TB_Category_TB_Category]
GO
ALTER TABLE [dbo].[TB_Category]
WITH NOCHECK ADD
CONSTRAINT [CK_TB_Category] CHECK (([CateID] <> [ParentID]))
GO
ALTER TABLE [dbo].[TB_Category] CHECK CONSTRAINT [CK_TB_Category]
2. TB_News
idNews: Mã bài viết - Sẽ được sinh tự động khi tạo mới
CateID: Mã chuyên mục
UserName: Tên đăng nhập (Người viết bài)
Title: Tiêu đề bài viết
Description: Tóm tắt nội dung bài viết
Content: Nội dung bài viết
Author: Tác giả vài viết
Picture: Ảnh đại diện cho bài viết
CreateDate: Thời gian viết bài
PublishDate: Thời gian đăng bài
Status: Trạng thái bài viết
Numberreads: Số lần xem bài viết
Link: Url của bài viết
-- Create by webmaster@hmweb.com.vn
CREATE TABLE [dbo].[TB_News](
[idNews] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
[CateID] [int] NOT NULL,
[UserName] [nvarchar](50) NOT NULL,
[Title] [nvarchar](500) NOT NULL,
[Description] [ntext] NULL,
[Content] [ntext] NULL,
[Author] [nvarchar](150) NULL,
[Picture] [nvarchar](255) NULL,
[CreateDate] [datetime] NOT NULL,
[PublishDate] [datetime] NULL,
[Status] [int] NULL,
[Numberreads] [int] NULL,
[Link] [nvarchar](150) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[TB_News] WITH NOCHECK ADD CONSTRAINT [FK_TB_News_TB_Category]FOREIGN KEY([CateID])
REFERENCES [dbo].[TB_Category] ([CateID])
GO
ALTER TABLE [dbo].[TB_News] CHECK CONSTRAINT [FK_TB_News_TB_Category]