小编MDC*_*CCL的帖子

是否有基于单文件的图形数据库管理系统?

我正在考虑使用图形数据库管理系统(简称 DBMS)作为我的单用户桌面应用程序的应用程序文件格式。

是否有基于单文件的图形 DBMS(图形 DBMS的 SQLite 的“等价物”)?

graph graph-dbms

9
推荐指数
1
解决办法
1043
查看次数

如何用连接替换这个 where 子句?

通常,当我看到使用以下内容的 SQL 时:

select * from employees where epmloyeeTypeId in (select id from type where name = 'emp') 
Run Code Online (Sandbox Code Playgroud)

where用这个替换:

select e.* from employees e 
inner join type t on t.id=e.epmloyeeTypeId and t.name = 'emp'
Run Code Online (Sandbox Code Playgroud)

如果它是一个not in(如下所示)而不是一个in子句,是否可以对逆做同样的事情?

INSERT into Subscriptions(ProjectId, RecordTypeCID, NTID, Active, Added, LastUpdate, UpdateBy)   
 SELECT @ProjectId, RecordTypeCID, @NTID, 1, GETDATE(), GETDATE(), @NTID  
 FROM @Check CHK  
 WHERE CHK.ActiveStatus=1  
        And Not Exists (SELECT SubscriptionId FROM Subscriptions  
                        WHERE ProjectId=@ProjectId           
                        and NTID=@NTID          
                        and RecordTypeCID = CHK.RecordTypeCID
                        ) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server except

8
推荐指数
2
解决办法
5048
查看次数

具有两种可能的所有者/父类型的实体的数据库架构?

我使用带有Sequelize 的PostgreSQL作为我的 ORM。

我有一种类型,User。第二种类型是Group,它可以通过一个GroupMemberships表将任意数量的用户与其关联。Users 也可以拥有任意数量的Groups。

我的第三种类型 ,Playlist可以属于 aUser或 a group。为这种类型设计模式以便它可以拥有一种类型的所有者或两者之一的最佳方法是什么?

我的第一遍创建了两个关联,但一次只填充一个。这可能有效,但看起来很笨拙并且使查询变得困难。

附加信息

以下是我对 MDCCL 通过评论发布的澄清请求的回应:

(1)如果一个播放列表是由给定资集团,可以说,这个播放列表是关系到一个一对多的用户,只要他们是会员这样的小组,对不对?

我相信这在技术上是正确的,但这种一对多关联并不明确存在。

(2) 那么,一个特定的播放列表是否有可能同时被一对多的群组拥有?

不, a 应该不可能被Playlist一对多拥有Groups

(3) 特定播放列表是否可能由一对多拥有,同时由不是该成员的一对多用户拥有?

不,因为如 (2) 中的一对多 from PlaylisttoGroup不应该存在。此外,如果 aPlaylist …

schema postgresql database-design subtypes

8
推荐指数
1
解决办法
1750
查看次数

如何强制由两个外键组成的复合主键的唯一性到同一个表?

我有两张桌子:一张user桌子和一张friendship桌子。假设friendship表格如下所示:

friendship
------------
user_one_id
user_two_id
other_fields
Run Code Online (Sandbox Code Playgroud)

我需要强制执行和忽略ordering值组合的唯一性,因此:(user_one_id, user_two_id)

user_one_id | user_two_id
------------+------------
          1 |          2
          2 |          1  -- the DBMS should throw a unique constraint error when trying to insert a row like this one.
Run Code Online (Sandbox Code Playgroud)

另外重要的一点是,user_one_id代表发起friendship,并user_two_id代表收件人,所以我不能只是做了两个“小”的ID user_one_id

问题

有没有办法使用约束来做到这一点,还是应该以其他方式实现?

postgresql database-design primary-key unique-constraint

8
推荐指数
1
解决办法
1632
查看次数

如何防止登录在 PostgreSQL 中“列出”表或视图定义?

有没有办法防止登录列出架构中的表和列?

我必须授予对远程登录的访问权限才能在单个视图上进行查询;但是,我还必须确保此类登录不能列出该架构上的每个对象。

DENY VIEW ANY DEFINITION TO public;PostgreSQL 上有类似 MS SQL SERVER 的东西吗?

postgresql authentication security authorization permissions

8
推荐指数
1
解决办法
6793
查看次数

为资金转移业务开发数据库,​​其中 (a) 个人和组织可以 (b) 发送和接收资金

在相关的业务背景,既成员组织需要有一个帐户资金资金可以转移

  • 会员会员
  • 会员组织
  • 组织组织,以及
  • 组织成员

注意事项

为了为这种场景构建数据库,我创建了以下三个表:

CREATE TABLE Members ( 
  memberid serial primary key, 
  name varchar(50) unique, 
  passwd varchar(32), 
  account integer 
);

CREATE TABLE Organizations (  
  organizationid serial primary key, 
  name varchar(150) unique, 
  administrator integer references Members(memberid), 
  account integer 
);

CREATE TABLE TransferHistory  
  "from" integer, -- foreign key?
  "to" integer, -- foreign …
Run Code Online (Sandbox Code Playgroud)

postgresql database-design subtypes

8
推荐指数
1
解决办法
3045
查看次数

父/子关系表设计 - 最佳实践是什么?

