<?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>idea&#039;s blog &#187; 架构</title>
	<atom:link href="http://www.ideawu.net/blog/tag/%e6%9e%b6%e6%9e%84/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ideawu.net/blog</link>
	<description>网络服务器架构, Linux C/C++服务器端开发, TCP/IP网络协议, PHP Web后端和Web前端开发, 网站架构.</description>
	<lastBuildDate>Wed, 08 Feb 2012 10:02:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>一对多关系的不稳定性</title>
		<link>http://www.ideawu.net/blog/archives/391.html</link>
		<comments>http://www.ideawu.net/blog/archives/391.html#comments</comments>
		<pubDate>Fri, 12 Jun 2009 10:24:04 +0000</pubDate>
		<dc:creator>ideawu</dc:creator>
				<category><![CDATA[Computer System]]></category>
		<category><![CDATA[数据库设计]]></category>
		<category><![CDATA[架构]]></category>

		<guid isPermaLink="false">http://www.ideawu.net/blog/?p=391</guid>
		<description><![CDATA[<p>经典的对象关系模型有三个: 一对一(one-to-one), 一对多(one-to-many), 多对多(many-to-many). 事实上, 一对多只是一种游离的中间状态, 任何设计中一旦使用了一对多关系, 迟早会发现只有多对多才能满足业务的变更. 对象关系要么是一对一, 要么是多对多, 没有一对多.</p>
<p>以博客程序作为例子, 想当然地, 认为博客作者只能是一个人, 所以用户和博客文章的关系是一对多的. 但是, 如果不把博客当为个人的日记本来使用, 把博客当做文章发布平台, 这时, 这个模型就不能使用了, 因为文章的作者是可以有多人的.</p>
<p>这只是其中一个例子, 你可能认为有真正的文章发布平台, 不应该把博客程序当做文章发布系统. 想想, 人们会本能地认为一个部门只能属于一个公司, 一个小组只能属于一个部门, 但是, 多个公司合办的交流部门呢? 两个部门合作的小组呢? 这种例子数不胜数.</p>
<p>根据我的经验, 一旦有人设计对象关系模型(如数据库设计)时使用出了一对多关系模型, 我们应该像看到了想抢我们饭碗的人一样警惕起来: 真的是一对多关系吗? 就跟我们问一个从天而降的不明类人生物: 你是地球人吗?</p>


<h3>Related posts:</h3><ol><li><a href='http://www.ideawu.net/blog/archives/610.html' rel='bookmark' title='Permanent Link: 概率选取的实现'>概率选取的实现</a></li>
<li><a href='http://www.ideawu.net/blog/archives/580.html' rel='bookmark' title='Permanent Link: 主要排序算法的比较(精炼)'>主要排序算法的比较(精炼)</a></li>
<li><a href='http://www.ideawu.net/blog/archives/526.html' rel='bookmark' title='Permanent Link: 以浏览器引擎为核心的软件架构'>以浏览器引擎为核心的软件架构</a></li>
<li><a href='http://www.ideawu.net/blog/archives/358.html' rel='bookmark' title='Permanent Link: Mesh: 对象的多对多关系'>Mesh: 对象的多对多关系</a></li>
<li><a href='http://www.ideawu.net/blog/archives/281.html' rel='bookmark' title='Permanent Link: 使用流水线来实现并发'>使用流水线来实现并发</a></li>
</ol><div><p><img src="http://www.ideawu.net/favicon.ico" /> 你现在看的文章是: <a href="http://www.ideawu.net/blog/archives/391.html" title="一对多关系的不稳定性">一对多关系的不稳定性</a></p>

<div>
	<a href="http://www.benegg.com/linode-ad.php">
		Linode VPS - 美国虚拟主机
	</a>
	|
	<a href="http://www.udpwork.com/">
		IT牛人博客聚合网站
	</a>
</div></div>]]></description>
			<content:encoded><![CDATA[<p>经典的对象关系模型有三个: 一对一(one-to-one), 一对多(one-to-many), 多对多(many-to-many). 事实上, 一对多只是一种游离的中间状态, 任何设计中一旦使用了一对多关系, 迟早会发现只有多对多才能满足业务的变更. 对象关系要么是一对一, 要么是多对多, 没有一对多.</p>
<p>以博客程序作为例子, 想当然地, 认为博客作者只能是一个人, 所以用户和博客文章的关系是一对多的. 但是, 如果不把博客当为个人的日记本来使用, 把博客当做文章发布平台, 这时, 这个模型就不能使用了, 因为文章的作者是可以有多人的.</p>
<p>这只是其中一个例子, 你可能认为有真正的文章发布平台, 不应该把博客程序当做文章发布系统. 想想, 人们会本能地认为一个部门只能属于一个公司, 一个小组只能属于一个部门, 但是, 多个公司合办的交流部门呢? 两个部门合作的小组呢? 这种例子数不胜数.</p>
<p>根据我的经验, 一旦有人设计对象关系模型(如数据库设计)时使用出了一对多关系模型, 我们应该像看到了想抢我们饭碗的人一样警惕起来: 真的是一对多关系吗? 就跟我们问一个从天而降的不明类人生物: 你是地球人吗?</p>


<h3>Related posts:</h3><ol><li><a href='http://www.ideawu.net/blog/archives/610.html' rel='bookmark' title='Permanent Link: 概率选取的实现'>概率选取的实现</a></li>
<li><a href='http://www.ideawu.net/blog/archives/580.html' rel='bookmark' title='Permanent Link: 主要排序算法的比较(精炼)'>主要排序算法的比较(精炼)</a></li>
<li><a href='http://www.ideawu.net/blog/archives/526.html' rel='bookmark' title='Permanent Link: 以浏览器引擎为核心的软件架构'>以浏览器引擎为核心的软件架构</a></li>
<li><a href='http://www.ideawu.net/blog/archives/358.html' rel='bookmark' title='Permanent Link: Mesh: 对象的多对多关系'>Mesh: 对象的多对多关系</a></li>
<li><a href='http://www.ideawu.net/blog/archives/281.html' rel='bookmark' title='Permanent Link: 使用流水线来实现并发'>使用流水线来实现并发</a></li>
</ol><div><p><img src="http://www.ideawu.net/favicon.ico" /> 你现在看的文章是: <a href="http://www.ideawu.net/blog/archives/391.html" title="一对多关系的不稳定性">一对多关系的不稳定性</a></p>

<div>
	<a href="http://www.benegg.com/linode-ad.php">
		Linode VPS - 美国虚拟主机
	</a>
	|
	<a href="http://www.udpwork.com/">
		IT牛人博客聚合网站
	</a>
</div></div>]]></content:encoded>
			<wfw:commentRss>http://www.ideawu.net/blog/archives/391.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

