小编Law*_*gle的帖子

跨数据库共享单个主键序列?

在所有表中使用单个序列作为主键(而不是主键对于给定表是唯一的,它对于所有表都是唯一的)是否可以接受?如果是这样,客观上是否比跨表使用单个主键序列更好。

我是一名初级软件开发人员,而不是 DBA,所以我仍在学习良好数据库设计的许多基础知识。

编辑:如果有人想知道,我最近阅读了我们公司的一位 DBA 对数据库设计的评论,他提到设计没有在整个数据库中使用单个主键是一个问题,这听起来与到目前为止我已经学会了。

Edit2:要回答评论中的问题,这是针对 Oracle 11g 的,但我想知道非数据库特定级别。如果这个问题确实取决于数据库,我很想知道原因,但在这种情况下,我会寻找特定于 Oracle 的答案。

database-design primary-key

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

进行左连接并使每个匹配项都包含一个额外的空行

所以我想做一个左连接,让左表中的每一行都在右表中包含一行空值,即使存在匹配也是如此。

这种类型的连接有名称吗?

有没有比我下面的方法更好的方法(即避免联合)?

SELECT
    T1.C1,
    ...
    T1.CN
    T2.C1,
    ...
    T2.CM
FROM
    Table1 T1
    INNER JOIN Table2 T2
        ON T1.Key1 = T2.Key1

UNION

SELECT
    T1.C1,
    ...
    T1.CN,
    NULL, --NULL 1
    ...
    NULL, --NULL M
FROM
    Table1 T1
Run Code Online (Sandbox Code Playgroud)

(我也可以从左连接开始,然后联合一个选择,就像上面的第二个选择一样,过滤到仅具有匹配 ID 的表,但这仍然是复杂的方法)。

我想知道是否有类似的东西

SELECT
    T1.C1,
    ...
    T1.CN
    T2.C1,
    ...
    T2.CM
FROM
    Table1 T1
    INNER JOIN Table2 T2 INCLUDE_NULL_ROW_WITH_MATCH
        ON T1.Key1 = T2.Key1
Run Code Online (Sandbox Code Playgroud)

如果相关的话,这是专门针对 SQL Server 2008 的。

join sql-server

6
推荐指数
1
解决办法
7056
查看次数

SQL Server 2012:授予读取 ddl 但不能修改的权限?

我需要授予用户什么权限才能查看所有 DDL 代码(例如存储过程代码)但不能编辑其中任何代码?

唯一的可能性似乎是 DDLadmin,但这也允许用户进行编辑。是否有其他一些选择,或者可能是一种授予然后撤销部分 DDLAdmin 的方法?

sql-server permissions ddl

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