我有一个用于存储“任务”的表。任务可以是父项和/或子项。我使用“ ParentID ”作为 FK 引用同一张桌子上的 PK。它是 NULLABLE,所以如果它是NULL它没有父任务。

示例是下面的屏幕截图...

在此处输入图片说明

在我的团队中,有人认为创建一个单独的表来存储 ParentID 会更好(对于规范化/最佳实践),从而避免表中出现 NULL 并导致更好的规范化设计。

这会是一个更好的选择吗?或者查询会更困难并导致性能问题?

我们只想从一开始就做好设计,而不是以后再发现问题。

现有表的 SQL-DDL 代码:

CREATE TABLE [Tasks].[TaskDetail]
(
    [TaskDetailID] [int] IDENTITY(1,1) NOT NULL,
    [TaskName] [varchar](50) NOT NULL,
    [TaskDescription] [varchar](250) NULL,
    [IsActive] [bit] NOT NULL CONSTRAINT [DF_TaskDetail_IsActive] DEFAULT ((1)),
    [ParentID] [int] NULL,
    CONSTRAINT [PK_TaskDetail_TaskDetailID] PRIMARY KEY CLUSTERED ([TaskDetailID] ASC),
    CONSTRAINT [FK_TaskDetail_ParentID] FOREIGN KEY([ParentID]) REFERENCES [Tasks].[TaskDetail]([TaskDetailID])
);
Run Code Online (Sandbox Code Playgroud)

database-design sql-server hierarchy

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

如何检查表的 SYSTEM_VERSIONING 是否打开?

我知道 SQL Server 2016 让我们使用 SYSTEM_VERSIONING 像:

CREATE TABLE EmpSalary  
(    
     EmpID int NOT NULL PRIMARY KEY CLUSTERED  
   , SalaryAmt decimal (10,2) NULL  
   , SalaryBeginDT datetime2 GENERATED ALWAYS AS ROW START NOT NULL  
   , SalaryEndDT datetime2 GENERATED ALWAYS AS ROW END NOT NULL  
   , PERIOD FOR SYSTEM_TIME (SalaryBeginDT, SalaryEndDT)     
)    
WITH (SYSTEM_VERSIONING = ON);
Run Code Online (Sandbox Code Playgroud)

同样要停用此功能,只需更改表:

ALTER TABLE EmpSalary SET (SYSTEM_VERSIONING = OFF );
Run Code Online (Sandbox Code Playgroud)

我的问题是如何检查表的 SYSTEM_VERSIONING 是否打开,然后更改表?

sql-server ddl data-versioning sql-server-2016

8
推荐指数
2
解决办法
3853
查看次数

Postgres jsonb 列或标准规范化表?

我正在实施一个带有支付系统的应用程序,我需要记录通过该应用程序进行的交易。此外,我需要使用有关交易的一些信息来呈现一些 KPI。我已经在 Postgres 中有一个实现,其中我的表有两列idtransaction(jsonb)。在我的交易列中,我有一个如下所示的对象:

2018: {
   November: {
      list_of_transactions: [],
      totalAmountEarned: 0,
      numberOfTransactions: 0,
      avarageSpending: 0,
      numberOfCoins: 0,
      numberOfUsers: 0
   }  
}
Run Code Online (Sandbox Code Playgroud)

现在,每当我做一个交易,我检查yearmonth自带的请求存在,否则将它们添加到该对象,并推动事务中list_of_transactions,并相应地更新所有的其他键。

我想知道这是否是解决问题的好方法,或者实际上是一种非常糟糕的方法。创建不同的表并以“SQL 方式”对它们进行规范化是更好的解决方案吗?你有什么建议吗?

其他注意事项

一个附带问题:既然会有很多很多交易,每年创建一个新表是个好主意吗?

涉及的所有数据的结构将完全相同,因此我应该创建多个数据库并进行连接。由于会有很多很多交易:每年创建一个新表是个好主意吗?

postgresql performance database-design

8
推荐指数
1
解决办法
1895
查看次数

Postgres 会执行在视图中未选择的计算列的计算吗?

我试图了解从视图中选择数据的性能影响,其中视图中的一列是原始表中其他数据的函数。

无论计算列是否在所选列的列表中,是否都会执行计算?

如果我有一张桌子并且视图像这样声明

CREATE TABLE price_data (
    ticker     text,          -- Ticker of the stock
    ddate      date,          -- Date for this price
    price      float8,        -- Closing price on this date
    factor     float8         -- Factor to convert this price to USD
);

CREATE VIEW prices AS 
    SELECT ticker, 
           ddate,
           price,
           factor,
           price * factor as price_usd
    FROM price_data
Run Code Online (Sandbox Code Playgroud)

乘法类似下面的查询来执行?

select ticker, ddate, price, factor from prices
Run Code Online (Sandbox Code Playgroud)

是否有参考以一种方式或另一种方式保证这一点?我正在阅读有关 Postgres 规则系统的文档,但我认为答案确实在于优化器,因为规则系统文档中没有任何内容表明它不会被选中。

我怀疑在上述情况下没有执行计算。我将视图更改为使用除法而不是乘法,并将0for插入factorprice_data. 上面的查询没有失败,但如果修改查询以选择计算列,则修改后的查询失败。

有什么方法可以理解在执行 a 时 …

postgresql view

8
推荐指数
1
解决办法
718
查看次数