﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-老翟-随笔分类-SQL</title><link>http://www.blogjava.net/apl330/category/48094.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 16 Apr 2011 10:27:35 GMT</lastBuildDate><pubDate>Sat, 16 Apr 2011 10:27:35 GMT</pubDate><ttl>60</ttl><item><title>数据库设计学习笔记</title><link>http://www.blogjava.net/apl330/archive/2011/04/11/348030.html</link><dc:creator>jack zhai</dc:creator><author>jack zhai</author><pubDate>Mon, 11 Apr 2011 00:44:00 GMT</pubDate><guid>http://www.blogjava.net/apl330/archive/2011/04/11/348030.html</guid><wfw:comment>http://www.blogjava.net/apl330/comments/348030.html</wfw:comment><comments>http://www.blogjava.net/apl330/archive/2011/04/11/348030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/apl330/comments/commentRss/348030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/apl330/services/trackbacks/348030.html</trackback:ping><description><![CDATA[<p>一、设计过程包含五个主要步骤。</p>
<p>第 1 步：确定实体和关系</p>
<p>第 2 步：确定所需数据</p>
<p>第 3 步：规范化数据</p>
<p>第 4 步：解析关系</p>
<p>第 5 步：验证设计<br />
<br />
二、阅读别人的概念模型图：<br />
不管是从左到右读取还是从右到左读取，下面的规则都会使读取这些图示变得容易：读取 (1) 第一个实体的名称，(2) <em>第一个实体</em> 旁边的角色，(3) 到<em>第二个实体</em> 的连接的基数，(4) 第二个实体的名称。<br />
<br />
三、确定所需数据（实体属性的设计）需要注意的：<br />
</p>
<li>
<p class="list">确定支持数据时，一定要参考前面确定的活动以了解将如何访问这些数据。</p>
<p class="list">例如，在某些情况下可能需要按雇员的名字列出雇员，而在另一些情况下可能需要按姓氏列出。要满足这两种需要，应创建一个 First Name 属性和一个 Last Name 属性，而不应创建一个既包含名字又包含姓氏的属性。将姓氏和名字分开后，以后可以创建两个索引，分别适用于这两项任务。</p>
<li>
<p class="list">请选择一致的名称。使用一致的名称可以使数据库便于维护，并且便于阅读报告和输出窗口。</p>
<p class="list">例如，如果一个属性使用了缩略名称，如 Emp_status，则另一个属性不应使用完整名称，如 Employee_ID。应使名称保持一致，如 Emp_status 和 Emp_ID。</p>
<li>
<p class="list">在这个阶段，数据是否与正确的实体相关联并不十分重要。您可以根据自己的判断进行设计。在下一节中，将对设计进行测试，检查您的判断是否正确。</p>
<p><br />
四、规范化是指一系列测试，通过这些测试可以消除冗余的数据，并确保数据与正确的实体或关系相关联。共有五项测试。本节介绍其中前三项测试。这三项测试最重要，因此也最常使用。<br />
<br />
五、范式：</p>
<p>数据规范化包括几项测试。数据在通过了第一项测试后，我们认为它满足第一范式；通过了第二项测试后，它满足第二范式；通过了第三项测试后，则满足第三范式。<br />
<br />
六、标识符是唯一地标识实体中各行的一组属性，至少由一个属性组成。<br />
<br />
七、解析关系：<br />
执行完规范化过程后，设计几乎就完成了。唯一还需要做的事情就是生成与概念数据模型相对应的<strong>物理数据模型</strong>。这个过程也称作解析关系，因为其中涉及的大量工作就是将概念模型中的关系转换为相应的表和外键关系。</p>
<br />
八、概念数据模型可以简化设计过程，因为它将大量细节隐藏起来。例如，多对多关系总会生成一个额外的表和两个外键引用。在概念数据模型中，通常可以用一个连接来标识这类结构。
<p>九、域（用户定义的数据类型）</p>
<p>十、数据库对象的定义构成了数据库模式：您可以将模式看做一个空数据库。（<span style="color: red">是否可以理解成C#的命名空间或java里的包概念</span>）</p>
<p>&nbsp;</p>
</li>
<p>十一、<br />
</p>
<p>&nbsp;</p>
 <img src ="http://www.blogjava.net/apl330/aggbug/348030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/apl330/" target="_blank">jack zhai</a> 2011-04-11 08:44 <a href="http://www.blogjava.net/apl330/archive/2011/04/11/348030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>权限管理系统 sql</title><link>http://www.blogjava.net/apl330/archive/2011/03/30/347272.html</link><dc:creator>jack zhai</dc:creator><author>jack zhai</author><pubDate>Wed, 30 Mar 2011 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/apl330/archive/2011/03/30/347272.html</guid><wfw:comment>http://www.blogjava.net/apl330/comments/347272.html</wfw:comment><comments>http://www.blogjava.net/apl330/archive/2011/03/30/347272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/apl330/comments/commentRss/347272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/apl330/services/trackbacks/347272.html</trackback:ping><description><![CDATA[<div class="cnblogs_code"><pre><img id="Code_Closed_Image_272007" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_272007').style.display='none'; document.getElementById('Code_Open_Image_272007').style.display='inline'; document.getElementById('Code_Open_Text_272007').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_272007" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_272007').style.display='none'; getElementById('Code_Closed_Image_272007').style.display='inline'; getElementById('Code_Closed_Text_272007').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_272007" class="cnblogs_code_Collapse">sql</span><span style="display: none" id="Code_Open_Text_272007">DROP DATABASE IF EXISTS `local` ; 

