2009-11-17 41 views
0

這是我明白,寫下你對這個數據庫的建議,我有一個在線雜誌的設計:您對我設計的這本雜誌數據庫的想法?

- 一篇文章可以屬於很多類別。
- 一篇文章可以有空或許多照片。
- 一篇文章可以有空或許多標籤。

Table: `tb_categories` 
Columns: 
`cat_id` (Primary Key) 
`catname` 
`parent_id` 

Table: `tb_articles` 
Columns: 
`article_id`(Primary Key) 
`title` 
`subtitle` 
`textbody` 
`source_id` 
`date` 
`remark` 

Table: `tb_sources` 
Columns: 
`source_id` (Primary Key) 
`sourcename` 

Table: `tb_photos` 
Columns: 
`photo_id` (Primary Key) 
`photofilename` 

Table: `tb_tags` 
Columns: 
`tag_id` (Primary Key) 
`tagname` 

Table: `tb_articles_photo` 
Columns: 
`article_id` (Foreign Key) 
`photo_id` (Foreign Key) 

Table: `tb_articles_tags` 
Columns: 
`article_id` (Foreign Key) 
`tag_id` (Foreign Key) 

`tb_articles_categories` 
Columns: 
`article_id` (Foreign Key) 
`cat_id` (Foreign Key) 
+0

null,你的意思是零? – recursive 2009-11-17 14:20:14

+1

有什麼建議?你問這個設計是否「正確」?或者如何實現設計? – 2009-11-17 14:23:45

+1

我也沒有。我會盡我所能來幫助他進行編輯。 – mauris 2009-11-17 14:24:24

回答

0

您的設計看起來很穩固。

確保不能爲NULL的列被限制爲NOT NULL。

每個人都有這些事情不同的想法,但我的建議:

  • 不要前綴名的表名「tb_」 - 它是多餘的。我們知道這是一個表格,因爲它被用於表格被使用的地方,例如從子句和插入或更新語句。
  • 我更喜歡爲他們代表的內容命名錶。如果實體代表一篇文章,則將該表命名爲「文章」。換句話說,使用單數名稱。想想這樣 - 如果我查詢表格並得到一行,我會得到什麼?一篇文章。如果我得到一行包含文章集合的行,我會列出表格文章的名稱。 (但是,沒有「正確」的方式 - 很多人不同意,並且喜歡用複數名稱命名錶)
  • 您可能會考慮不在表名稱中加上前綴。我們知道這是一篇article_id,因爲它在文章表中。然而,這裏又有很多人不同意,也不想在每個表格中看到「ID」列。