
写在前面:小编的话
大家好,在前两节课中,我们已经介绍了Oracle 数据库中各种类型的表,以及构成表的非常重要的元素:列和数据类型。在今天的课程中,我们将介绍一个非常重要的概念:数据建模。
按照维基的说法,“在软件工程中,数据建模是运用正式的数据建模技术,建立信息系统的数据模型的过程...数据建模定义的不只是数据元素,也包括它们的结构和它们之间的关系”。如果把表和列比作建筑材料,那么数据建模就类似于建造房子的过程。大家都知道数据模型有3种,即概念模型,逻辑模型和物理模型。建造房子也一样,也有最初的构想,图纸设计和物理建造。
然后维基又说:“数据建模是一种用于定义和分析数据的要求和其需要的相应支持的讯息系统的过程”。这里强调的是,数据建模是业务导向的,不是建立空中楼阁。因此要建立一个完善的数据模型,除了数据库技能外,对业务准确的把握和透彻的理解也是必不可少的。
数据模型设计会影响到未来系统的性能、安全性和可维护性。敏捷的数据模型可以随着业务需求的变化不断调整,应付自如,而僵化的数据模型则会为了应对各种变化疲于奔命,最终轰然倒塌。
关于数据建模,小编推荐一个Oracle的免费工具SQL Developer Data Modeler,已包含在SQL Developer中,也可以单独下载。可以进行数据模型设计,也可以对已有的数据库模型进行提取。
好了,在正式上课之前,我们还是要强调一下如何学习这些课程。我们做的最主要的工作是将Dev Gym上的视频翻译为中文。实际上每一节课包括4部分:
1)看我们翻译的视频,每一集只有几分钟。
2)上Live SQL做配套练习
3)小测验(选择题)
4)进一步学习(参考资料)
由于原网站有完整的评分积分,实操练习和问题讲解体系,因此我们希望您在看完视频后,仍回到Dev Gym(https://devgym.oracle.com/)网站完成余下的操作,而且最终可以得到结业证书。点击文末“原文链接”可访问原课程页面。
以下为开发者初级课的课程设置:
第2课: Columns and Data Types (列和数据类型)
第3课: Data Modeling (数据建模)<- 我们在这里
第4课: Select and Where (SELECT和WHERE语句)
第5课: Joins (联结)
第6课: Aggregates and Group By (聚合与GROUP BY)
第7课: Insert and Commit (插入和提交)
第8课: Update and Transactions (更新和事务)
第9课: Delete and Truncate(删除和清空)
好了,下面正式开始上课。
Oracle开发者初级第3课:数据建模
翻译花絮:美食时间
Photo by Chad Montano on Unsplash
今天的视频真是吃货的福利,其中重点介绍了一种西方美食:Pancake,也就是煎饼。对于中国胃的小编,一提到煎饼就会想到山东大煎饼,天津煎饼果子,...。Pancake用的饼是扁平的圆形,有点类似铜锣烧或松饼,据说是史前社会中最早和最普遍食用的谷物食品。
如果光有这个饼,那么今天的课就讲不下去了。Pancake中还有很重要的一部分,topping和filling。所以Chris老师会认为只要Pancake中饼的人是个weirdos(怪人)。filling就是馅料,如煎饼中夹的火腿肠,鸡蛋,生菜。Pancake中可以夹果酱、奶油、巧克力或坚果等。topping即浇头或盖码,就像米粉和面条上加的肉酱,番茄鸡蛋,酸豆角,卤牛肉等,而Pancake一般用水果和蜂蜜。
Photo by 8-Low Ural on Unsplash
然后就是3分21秒的这张图。考虑到作者制作这张图不容易,加之小编对美食的热爱,也就稍微介绍一下吧。
先来说简单点的。Sugar Free,GMO(Genetically Modified Organism) Free指不含糖和不含转基因;Egg Free、Dairy free和Nuts Free指不含蛋类、不含乳制品和不含坚果。Low Carb指低碳水化合物,最主要就是糖,淀粉。Raw指生食,如三文鱼刺身:
Photo by Jongsun Lee on Unsplash
Organic food指有机食品。Locally Grown指当地食品,也就是食物的消费地离其生产地很近,要当季的,新鲜的。Healthy food指健康食品,不过这个定义可能比较宽泛,可以考虑和垃圾水平相对应。
下面这几个小编没接触过,费劲查了一下。Mediterranean是地中海饮食,就是环地中海地区及国家,如希腊、西班牙等的传统饮食型态。大量蔬菜水果作为点心,以橄榄油为主要脂肪来源,也可以有适量鱼和蛋等。
Photo by Sam Moqadam on Unsplash
Vegetarian指素食,Vagan表示纯素,实际是从Vegetarian头尾各取几个字母。对于蛋、奶等不杀害动物也能获取的动物产出品,有些素食主义者是可以吃的,而纯素则不予考虑。
Photo by Dan Gold on Unsplash
Keto即生酮饮食,就是高脂肪,充足蛋白质,极低碳水化合物饮食。这种饮食的特点是强迫身体燃烧脂肪而非碳水化合物,进而产生酮体,这实际是一种饮食疗法,主要用来治疗癫痫;最后这个Paleo就比较猛了,指原始人饮食。这既是饮食也是养生方式,指吃牧草饲喂的肉制品,新鲜水果蔬菜,多运动、每日至少睡8个小时、接触大自然和微生物,排斥谷物、牛奶和豆类。以小编粗浅的理解,烤牛羊排和手把肉都属于这一类,我爱原始人饮食,。
Photo by Loija Nguyen on Unsplash
最后一个翻译中涉及到的是milk,小编很自然的想到了牛奶。其实,milk也可以泛指奶制品,如视频中提到的Almond milk(杏仁奶)和Soy milk(豆奶),其它还有Coconut milk(椰奶),Oat Milk(燕麦奶),Rice Milk(米浆),Cashew Milk(腰果奶),Macadamia Milk(澳洲坚果奶),Hemp Milk(麻奶),Quinoa Milk(藜麦奶)。
Photo by Brian Suman on Unsplash
有点跑题,不过这篇文章真是适合边吃早饭边看,中式和西式的都有了,祝您用餐愉快!
写在后面:小编的话
先再次强调,看完视频后,建议大家回到Dev Gym网站做练习和测验题,学习效果会更好。链接如下:
https://devgym.oracle.com/pls/apex/dg/class/databases-for-developers-foundations.html
今天的课程中,Chris老师用一个煎饼的例子介绍了关系模型和文档模型,并介绍了它们之间的区别。像文档模型一样,把煎饼所有配料放到一起采购会比较方便。但如果考虑到食客对煎饼的个性化需求,调整配菜和定价就涉及到数据一致性的问题。所以,正想Chris老师说的:
Everything's a trade-off there are very few one-size-fits-all solutions. What works for someone else may not work for you. (一切都是一种权衡,很少有一刀切的解决方案。对别人有用的东西不一定适合你)。
说到文档建模,小编推荐大家去上一下芒果大学的免费课程,M320:Data Modeling。另外一门课程,M001:MongoDB Basics也值得推荐。
M320介绍了MongoDB文档建模中的12种设计模式,并与常见需求如文档管理,物联网,移动等做了映射。对于每一种需求,可能会有5到9种模式可以选择。
小编学完这么课程的感受是,文档模型有其灵活性,但是也有其代价,例如一致性的维护,例如应用代码层面的补偿等,有点前松后紧的感觉。而关系模型在设计时的工作量要严格些,要多些,如果前面搭建得当,后期就会很轻松,有点前紧后松的感觉。总之,任何硬币都有其两面,关系模型也好,文档模型也罢,都有其用武之地,在一些大系统中两者配合也很常见。我们需要做的就是认真学习今天的课程,学懂弄通,在实际项目中运用和积累经验。
好了,今天的课就到这里,你学废了吗,。
其实今天谈的数据建模是一个非常大的话题,用户的业务纷繁复杂,设计师的风格也五花八门。那么,最终您的数据模型是什么样子的呢?小编最后为大家献上一首由林志炫翻唱的歌曲《你的样子》,祝大家周中愉快!
编辑,字幕翻译:萧宇
字幕制作:Barbara Huang