对不起我的英语(我在意大利发帖)和(如果可能的话)用简单的语言回答我(谢谢)
我想让你知道我不是一个专业的程序员:我只是编程的粉丝。
问题在于: 我要创建一个包含四个字段的表,其中包含重复的6,20,165和大约500个可能的值(所有varchar在10和50之间)。
我的第一个想法是使用只有一个字段(主键)和四个一对多关系的四个表。
后来我读到了Enum类型的数据,并寻找使用此解决方案的方法(因为我认为使用所有这些varchar将吸收许多字节)。
我已经阅读了很多关于Enum类型的优点和缺点的网页,但我仍然有很多疑问。
我对Enum类型的问题是: 1)我不需要空字符串(因此我必须通过在严格模式下工作来避免任何插入错误); 2)我害怕改变Enum和其他数据之间的关联(例如,如果Enum值消失,我需要将其数据拆分给其他数据)
所以,我害怕使用Enum,我想到了使用第三种解决方案:
鉴于Enum类型使用数组的数字id而不是varchar,我考虑在四个表中插入一个Id列(数字),并使用表中的四个ID和数据而不是字符串值。
现在的问题是: 使用第三种方法,与使用Enum提取字符串数据相比,我需要一个非常复杂的查询。 因此,我不知道哪个是保存字节的最佳选择,而不会浪费时间来提取数据。
你能建议我做出选择吗?
如何计算查询变得缓慢的行限制?
提前感谢任何能帮助我的人。
答案 0 :(得分:0)
ENUM类型适用于存储少量不应更改的值。
您的场景很常见,标准做法是创建四个引用表,每个引用表都带有ID字段和字符串值字段,然后将这些ID存储在主表中。
定义外键约束可以确保数据完整性,并且使用索引可以快速查询,不要担心这一点。
查询不会很复杂,只需要四个连接。也可以创建一个视图,以避免在不同的查询中重复连接。
此解决方案更灵活,更易于管理或移植。