CREATE DATABASE `local`; 

use `local` ; 

DROP TABLE IF EXISTS actionmanager; 

CREATE TABLE actionmanager(
    actionid INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    actionName VARCHAR(255) NOT NULL ,
    action VARCHAR(255) NOT NULL,
    createDate DATE,
    viewmode INT DEFAULT 0
    #index inx(`action`)
)type=InnoDB; 

DROP TABLE IF EXISTS actioncolumn ; 

CREATE TABLE actioncolumn(
    actioncolumnid INT AUTO_INCREMENT NOT NULL PRIMARY KEY ,
    actioncolumnname VARCHAR(255) NOT NULL
)type=InnoDB; 

DROP TABLE IF EXISTS groupmanager; 

CREATE TABLE groupmanager(
    groupid INT AUTO_INCREMENT NOT NULL PRIMARY KEY ,
    groupname VARCHAR(255) NOT NULL,
    groupinfo VARCHAR(255) DEFAULT NULL,
    masterid INT NOT NULL,    #who created this group
    mastername VARCHAR(255),
    createdate DATE 
)type=InnoDB; 

DROP TABLE IF EXISTS master; 

CREATE TABLE master(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL ,
    password VARCHAR(255) NOT NULL ,
    sex VARCHAR(255) NOT NULL ,
    position VARCHAR(255) NOT NULL,
    masterid INT ,             #whoe created this master    
    mastername VARCHAR(255),
    createdate DATE
)type=InnoDB; 

DROP TABLE IF EXISTS  actiongroup ; 

CREATE TABLE actiongroup(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    `action` VARCHAR(255) NOT NULL, 
    groupid INT NOT NULL ,
    masterid int NOT NULL,
    mastername VARCHAR(255) NOT NULL ,
    createdate DATE,
    index inx_ag(`action`)
)type=InnoDB; 

DROP TABLE IF EXISTS mastergroup ; 

CREATE TABLE mastergroup(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    masterid INT NOT NULL ,
    groupid INT NOT NULL ,
    masterid2 INT NOT NULL ,  # who created or modified this mastergroup 
    creatDate DATE 
)type=InnoDB ; 

##############action link group ###################### 

CREATE INDEX idx_actionmanager_action ON actionmanager(`action`); 
CREATE INDEX idx_groupmanager_groupid ON groupmanager(`groupid`); 

ALTER TABLE actiongroup 
ADD CONSTRAINT  fk_action
FOREIGN KEY (action) REFERENCES actionmanager(`action`) 
ON DELETE CASCADE ON UPDATE CASCADE; 

ALTER TABLE actiongroup 
ADD CONSTRAINT  fk_groupid
FOREIGN KEY (groupid) REFERENCES groupmanager(`groupid`) 
ON DELETE CASCADE ON UPDATE CASCADE; 

##############action link  master###################### 

CREATE INDEX idx_master_id ON master(`id`); 

ALTER TABLE mastergroup 
ADD CONSTRAINT  fk_masterg_mid
FOREIGN KEY (masterid) REFERENCES master(`id`) 
ON DELETE CASCADE ON UPDATE CASCADE; 

ALTER TABLE mastergroup 
ADD CONSTRAINT  fk_masterg_gid
FOREIGN KEY (groupid) REFERENCES groupmanager(`groupid`) 
ON DELETE CASCADE ON UPDATE CASCADE; </pre></div><br></span><img src ="http://www.blogjava.net/apl330/aggbug/347272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/apl330/" target="_blank">jack zhai</a> 2011-03-30 13:25 <a href="http://www.blogjava.net/apl330/archive/2011/03/30/347272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>