Php 模式设计问题
我有一个行业查找表:ID,Name 我有其他行业属性,如行业部门、行业服务、行业产品等。这些都是每个行业所需的属性,因此输入的任何行业都将有这些数据。这些数据是固定的列表项,如工业部门=初级、二级、三级。在现场,这些值将是自动建议值或单选下拉列表值。此外,这些将被用作搜索过滤器,以进一步过滤网站上的行业。这些将被用于报告,比如->显示属于初级产业的公司数量,只显示你的朋友 对于schema,我看到了两种设计方法: 1行业查找表将所有这些附加数据作为文本 2附加数据将存储为ID,FK引用其查找表。 3对其他设计理念也持开放态度 1的问题是不会强制执行数据质量。 2的问题是有许多固定列表项,因此每个项都有自己的查找表,这意味着父表将有大量的查找表和FK 我不确定在大规模系统的现实世界中,这是如何做到的。工业只是一个实体;我有很多实体,每个实体至少有40-50个固定列表项列,那么哪种方式更好?更多信息,这是一个用户内容网站-专业的网络网站,所以性能很重要 建议?选择选项2:如果您衡量了执行多个联接对性能的影响,请首先确保为查询工作负载提供了正确的索引,然后如果联接性能仍然是一个问题,则可能进行非规范化 这些都是所需的属性 每个行业都是如此,任何行业都是如此 输入将有这些数据 但情况会一直如此吗?也就是说,可以删除或添加属性吗?这在大多数应用程序中都可能发生,这意味着您将删除/添加列以实现这一点。这至少会让你考虑制作这些行,而不是列。 因此,我建议3: 与其为每个属性提供查找表,不如只提供一个。这样,您总共有四个表:Php 模式设计问题,php,database,schema,Php,Database,Schema,我有一个行业查找表:ID,Name 我有其他行业属性,如行业部门、行业服务、行业产品等。这些都是每个行业所需的属性,因此输入的任何行业都将有这些数据。这些数据是固定的列表项,如工业部门=初级、二级、三级。在现场,这些值将是自动建议值或单选下拉列表值。此外,这些将被用作搜索过滤器,以进一步过滤网站上的行业。这些将被用于报告,比如->显示属于初级产业的公司数量,只显示你的朋友 对于schema,我看到了两种设计方法: 1行业查找表将所有这些附加数据作为文本 2附加数据将存储为ID,FK引用其查找表。
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)
在数据输入期间需要一些代码强制执行,但属性将是动态的,并且查找速度相对较快