我有一个名为Pages
的表和一个名为Categories
的表。表Pages
的每个条目都链接到表Categories
。 Categories
表有5个条目,分别为:Car
,Websites
,Technology
,Mobile Phones
和Interest
。
因此,每次我将一个条目放入Pages
表时,我需要将其映射到Categories
表,以便正确排列。
这是我的表:
信息页
id [PK]
name
url
分类
id [PK]
Categoryname
Pages2Categories
Pages.id
Categories.id
所以我的问题是,这是在表之间创建这种关系的最有效方法吗?这似乎非常业余
答案 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。