正文
sqlserver中间表,数据库中间表
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
SQLServer关系规范化
符合第一范式(原子性),1NF;
存在组合键(商店编号,商品编号) , 商店编号-(商店名称,商店地址)
商品编号-(销售数量,销售价格,商品名称,商品产地)不符合2NF。会产生数据冗余。
修改:商店表(商店编号,商店名称,商店地址) 商品表(商品编号,销售数量,销售价格,商品名称,商品产地) 这两个是多对多的关系所以 建立中间表 (出货编号,商品编号,商店编号)
如何导入sqlserver行政区划
一、到国家统计局网站,找到县及县以上行政区划页面。
我找到的是这个:
然后将页面上的代码直接复制粘贴到记事本,保存为 e:\temp\region.txt。
二、硬着头皮用SQL SERVER Management Studio导进去。
导入的时候注意一点,就是要在目标表里设置一个标识列。
三、生成区域表
在这里导进去的目标表,只是一个临时用的中间表:region_tmp,我真正要的,是表region。
中间表region_tmp的结构:
region_tmp
======================
id int identity(1,1)
cn varchar(50)
导进去以后,数据如下:
而我想要的区域表region
region
=========================
id int identity(1,1)
code char(6)
name nvarchar(50)
parentId int
所以现在需要将数据再从region_tmp == region。
在导入的时候,之所以要设置一个标识列,就是用来区分邮政编码和地名。在region_tmp,奇数行都是编码,偶数行则是地名,因此可以通过以下语句将编码和地名都写进region的同一行:
INSERT INTO [dbo].[Region]
([code]
,[name]
,[parentId])
SELECT a.cn,b.cn,0
FROM region_tmp a,region_tmp b
WHERE b.id=a.id+1
and (a.id % 2) = 1
四、修改区域表
现在要修改字段region.parentId。就是每个地名记录要有一个父ID,在使用的时候好排序。比如广州的父ID是广东省,天河区的父ID是广州。
--设置市级地名的父ID
UPDATE [dbo].[region]
SET parentid=b.id
FROM [region],[region] b
WHERE LEFT([region].code,2)=LEFT(b.code,2)
AND RIGHT([region].code,4)'0000' AND RIGHT([region].code,2)='00'
AND RIGHT(b.code,4)='0000';
--设置县级地名的父ID
UPDATE [dbo].[region]
SET parentid=b.id
FROM [region],[region] b
WHERE LEFT([region].code,4)=LEFT(b.code,4)
AND RIGHT([region].code,2)!='00'
AND RIGHT(b.code,2)='00';
navicat for sqlserver 查询结果不能修改
navicat本来就是这样设计的,无法在查询结果里面修改的。他的原意是这只是一个从原来的表中衍生出的一个中间表,用户无法对中间表进行修改。这个理念是正确的,navicat也是遵循这样的原则,没有任何问题,只不过sql express这个工具提供修改也只是站在用户的角度上来设计的,让用户体验更好一点,也没有问题。那么问题到底是什么?难不成是用户的问题,没错,就是用户的问题!!我们都知道数据库的基本表的概念,那么中间表呢?只是基本表的一部分,我们用到中间表的时候往往是在给其中一些用户提供他们自己所需要的那部分数据,这才是问题的关键,如果用户可以操作那部分数据很容易就产生一些问题,举一个例子。比如说我有一个字段叫名字,李四访问了自己的那部分数据,然后他把名字改成张三,提示数据库已经存在张三,那么他就知道了张三也是这个数据库里面的一部分。。。这就是问题,所以针对于这个问题来说,你想要在中间表里面修改数据,无解。。。但是应该可以通过其他的办法做,比如说函数,或者直接修改原表的内容。
sqlserver如何用触发器记录每条记录的插入时间和修改时间
你的表(假设表A)触发器没有问题。走一个小弯路吧。新建一个中间表(表B),在这个表上创建触发器,当向B表插入数据时,向A表对应的列插入同一数据。试试这样,应该就可以更新时间
如何从SQL server连接ORACLE,并根据其中间表在lims系统生成样品,最后将样品信息回传到ORACLE。
SQLserver联到oracle,需要建立链接服务器。
在lims系统sample manager上用VGL语言 这个不知道。
其他的,你可以在sqlserver上建立一个作业,作业可以设置定时自动运行你的存储过程。