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

发布于 2024-10-11 05:46:42 字数 679 浏览 1 评论 0原文

我有一个名为 Pages 的表和一个名为 Categories 的表。 Pages 表的每个条目都链接到Categories 表。 Categories 表有 5 个条目,它们是:CarWebsitesTechnologyMobile Phones< /code> 和兴趣

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

这是我的表格:

Pages

id [PK]
name
url

Categories

id [PK]
Categoryname

Pages2Categories

Pages.id
Categories.id

所以我的问题是,这是在表之间创建这种关系的最有效方法吗?看起来很业余

I have a table named Pages and a table named Categories. Each entry of the table Pages is linked to the table Categories. The Categories table has 5 entries, they are: Car, Websites, Technology, Mobile Phones, and Interest.

So each time I put an entry to the Pages table, I need to map it to the Categories table so are arranged properly.

Here's my table:

Pages

id [PK]
name
url

Categories

id [PK]
Categoryname

Pages2Categories

Pages.id
Categories.id

So my question is, is this the most efficient way to create this kind of relationships between tables? It seems very amateur

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

送舟行 2024-10-18 05:46:42

如果每个页面必须恰好有 1 个类别,请将类别 ID 放入表 Pages 中。

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

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

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

If each page must have exactly 1 category, put the category ID in table Pages.

If each page optionally have one category and most pages does not have one, put the (page_id, category_id) in a separate table with primary key(page_id)

If each page may have several categories, use the approach you suggested.

Don't worry about space or performance at this point.

ι不睡觉的鱼゛ 2024-10-18 05:46:42

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

Since ¨category¨ is an attribute of a ¨page¨, it is best to keep that attribute in the ¨pages¨ table. To save space, you could use an integer/number data type for the ¨category¨ column. e.g 1 = Car, 2 = Websites, 3 = Technology and so forth.

素手挽清风 2024-10-18 05:46:42

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

名称 [varchar]
网址 [varchar]
Category [tinyint]

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

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

我假设您的类别数较少 (<8),如果此计数达到 31,请使用整数代替(每行使用 4 个字节而不是 1 个字节)。现在,页面表中的类别不必是其他表的 FK。如果 URL 属于多个类别,则可以在 jdbc 代码中对插入/更新执行逻辑 OR 操作,对选择执行 AND 操作。可能不是最好的数据库设计,但这应该最大限度地减少您消耗的数据库空间,以防您必须保存数百万页。从你的问题陈述中,我不明白为什么你需要表中的 PK...消除它以在每行中节省更多字节。问候, - MS

One suggestion: Have 2 tables - "pages" and "category". Columns in pages are:

Name [varchar]
URL [varchar]
Category [tinyint]

For Category, as you designed:

catID [1|2|4|8|16] (5 possible values for 5 categories)
catName [varchar]

I assume you have a small # of categories (<8), if this count goes upto 31, use an integer instead (using 4 instead of 1 byte per row). Now Category in the pages table need not be an FK to the other table. You could do a logical OR for insert/update and AND for select in your jdbc code if an URL belongs to more than 1 category. May not be the best DB design, but this should minimize the db-Space you consume, in case you have to save millions of pages. From your problem statement, I do not see why you need a PK in the table... eliminate it to save a few more bytes in every row. Regards, - M.S.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文