已剪辑自: http://www.cnblogs.com/jiqing9006/p/4999670.html

用单数形式更佳,理由如下:
1、概念直观。 你有一个袋子,里面有好多个苹果,你会说这是个苹果袋。但无论里面有0,1,百万个苹果,它依然是个袋子。表也是如此,表明需要描述清楚,表里面包含的对象,而非有多少个数据。
2、便利性 单数形式更简单。有一些单词,它的复数形式可能是非常规的,或者就没有复数形式,但是单数不一样,单数形式则没那么多讲究。有些单词的复数,可能会想到你头大,可能得好好google才出来
3、优雅 特别是一些master-detail形式的资源名称,统一用单数,读起来更方便,对齐更整齐,从顺序上更有逻辑性。 对比下 单数: OrderOrderDetail 复数: OrderDetailsOrders
4、简单朴素 设想下,不管是表名,主键,关系,实例Classes,你都可以统一用单数,所有看上去那么统一,也不用费心地各种复数单数中转换你的思维 Customer、Customer.CustomerID、CustomerAddress、public Class Custo[……]

阅读全文

Oren Eini(又名 Ayende Rahien)建议开发者尽量避免数据库的软删除操作,读者可能因此认为硬删除是合理的选择。作为对 Ayende 文章的回应,Udi Dahan 强烈建议完全避免数据删除。

 
 

所谓软删除主张在表中增加一个 IsDeleted 列以保持数据完整。如果某一行设置了IsDeleted标志列,那么这一行就被认为是已删除的。Ayende 觉得这种方法”简单、容易理解、容易实现、容易沟通”,但”往往是错的”。问题在于:

 
 

删除一行或一个实体几乎总不是简单的事件。它不仅影响模型中的数据,还会影响模型的外观。所以我们才要有外键去确保不会出现”订单行”没有对应的父”订单”的情况。而这个例子只能算是最简单的情况。……

 
 

当采用软删除的时候,不管我们是否情愿,都很容易出现数据受损,比如谁都不在意的一个小调整,就可能使”客户”的”最新订单”指向一条已经软删除的订单。

 
 

如果开发者接到的要求就是从数据库中删除数据,要是不建议用软删除,那就只能硬删除了。为了保证数据一致性,开发者除了删除直接有关的数据行,还应该级联地删除相关数据。可Udi

Dahan提醒读者注意[……]

阅读全文

在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据。对于这种需求,我们可以使用保留历史数据或者使用版本来实现。

为了能够保留历史数据,在版本设计时有以下方案:

一、使用版本号

版本号是一种常见的版本设计方案,就是在要进行历史数据保留的表上面增加一个版本号字段,该字段可以是DateTime类型,也可以是int类型,每进行数据操作时,都是创建一个新的版本,版本是只增不减的,所以只需要拿到最大一个版本号,就能得到最新的业务数据。

版本号除了能够用于留存历史数据外,还有一个功能就是避免并发编辑操作。比如我们有一个对象A,当前的版本是1,两个用户同时打开了该对象的编辑页面,进行数据更改。先是甲用户提交更改,这个时候系统把对象的ID和版本进行查询,发现要修改的数据最新版本是1,所以成功修改,保存了对象A的新版本2。这个时候用户乙也提交了修改。系统把对象的ID和版本1进行查询,发现要修改的数据最新版本是2,不符合要求,所以拒绝用户乙的修改。用户乙只有刷新界面,拿到最新的版本2,再进行修改。

ID

单号

[……]

阅读全文

在存储标题、网址等一系列不长不短的内容时,字段类型我们可能选择 varchar(255) 或者 varchar(256),使用哪个好呢?

有些人选择 varchar(255),可能来源于以下两个原因:

  • tinyint 类型存储的最大数字是 255,诱导我们设置 varchar 时也不要突破 255,实际上 tinyint 存储的是 0-255 一共 256 个数字。
  • Access 中文本的最大长度是 255。

实际上建议使用 varchar(256),因为这是一个字节的内容,微软设计的数据库中使用的就是 256,而不是 255。

[……]

阅读全文

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。

两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

[……]

阅读全文

  • 整个父类的所有子类一张表

    优势:数据库操作简单

    问题:空值大量存在,数据表字段膨胀,维护修改困难

  • 每个具体类一张表

    优势:简化数据库访问,对多态关系的支持有限,当查询涉及到类继承结构时通常需要发起SQL UNION查询

    问题:放弃了继承,否认了对象的共性部分,查询统计通用属性需要处理多个表,也无法处理关联引用的外键约束(其它实体无法外键引用多个不同实体)

  • 每个类对应一张表,父类与子类通过外键关联

    优势:通用,面向对象,由于 结构与对象继承一致,几乎可以应对处理所有可能的情况,对于实体间的多态关系提供了很好的支持

    问题:实例化子类实例时需要一个或多个表的关联操作。在深层次的继承结构中,这会导致性能很低。跨数据库抽象,查询写入需要关联多个表操作,可以通过视图简化查询操作


[……]

阅读全文

完全卸载oracle11g步骤:

1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。

2、 开始->程序->Oracle – OraHome81->Oracle Installation Products-> Universal Installer,单击卸载产品“-“全部展开,选中除“OraDb11g_home1”外的全部目录,删除。

5、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。

6、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口(oracleOraWeb开头的键)

7、 运行refeditHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。

8、 删除HKEY_CLASSES_ROOT目录下所有以OraOrac[……]

阅读全文

1.装第一个Mysql

2.装第二个Mysql

完成

会遇到的问题

1.服务名的冲突,导致只有一个Mysql名的服务

2.端口的冲突,一般都是默认的3306,可以将第二个Mysql的端口改为其他不常的端口如:3307

解决方法

手工安装其中一个Mysql的服务,

参考脚本:安装目录下

bin\mysqld –install Mysql的服务名 –defaults-file=”%cd%\bin\my.ini”(安装服务)

net start Mysql的服务名(启动服务)

net start Mysql的服务名(停止服务)

bin\mysqld.exe –remove Mysql的服务名 (删除服务)

参考注册表位置

regedit—-HKEY_LOCAL_MACHINE—-SYSTEM—-CurrentControlSet—-services—-服务名

[……]

阅读全文

我认为 Ligaya Turmelle 的关于SQL联合(join)语句的帖子对于新手开发者来说是份很好的材料。SQL 联合语句好像是基于集合的,用韦恩图来解释咋一看是很自然而然的。不过正如在她的帖子的回复中所说的,在测试中我发现韦恩图并不是十分的匹配SQL联合语法。

不过我还是喜欢这个观点,所以我们来看看能不能用上韦恩图。假设我们有下面两张表。表A在左边,表B在右边。我们给它们各四条记录。

id name       id  name
-- ----       --  ----
1  Pirate     1   Rutabaga
2  Monkey     2   Pirate
3  Ninja      3   Darth Vader
4  Spaghetti  4   Ninja

我们用过name字段用几种不同方式把这些表联合起来,看能否得到和那些漂亮的韦恩图在概念上的匹配。

SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name

id  name   [......]

阅读全文