作为背景,我是我所在系的两位开发人员之一。我在高中一年级(1986年)进入计算机,没有受过正规教育。我在1994年进入了MS Access,从2003年开始更加认真。我是自学成才,我一直尽力学习数据库设计,虽然我相信我知道的很多但我也知道我不知道一切。
我部门的其他开发人员根据他的简历,拥有计算机科学学位,并且从事IT工作,包括网页设计和数据库设计,已有8年。他去年12月被聘为我的部门。对于我对数据库设计和SQL基础知识的基本缺乏了解,我一直很惊讶,并且一直试图弄清楚问题的至少一部分是否是我期待的太多或者可能不是我知道的事情和我想的一样多。
因此我的问题。请注意我们是100%MS Access,但我相信这个问题适用于任何SQL数据库。该开发人员的任务是获取电子表格并将其转换为数据库。电子表格的一部分涉及跟踪电池库存。在电子表格中,列标题为日期和计数。但是日期列中的数据是日期和批号的混合。因此,这个开发人员创建了一个带有数字字段的表,用于包含批号和日期,以及第二个名为IsDate的布尔字段,用于指示字段中的值。
我不同意这种方法,并且会创建两个单独的字段,日期的日期字段和批次编号的数字字段。当我提出这种方法时,他似乎不仅不明白为什么,而且还要对改变他的设计感到有点生气。
您会推荐哪种方法?此外,假设每个人都同意我的方法 - 当然你会! ;) - 如果你有一个具有这种经验水平的开发人员,你会认为他值得保留并值得投入时间和精力来教育他吗?
答案 0 :(得分:4)
我自己的经验法则是:
始终将数据保留为本机数据类型。
这有助于比较,排序,查找和分组 - 尤其是在数据库中 - 并使您的存储不易出现查询错误。此外,访问数据时不需要使用其他谓词(AND isdate
)。因此,我认为你的方法是正确的。
你的同事的方法似乎不是高等教育的问题,而是个人方法之一。我见过有博士学位的工作人员,他们可以很好地听取一个有充分理由的论点,以及那些犯了严重错误并且不会听取礼貌建议的新生。
答案 1 :(得分:3)
我绝对会将日期和批号存储在相应类型的不同字段中 - 每个字段都设置相关内容,如果没有可用值,则设置为NULL。通过这样做,您可以查看实际可用的数据并对该数据执行有意义的操作。
关于你的第二个问题,我想当你问他们为什么选择他们所采用的方法时,这真的取决于有问题的开发人员说了什么。
答案 2 :(得分:2)
你是对的。
只有在严格的内存限制下(注意可能)才能接受这种架构。
至于与他打交道,我首先会和他谈谈并说明他为什么选择给定的方法,这在10年前的Access数据库中可能很常见(但即使这样,也有足够的磁盘和内存空间)不必做这些伎俩)。
他不愿意谈论他的设计,这比他的设计本身更能说明他的能力。即使是最误导的设计也应该基于结构化的方法或想法。在我看来,错误并不是坏事,创建随机结构是一件坏事。但不知道你的要求,很难说是否值得保留他。
你们其中一个人是“高级”等级制度还是你们分担责任?
答案 3 :(得分:0)
指出他这样做会打破first normal form。能够描述1NF 2NF和3NF,然后试着用你喜欢的裤子知识给他留下深刻的印象。