<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>设计 &#8211; LPC影子技术分享</title>
	<atom:link href="https://www.mudbest.com/tag/%E8%AE%BE%E8%AE%A1/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mudbest.com</link>
	<description>行影不离,忘之却步.</description>
	<lastBuildDate>Sat, 26 Jan 2013 14:09:59 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.1</generator>
	<item>
		<title>MySQL Workbench的使用</title>
		<link>https://www.mudbest.com/mysql-workbench%e7%9a%84%e4%bd%bf%e7%94%a8/</link>
		
		<dc:creator><![CDATA[hkshadow]]></dc:creator>
		<pubDate>Wed, 21 Nov 2012 03:18:35 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[MySQL Workbench]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[设计]]></category>
		<guid isPermaLink="false">http://www.mudbest.com/?p=1672</guid>

					<description><![CDATA[MySQL Workbench 是 MySQL AB 最近释放的可视数据库设计工具。这个工具是设计 MySQL ... <a title="MySQL Workbench的使用" class="read-more" href="https://www.mudbest.com/mysql-workbench%e7%9a%84%e4%bd%bf%e7%94%a8/" aria-label="阅读 MySQL Workbench的使用">阅读更多</a>]]></description>
										<content:encoded><![CDATA[<p>MySQL Workbench 是 MySQL AB 最近释放的可视数据库设计工具。这个工具是设计 MySQL 数据库的专用工具。<br />
在 MySQL Workbench 中建立的被称之为物理数据模型。一个物理数据模型是针对一个特定 RDBMS 产品的数据模型；本文中的模型将具有一些 MySQL 的独特规范。我们可以使用它生成（forward-engineer）数据库对象，除了包含表和列（字段）外，也可以包含视图。<br />
MySQL Workbench 拥有很多的功能和特性；这篇由 Djoni Darmawikarta写的<span id="more-1672"></span>文章通过一个示例展现了其中的一些。我们将针对一个订单系统建立一个物理数据模型，这里的订单系统可以是销售单也可以是订单，并且使用  forward-engineer（正向引擎） 将我们的模型生成为一个 MySQL 数据库。<br />
我们的示例中使用 MySQL Workbench 创建的物理模型看上去就像下图这样：</p>
<p>小知识:<br />
mysql的pk nn uq bin un zf ai各代表的意思<br />
[intrinsic column flags] (基本字段类型标识)</p>
<p>&#8211; PK: primary key (column is part of a pk) 主键<br />
&#8211; NN: not null (column is nullable) 非空<br />
&#8211; UQ: unique (column is part of a unique key) 唯一<br />
&#8211; AI: auto increment (the column is auto incremented when rows are inserted) 自增</p>
<p>[additional data type flags, depend on used data type] 扩展数据类型标记</p>
<p>&#8211; BIN: binary (if dt is a blob or similar, this indicates that is binary data, rather than text) 二进制(比text更大的二进制数据)<br />
&#8211; UN: unsigned (for integer types, see docs: “10.2. Numeric Types”) 整数<br />
&#8211; ZF: zero fill (rather a display related flag, see docs: “10.2. Numeric Types”)值中最有意义的字节总为0，并且不保存。 </p>
<p><img fetchpriority="high" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image1.png" alt="" title="workbench-article-image1" width="500" height="343" class="alignnone size-full wp-image-1673" /></p>
<p>索引简单介绍：<br />
PRIMARY, INDEX, UNIQUE 这3种是一类<br />
PRIMARY 主键。 就是 唯一 且 不能为空。<br />
INDEX 索引，普通的<br />
UNIQUE 唯一索引。 不允许有重复。<br />
FULLTEXT 是全文索引，用于在一篇文章中，检索文本信息的。</p>
<p>举个例子来说，比如你在为某商场做一个会员卡的系统。<br />
这个系统有一个会员表<br />
有下列字段：<br />
会员编号   INT<br />
会员姓名   VARCHAR(10)<br />
会员身份证号码   VARCHAR(18)<br />
会员电话   VARCHAR(10)<br />
会员住址   VARCHAR(50)<br />
会员备注信息  TEXT</p>
<p>那么这个 会员编号，作为主键，使用 PRIMARY<br />
会员姓名 如果要建索引的话，那么就是普通的 INDEX<br />
会员身份证号码   如果要建索引的话，那么可以选择 UNIQUE （唯一的，不允许重复）<br />
会员备注信息 ， 如果需要建索引的话，可以选择 FULLTEXT，全文搜索。</p>
<p>不过 FULLTEXT 用于搜索很长一篇文章的时候，效果最好。<br />
用在比较短的文本，如果就一两行字的，普通的 INDEX 也可以。</p>
<p>创建订单方案(ORDER Schema)<br />
首先让我们来创建一个保存订单物理模型的方案。点击 + 按钮（红色标注的地方）</p>
<p><img decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image2.png" alt="" title="workbench-article-image2" width="500" height="343" class="alignnone size-full wp-image-1674" /></p>
<p>更改新的方案默认名称为订单。注意，当你键入方案名时，在 Physical Schemata 上的标签名也会随之改变——这是一个很好的特性。</p>
<p>订单方案被增加到目录（Catalog）中 (图中红色圈住的部分)。</p>
<p><img decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image3.png" alt="" title="workbench-article-image3" width="500" height="343" class="alignnone size-full wp-image-1675" /></p>
<p>重命名方案后关闭 schema 窗口。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image4.png" alt="" title="workbench-article-image4" width="500" height="145" class="alignnone size-full wp-image-1676" /></p>
<p>创建订单表<br />
我们现在创建订单模型中的三个表：ORDER 表以及它的两个子表 SALES_ORDER 和PURCHASE_ORDER。首先，确信你已经选择了 ORDER 方案的标签，这样，我们创建的表才会包含于这个方案。</p>
<p>我们将要创建的表是作为 EER 图表展示的(EER = Enhanced Entity Relationship)。所以，双击 Add Diagram 按钮。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image5.png" alt="" title="workbench-article-image5" width="223" height="265" class="alignnone size-full wp-image-1677" /></p>
<p>单击 Table 图标，然后移动鼠标到 EER Diagram 区域，在你想放置第一个表的位置上单击鼠标。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image6.png" alt="" title="workbench-article-image6" width="194" height="188" class="alignnone size-full wp-image-1678" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image7.png" alt="" title="workbench-article-image7" width="432" height="298" class="alignnone size-full wp-image-1679" /></p>
<p>对于其他两个表，重复上面的操作。你可以通过拖拽来移动表的位置。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image8.png" alt="" title="workbench-article-image8" width="500" height="434" class="alignnone size-full wp-image-1680" srcset="https://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image8.png 500w, https://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image8-495x430.png 495w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>下一步，我们要对 table1 做一些操作，这些操作是通过 Workbench 的表编辑器完成的。要打开表编辑器，只需右键选择 table1 并选择 Edit Table 菜单。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image9.png" alt="" title="workbench-article-image9" width="500" height="249" class="alignnone size-full wp-image-1681" /></p>
<p>键入 table1 的表名 ORDER 。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image10.png" alt="" title="workbench-article-image10" width="433" height="335" class="alignnone size-full wp-image-1682" /></p>
<p>接下来，增加列（字段）。选择 Columns 标签。将列名(字段名) idORDER 更改为  ORDER_NO.</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image11.png" alt="" title="workbench-article-image11" width="500" height="154" class="alignnone size-full wp-image-1683" /></p>
<p>在下拉列表框中选择数据类型 INT 。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image12.png" alt="" title="workbench-article-image12" width="500" height="497" class="alignnone size-full wp-image-1684" srcset="https://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image12.png 500w, https://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image12-432x430.png 432w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<p>我们希望 ORDER_NO 列的值可以被 MySQL 数据库自动控制，所以，我们选定 AI 列 (Auto Increment——自增量).</p>
<p>AI 是 MySQL 数据库的一个特性。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image13.png" alt="" title="workbench-article-image13" width="457" height="125" class="alignnone size-full wp-image-1685" /></p>
<p>你也可以指定表的其他物理属性，例如它的 Collation 属性；当然可以指定表的其他高级选项，例如 trigger 和 portioning （分别对应 Trigger 和 Partioning 标签）。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image14.png" alt="" title="workbench-article-image14" width="277" height="156" class="alignnone size-full wp-image-1686" /></p>
<p>注意，这时，在 diagram 中我们表 table1 已经改变为 ORDER，并且，它有一个列（字段）ORDER_NO。在目录中，你也可以看到有三个表。</p>
<p>在表右侧的黑点，表示它们包含在一个图表中。</p>
<p>如果你展开 ORDER ，你可以看到 ORDER_NO 列。因为我们定义它为主键，所以在它左侧有一个 key 图标</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image16.png" alt="" title="workbench-article-image16" width="181" height="163" class="alignnone size-full wp-image-1687" /></p>
<p>回到表设计器，增加其他两列（字段）：ORDER_DATE 和 ORDER_TYPE。ORDER_TYPE 可以有两个值：S 表示销售订单，P 表示采购订单。由于销售订单是更常用的，所以我们指定列（字段）的默认值为 S 。</p>
<p>你可以在最后一列的下面白色区域双击鼠标来增加下一个字段</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image17.png" alt="" title="workbench-article-image17" width="457" height="127" class="alignnone size-full wp-image-1688" /></p>
<p>使用同样的方式来创建 SALES_ORDER 表及其中的列（字段）。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image18.png" alt="" title="workbench-article-image18" width="500" height="337" class="alignnone size-full wp-image-1689" /></p>
<p>最后，创建 PURCHASE_ORDER 表及其中的列（字段）。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image19.png" alt="" title="workbench-article-image19" width="500" height="345" class="alignnone size-full wp-image-1690" /></p>
<p>创建关系<br />
我们已经创建了三个表。到这里并没有结束；我们仍旧需要创建它们的 关系。</p>
<p>SALES_ORDER 是 ORDER 的子表，意味着它们是 1:1 ，SALES_ORDER 为子表， ORDER 为父表，并将 ORDER 的键移动到 SALES_ORDER 。所以，选择（单击）1:1 identifying relationship 图标，然后在 SALES_ORDER 表上单击，再在 ORDER 表上单击。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image20.png" alt="" title="workbench-article-image20" width="278" height="231" class="alignnone size-full wp-image-1691" /></p>
<p>注意，当你在单击表时，图标将变为带有 1:1 关系的手型。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image21.png" alt="" title="workbench-article-image21" width="229" height="219" class="alignnone size-full wp-image-1692" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image22.png" alt="" title="workbench-article-image22" width="217" height="205" class="alignnone size-full wp-image-1693" /></p>
<p>1:1 关系就是这样设置的；ORDER_NO 主键被移动到 SALES_ORDER 表并作为它的主键。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image23.png" alt="" title="workbench-article-image23" width="225" height="278" class="alignnone size-full wp-image-1694" /></p>
<p>下一步，创建 PURCHASE_ORDER 到 ORDER 的关系，它仍旧是 1:1 关系。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image24.png" alt="" title="workbench-article-image24" width="500" height="343" class="alignnone size-full wp-image-1695" /></p>
<p>我们现在已经完成了表及表之间关系的设计；将我们的模型保存为 ORDER.mwb.</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image25.png" alt="" title="workbench-article-image25" width="276" height="408" class="alignnone size-full wp-image-1696" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image26.png" alt="" title="workbench-article-image26" width="500" height="342" class="alignnone size-full wp-image-1697" /></p>
<p>生成 DDL 和数据库<br />
最终在本文设计数据模型的目的是为了建立 MySQL 数据库。我们将首先生成 DDL(SQL CREATE script)，然后执行这个脚本。</p>
<p>从 File | Export 菜单中，选择 Forward Engineer SQL CREATE Script.</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image27.png" alt="" title="workbench-article-image27" width="500" height="356" class="alignnone size-full wp-image-1698" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image28.png" alt="" title="workbench-article-image28" width="500" height="378" class="alignnone size-full wp-image-1699" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image29.png" alt="" title="workbench-article-image29" width="500" height="383" class="alignnone size-full wp-image-1700" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image30.png" alt="" title="workbench-article-image30" width="500" height="283" class="alignnone size-full wp-image-1701" /></p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image31.png" alt="" title="workbench-article-image31" width="500" height="408" class="alignnone size-full wp-image-1702" /></p>
<p>你也可以在其中来查看表是否已经被创建。</p>
<p><img loading="lazy" decoding="async" src="http://www.mudbest.com/wp-content/uploads/2012/11/workbench-article-image32.png" alt="" title="workbench-article-image32" width="333" height="325" class="alignnone size-full wp-image-1703" /></p>
<p>全图文演示了在 MySQL Workbench 中如何可视的建立 MySQL 物理数据模型，并使用它来创建一个 MySQL 数据库。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
