请建议设计我的数据库的最佳方法

时间:2011-01-09 08:40:15

标签: database database-design

我有一个名为Pages的表和一个名为Categories的表。表Pages的每个条目都链接到表CategoriesCategories表有5个条目,分别为:CarWebsitesTechnologyMobile PhonesInterest

因此,每次我将一个条目放入Pages表时,我需要将其映射到Categories表,以便正确排列。

这是我的表:

信息页

id [PK]
name
url

分类

id [PK]
Categoryname

Pages2Categories

Pages.id
Categories.id

所以我的问题是,这是在表之间创建这种关系的最有效方法吗?这似乎非常业余

3 个答案:

答案 0 :(得分:2)

如果每个页面必须只有1个类别,请将类别ID放在表格页面中。

如果每个页面可选择有一个类别且大多数页面没有一个,请将(page_id,category_id)放在带主键的单独表格中(page_id)

如果每个页面可能有多个类别,请使用您建议的方法。

此时不要担心空间或性能。

答案 1 :(得分:1)

由于“分类”是“页面”的属性,因此最好将该属性保存在“页面”表中。为了节省空间,可以使用“分类”列的整数/数字数据类型。例如1 = Car,2 =网站,3 =技术等等。

答案 2 :(得分:0)

一个建议:有2个表 - “页面”和“类别”。页面中的列是:

名称[varchar] 网址[varchar] 类别[tinyint]

对于类别,按照您的设计:

catID [1 | 2 | 4 | 8 | 16](5个类别的5个可能值) catName [varchar]

我假设您有一小部分类别(< 8),如果此计数达到31,则使用整数(使用4而不是每行1个字节)。现在,pages表中的Category不必是另一个表的FK。如果URL属于多个类别,则可以在jdbc代码中为插入/更新和AND执行选择逻辑OR。可能不是最好的数据库设计,但这应该最小化您使用的db-Space,以防您需要节省数百万页。从你的问题陈述中,我不明白为什么你需要在表中使用PK ...消除它以在每一行中保存更多的字节。问候, - M.S。