首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模式设计问题

模式设计问题
EN

Stack Overflow用户
提问于 2010-10-12 00:34:10
回答 2查看 110关注 0票数 1

我有一个行业查询表: ID,姓名。

我有其他行业属性,如工业部门,行业服务,工业产品等。这些都是每个行业的必备属性,因此任何行业都将输入这些数据。这些数据是固定列表项,如行业部门=(一级、二级、三级)。在现场,这些值将是自动建议或单选下拉列表值。此外,这些将被用作搜索过滤器,以进一步过滤网站上的行业。这些将用于像->这样的报告,只显示来自你的朋友的属于第一产业的公司的数量。

对于模式,我认为有两种设计方法:

1)行业查询表将以文本形式包含所有这些附加数据

2)额外的数据将被存储为ID,FK引用这些ID到它们的查找表。

3)对其他设计思想也持开放态度。

#1的问题是不会强制执行数据质量。

with# 2的问题是有许多固定列表项,因此每个项都有自己的查找表,这意味着将有大量的查找表和父表的FK。

我不确定在大型系统的现实世界中,这是如何做到的。行业只有一个实体;我有很多实体,每个实体至少有40-50个固定列表项(列),那么哪种方式更好?对于更多的信息,这是一个用户内容网站-专业的网络网站,所以性能很重要。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2010-10-12 00:47:19

使用选项2:如果测量执行多个连接对性能的影响,首先确保查询工作负载具有正确的索引,然后如果连接性能仍然是一个问题,则可以进行非正规化。

票数 2
EN

Stack Overflow用户

发布于 2010-10-12 00:56:00

这些都是每个行业的必需属性,因此输入的任何行业都将具有这些数据

但这种情况会一直存在吗?也就是说,可以删除或添加属性吗?这在大多数应用程序中都是可能发生的,这意味着您将删除/添加列来实现此操作。这至少会让你考虑制作这些行,而不是列。

所以我建议#3:

而不是每个属性都有查询表,只有一个。这样你总共有四个表:

代码语言:javascript
运行
复制
industries (id, name)
industry_property_names (id, name) // Contains the name of the property, e.g., Industry sector
industry_property_values (id, industry_property_name_id, name) // Primary, Secondary, tertiary
industry_properties ( (pk: industry_id, industry_property_name_id), industry_property_value_id)

在数据输入期间需要一些代码强制执行,但属性将是动态的,查找将相对较快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3908136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档