10/10/2018, 10:43
Xin hỏi thiết kế database
Em làm trang 2 web có 2 ngôn ngữ cả nội dung và giao diện
Em có tìm hiểu 1 vài nguồn thì thấy người ta thiết kế như vậy
Người ta chia làm 4 bảng
Thiết kế như vậy có bị dư thừa 1 bảng phải ko ạ
Em thấy cái bảng Article và article_lang có thể nhập vào làm một được
còn cái trường "name" ở bảng article có phải là trường "title" ở bảng Articlelang phải ko mấy bác ?
Ý của em là khi post 1 bài thì cùng luc post 2 ngôn ngữ và có cùng Id_article,và trong bảng Article_lang thì sẽ có xuất hiện các cặp Id_article giống nhau như vậy có tối ưu ko mấy bác
Mấy bác làm mấy cái này rồi hướng dẫn em với ạ
Em có tìm hiểu 1 vài nguồn thì thấy người ta thiết kế như vậy
Người ta chia làm 4 bảng
Code:
-- CREATE TABLE IF NOT EXISTS `article` ( `id_article` int(11) unsigned NOT NULL AUTO_INCREMENT, `id_category` int(11) unsigned NOT NULL, `name` varchar(55) DEFAULT NULL, PRIMARY KEY (`id_article`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -- CREATE TABLE IF NOT EXISTS `article_lang` ( `id_article` int(11) unsigned NOT NULL, `id_lang` varchar(3) NOT NULL, `title` varchar(255) DEFAULT NULL, `content` text, PRIMARY KEY (`id_article`,`id_lang`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- CREATE TABLE IF NOT EXISTS `category` ( `id_cat` int(11) unsigned NOT NULL AUTO_INCREMENT, `name_cat` varchar(50) NOT NULL, `order_cat` int(11) NOT NULL, PRIMARY KEY (`id_cat`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- CREATE TABLE IF NOT EXISTS `lang` ( `id_lang` varchar(3) NOT NULL, `name_lang` varchar(40) NOT NULL, `order_lang` int(11) DEFAULT NULL, PRIMARY KEY (`id_lang`), UNIQUE KEY `name_lang` (`name_lang`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; --
Em thấy cái bảng Article và article_lang có thể nhập vào làm một được
còn cái trường "name" ở bảng article có phải là trường "title" ở bảng Articlelang phải ko mấy bác ?
Ý của em là khi post 1 bài thì cùng luc post 2 ngôn ngữ và có cùng Id_article,và trong bảng Article_lang thì sẽ có xuất hiện các cặp Id_article giống nhau như vậy có tối ưu ko mấy bác
Mấy bác làm mấy cái này rồi hướng dẫn em với ạ
Bài liên quan
Bảng category nhìn như vậy là chỉ có một ngôn ngữ.
vì trong bảng article_lang sẽ có 2 id_article trùng nhau tượng trưng cho 2 ngôn ngữ nên khi post 1 bài viết ko thể post cái id được vì ko ai rổi hơi post cái id_article và việc này rất phức tạp mà cho nó ra riêng 1 bảng article rồi cho thuộc tính AUTO_INCREMENT
Nhưng em ko hiểu cái trường name trong bảng article cho vào làm gì nữa ?????
Còn bảng category hình như thiếu,nhưng em thấy category thì thường khoang 10-20 row đổ lại nên có thể dùng cách translate chứ nhỉ,mong mấy bác góp ý chỉ bảo thêm ạ
ví dụ :
<<--vn--<<nội dung trong tiếng việt >>--vn-->><<--en--<<content in english >>--eb-->>
tuy nhiên chắc sẽ nhiều ý kiến phản đối . ko có gì hoàn hảo cả . nó sẽ có nhiều vấn đề