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

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;

--
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 ạ
s.code viết 12:48 ngày 10/10/2018
Thiếu chứ ko có thừa.

Bảng category nhìn như vậy là chỉ có một ngôn ngữ.
thuyduongcd viết 12:47 ngày 10/10/2018
Mỗi người thiết kế DB đều có ý đồ riêng, không thể chỉ nhìn vào mà biết thiếu hay thừa.
juga viết 12:58 ngày 10/10/2018
hì em hiểu rồi,suy nghĩ mải mới ra,hình như ko thừa

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 ạ
ngoc_viet08 viết 12:52 ngày 10/10/2018
làm 1 bảng cho article và 1 bảng cho category thôi . có thể extends ra nhiều ngôn ngữ .

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 đề
Bài liên quan
0