情感分类如何转化为观点挖掘
今天,我想谈谈MySQL 5中引入的一项新功能:视图。
视图就像查询快照。 您可以将任何查询保存为视图,甚至可以将具有联接和子查询的复杂查询保存为视图,而MySQL会将查询的结果保存为一种可以像表一样搜索(在某些情况下可以修改)的格式。 但是与表不同,您不必担心更新视图中的数据。 MySQL为您处理所有细节!
出于示例目的,让我们假设您为Wally的Widget Works构建了一个数据库。 Wally's的好伙伴们决定,他们需要跟踪他们生产的各种小部件。 为了简化对不同小部件的排序,他们决定给每个小部件一个或多个“标签”,以描述该小部件的功能或用途的某些方面。
因此,您从一个看起来像这样的数据库开始:
- Data_Widgets(`widgetid`序列,`desc` varchar)
- Data_Tags(`tagid` serial,`desc` varchar)
- Map_WidgetTag(`widgetid` bigint,`tagid` bigint)
由于每个Widget可以具有多个标签,并且每个标签可以与多个Widget相关联,因此我们有一个数据库设计教授最喜欢的演讲主题:多对多关系。
假设我们要查找与标签“ lifesupport”匹配的所有Widget。
SELECT `Data_Widgets`.* FROM (`Data_Tags` LEFT JOIN `Map_WidgetTag` USING(`tagid`) LEFT JOIN `Data_Widgets` USING(`widgetid`)) WHERE `Data_Tags`.`desc` = 'lifesupport' ORDER BY `desc` ASC;
哦,在页面的更下方,我们想要获取小部件#15806的所有标签:
SELECT `Data_Tags`.* FROM (`Data_Widgets` LEFT JOIN `Map_WidgetTag` USING(`widgetid`) LEFT JOIN `Data_Tags` USING(`tagid`)) WHERE `Data_Widgets`.`widgetid` = '15806' ORDER BY `desc` ASC;
哦,还有一点,我们需要与任何以'Green'开头的小部件相关联的所有标签:
(好吧,您知道了;有很多查询,而且它们都非常相似)
现在,我们假设BOSS出现了,并说:“嘿,这看起来确实不错,但是我们不必担心0-999小部件。这些小部件属于会计部门,并且具有自己的系统。”
因此,您可以将*和* widgetid`> 999添加到*每个* *单个* *一个* of * *您的* *查询*。
而且您也错过了一个,这在下个月的公司野餐中造成了很多尴尬。
必须有一个更好的方法。
还有! 输入视图。
CREATE VIEW `View_WidgetTags` AS SELECT `Data_Widgets`.`widgetid`, `Data_Widgets`.`desc` AS `widgetdesc`, `Data_Tags`.`tagid`, `Data_Tags`.`desc` AS `tagdesc` FROM (`Data_Widgets` LEFT JOIN `Map_WidgetTag` USING(`widgetid`) LEFT JOIN `Data_Tags` USING(`tagid`)) WHERE `Data_Widgets`.`widgetid` > 999;
回到示例中,找到所有“生命支持”小部件:
SELECT `widgetid`, `widgetdesc` FROM `View_WidgetTags` WHERE `tagdesc` = 'lifesupport' ORDER BY `widgetdesc` ASC;
并找到小部件#15806的所有标签:
SELECT `tagid`, `tagdesc` FROM `View_WidgetTags` WHERE `widgetid` = '15806' ORDER BY `tagdesc` ASC;
顺便说一句:
SELECT * FROM `View_WidgetTags` WHERE `widgetdesc` LIKE 'Green%' ORDER BY `widgetdesc`, `tagdesc` ASC;
请记住,视图是混合查询/表;
您可以像查询一样定义它,但可以像表一样访问它。
当您从视图中访问SELECT数据时,MySQL已经编译了与用于定义视图的查询匹配的数据,因此SELECT查询的执行速度更快!
当BOSS停在您的立方体旁边并说:“嘿,穆雷(Murray)从会计那里得知他们正在向我们提供其小部件,因此我们需要再次将它们包括在搜索中。”您微笑着走到终端机上,魔法:
CREATE OR REPLACE VIEW `View_WidgetTags` AS SELECT `Data_Widgets`.`widgetid`, `Data_Widgets`.`desc` AS `widgetdesc`, `Data_Tags`.`tagid`, `Data_Tags`.`desc` AS `tagdesc` FROM (`Data_Widgets` LEFT JOIN `Map_WidgetTag` USING(`widgetid`) LEFT JOIN `Data_Tags` USING(`tagid`));
立即,无需更改您PHP代码(或您拥有什么)中的单个查询,*全部*您的查询就返回了以前禁止的小部件!
有关视图的更多信息(特别是关于视图中数据的更新或删除的怪癖),请在此处查看MySQL手册页:
http://dev.mysql.com/doc/refman/5.0/en/create-view.html翻译自: https://bytes.com/topic/mysql/insights/642508-views-why-we-love-them
情感分类如何转化为观点挖掘