相同,类似的业务字段应该是设计成一样的名字,最好搞一个清单,将常用的字段的名称和描述都列出来发给每一个人。每张表最好都设计 id int 自动递增标识,guid varchar(40),唯一标识,不包括{},orderindex int 排序如果是保存的树在添加一个 pid int 关于表和表之间的关系,如主从表,从表中用 oid int 来表示和主表的关系 用 id 自动递增标识来做为表和表之间的关系字段,在查询上速度能比较快,但也会造成一些问题,主要是在数据进行移动时,如果主表从另一张表导入,会造成id 号和从表的不同,造成主从关系丢失。从表可以用 oguid (OwnerGUID) 来标识主表,这样虽然在速度上会有一点点影响,但在数据移动中会有很省事很多。主表名称 SYS_A id ,guid,orderindex,Code,Caption,Readme从表名称 SYS_B id,guid,orderindex,SYS_A_guid,其它字段如果是多对多的关系,则需要用一张中间表。 如表 SYS_A和 SYS_B是多对多的关系,则中间表为 SYS_S_SYS_Bid,guid,orderindex,SYS_A_guid,SYS_B_guid在使用的时候可以写一些通用的方法来进行查询, 如返回从表中的数据 function SelectedDetail(MasterTableName,MasterGuid,DetailTableName:String)当然有guid 做为表之间的关系在一些情况下还是会有问题,一是各个关系都是GUID,你是不查询主表的话, 从表中根本没法明白对应的是那条记录,如果使用业务中的一个不重复字段就会好很多,如设备表中保存的是一个工厂所有的设备,另一张表中保存的是每个设备的附属设备,因为每个设备都是不重复的设备编号,可以 用它来做为从表的标识字段。一般用GUID就可以了,在删除,修改操作时用 id
有几个必有的字段:fid:自动递增,内部关联id;fname:主要信息;fdeleted:删除标志(fwhen:创建时间;flast:最后修改时间;fwho:创建者)
用 id 自动递增标识来做为表和表之间的关系字段,在查询上速度能比较快,但也会造成一些问题,主要是在数据进行移动时,如果主表从另一张表导入,会造成id 号和从表的不同,造成主从关系丢失。从表可以用 oguid (OwnerGUID) 来标识主表,这样虽然在速度上会有一点点影响,但在数据移动中会有很省事很多。主表名称 SYS_A
id ,guid,orderindex,Code,Caption,Readme从表名称 SYS_B
id,guid,orderindex,SYS_A_guid,其它字段如果是多对多的关系,则需要用一张中间表。
如表 SYS_A和 SYS_B是多对多的关系,则中间表为 SYS_S_SYS_Bid,guid,orderindex,SYS_A_guid,SYS_B_guid在使用的时候可以写一些通用的方法来进行查询,
如返回从表中的数据
function SelectedDetail(MasterTableName,MasterGuid,DetailTableName:String)当然有guid 做为表之间的关系在一些情况下还是会有问题,一是各个关系都是GUID,你是不查询主表的话,
从表中根本没法明白对应的是那条记录,如果使用业务中的一个不重复字段就会好很多,如设备表中保存的是一个工厂所有的设备,另一张表中保存的是每个设备的附属设备,因为每个设备都是不重复的设备编号,可以
用它来做为从表的标识字段。一般用GUID就可以了,在删除,修改操作时用 id
请问
1,什么事抽象基表?能否说的具体一些,——目前的数据库不支持,只是自己建表设字段时注意必须复制那些字段
2,你说的这几个字段,事每个表中都有的?——对,括号里的字段不一定有,看业务需要
——自动递增字段在系统数据合并转移时,会有冲突。ZyxIp说的guid能避免这个问题
请问ZyxIp,这个guid是表自带的字段,还是手工创建的?
是自己手工创建的。delphi 中创建的 guid {CAF31A71-A021-4388-87DA-7317E60F796E} 总长是38,包括{},
但在其它语言中 是不包括 {} 的。所以最好是用SQLServer数据库的 newid() 方法创建。用guid虽然速度慢一点,但应该决大数的业务都不会影响到的,在查询的时候最好不要用 * ,
select id ,code,caption,业务字段 就可以了,做关联的时候如果要用到 guid ,也是传递id过去,在sql中查询出guid来。
看来没白发这个帖子啊,哈哈。
以前看到有人很详细的测评,说guid字段不慢,甚至比int还快,有点半信半疑
但是也一直没怎么用guid,都是用自动递增的id不过自动递增的id在多系统数据合并时,的确是个大问题。
谁给咱搞个几十万条记录测试一下吧?原来也总是用id 做关联,但有上项目服务器端生成数据,下发给各人客户端,填报后在上报上来,用id真是费
事的很,每个导入SQL都写很长,头都大了。
自从用了GUID后,SQL短了,头也不痛了,睡眠也好,吃嘛嘛香。
如果字符串,那效率可能不会搞过int的多系统数据归并时,guid只是解决了关联的保持问题,id的使用区域还是会重叠啊