小编ype*_*eᵀᴹ的帖子

是否有 DBMS 允许引用视图(而不仅仅是基表)的外键?

受到 Django 建模问题的启发:Database Modeling with multiple many-to-many Relations in Django。db-design 是这样的:

CREATE TABLE Book
( BookID INT NOT NULL
, BookTitle VARCHAR(200) NOT NULL
, PRIMARY KEY (BookID)
) ;

CREATE TABLE Tag
( TagID INT NOT NULL
, TagName VARCHAR(50) NOT NULL
, PRIMARY KEY (TagID)
) ;

CREATE TABLE BookTag
( BookID INT NOT NULL
, TagID INT NOT NULL
, PRIMARY KEY (BookID, TagID)
, FOREIGN KEY (BookID)  REFERENCES Book (BookID)
, FOREIGN KEY (TagID) …
Run Code Online (Sandbox Code Playgroud)

foreign-key database-design referential-integrity

23
推荐指数
3
解决办法
6889
查看次数

负载下插入性能提高:为什么?

我有一段代码可以执行插入到高度非规范化的表中。这些表的列数从 ~100 到 300+ 不等。这是 SQL Server 2008 R2,在 Windows Server 2008 上运行。

每个插入包括插入到同一事务下的多个表。有些插入是由 NHibernate 批处理的,但有些不能,但它们都在同一个事务下。

当我通过重复调用一段执行插入的代码来执行插入 500 次时,我得到平均约 360 毫秒。

奇怪的是,当我使用 4 个进程(在 Windows Server 2008 下从 4 个不同的命令提示符运行相同的 exe)同时运行测试代码时,每次调用的插入性能变得更好。我看到突发速度高达 90 毫秒(快了几乎 X4)。我正在测量代码中的插入时间。

由于这 4 个进程彼此一无所知,我假设这与 SQL Server 有关,但我完全不知道为什么。我想知道为什么会发生这种情况,以及是否有任何配置可以让我在插入不那么频繁的情况下获得相同的性能。

同样欢迎有关 SQL Server 监视方法以了解数据库级别发生的情况的建议。

sql-server sql-server-2008-r2

19
推荐指数
2
解决办法
1450
查看次数

设计用户身份验证(角色和权限)模块

我正在尝试为将成为 Delphi UI 应用程序后端的 MS SQL Server 数据库建模用户身份验证模块。基本上,我想拥有用户只属于一个组的用户帐户。一个组可以拥有“n”个权限。

我还想向数据库添加密码历史记录,因为用户将需要根据应用程序设置(例如,每 90 天)更改其密码。

我还想在每次用户登录和退出时记录一个事件。我可能会将其扩展到未来的其他活动。

下面你会发现我的第一个破解。请让我知道任何改进它的建议,因为这是我第一次这样做。

您是否认为需要针对基于角色的安全性和密码规则/到期期限的约束的其他属性?

数据库设计

database-design datatypes database-tuning relational-theory

17
推荐指数
1
解决办法
3万
查看次数

如果存在则更新否则插入

我正在尝试创建一个STORED PROCEDURE将用于UPDATE名为machine. 此表包含三列(machine_idmachine_namereg_id)。

在上述表中,reg_id( INT) 是一列,其值可以更改为 a machine_id

我想定义一个QUERY/PROCEDURE来检查reg_id该表中是否已经存在。如果是,则为UPDATE该行,否则INSERT为新行。

有人可以帮我写那个QUERY/PROCEDURE吗?

mysql

17
推荐指数
2
解决办法
12万
查看次数

MySQL子查询的问题

为什么这个查询

DELETE FROM test 
WHERE id = ( SELECT id 
             FROM (SELECT * FROM test) temp 
             ORDER BY RAND() 
             LIMIT 1
           );
Run Code Online (Sandbox Code Playgroud)

有时删除 1 行,有时删除 2 行,有时什么都不删除?

如果我用这种形式写:

SET @var = ( SELECT id 
             FROM (SELECT * FROM test) temp 
             ORDER BY RAND() 
             LIMIT 1
           ); 
DELETE FROM test 
WHERE id=@var;
Run Code Online (Sandbox Code Playgroud)

那么它可以正常工作 - 子查询有问题吗?

mysql

16
推荐指数
2
解决办法
6805
查看次数

递归自联接

我有一张comments表,可以简化为:

comments
=======
id
user_id
text
parent_id
Run Code Online (Sandbox Code Playgroud)

where 可以parent_id为空,但可能是其父注释的键。


现在,我如何才能select对特定评论的所有后代?
评论可能低了好几层……

mysql join foreign-key select

16
推荐指数
3
解决办法
6万
查看次数

确定每个月的第三个星期五

我需要确定 SQL Server 中日期范围“1.1.1996 - 30.8.2014”的“每个月的第三个星期五”的日期。

我希望我应该使用的组合DENSE_RANK(),并PARTITION BY()以一套“等级= 3”。但是,我是 SQL 新手,无法找到正确的代码。

sql-server date-format sql-server-2012 date

16
推荐指数
3
解决办法
2万
查看次数

为什么 Oracle 没有 nolock?

在 MS SQL Servernolock中可以用于此目的。

为什么我们不能在Oracle和plsql中使用它?

oracle sql-server

16
推荐指数
1
解决办法
3万
查看次数

使用表别名更新请求

执行这个请求:

update table t1 set t1.column = 0 where t1.column2 = 1234
Run Code Online (Sandbox Code Playgroud)

收到此错误:

关系“表”的“t1”列不存在

这个请求在 MySQL 中运行良好。
为什么我会在 PostgreSQL 中收到此错误?

postgresql update

16
推荐指数
2
解决办法
1万
查看次数

在 LIKE 运算符中选择多个值

我有下面给出的 SQL 查询,我想使用like运算符选择多个值。

我的查询正确吗?

SELECT top 1 employee_id, employee_ident, utc_dt, rx_dt 
FROM       employee
INNER JOIN employee_mdata_history 
ON         employee.ident=employee_mdata_history.employee_ident 
WHERE      employee_id like 'emp1%' , 'emp3%' 
ORDER BY   rx_dt desc
Run Code Online (Sandbox Code Playgroud)

如果没有,有人可以纠正我吗?

我的表有大量以'emp1'和开头的数据'emp3'。我可以根据前 3 个“emp1”和前 2 个“emp3”过滤结果rx_dt吗?

sql-server-2008 sql-server operator like

16
推荐指数
2
解决办法
25万
查看次数