标签: database-design

这个关系中的素数和非素数属性是什么?

R(HIJKLMNO)

L -> MNO
HI -> JKLMNO
J -> KL
K -> H
Run Code Online (Sandbox Code Playgroud)

嗨是一把钥匙。

因此,H 是一个素属性。

但是,H也属于非关键部分。

这个关系中的素数和非素数属性是什么?

normalization database-design

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

角色和权限的“正确设计”模式会是什么样子?

我正在创建一个与 Discord 具有类似角色和权限系统的应用程序。

基本上

  • 用户是组的成员
  • 组有角色
  • 角色有权限
  • 用户一次可以与一个角色关联。

我不知道如何设计这样的系统。最初,我想我应该有一个roles表,对于每个权限都会有一个布尔列,例如:can_change_nickname

但这似乎不太正确...

如果您有任何推荐的读物,或者可以提供详细说明为什么这样做的答案,我将非常感激。

  • AUSER是 1 个或多个的成员GROUPS
  • AGROUP可以有 1 个或多个ROLES
  • AROLE可以有 1 个或多个PERMISSIONS
  • AUSER只能PERMISSION通过将 aROLE与这些 一起分配来获得PERMISSIONS
  • 每个人都GROUP将根据应用程序提供的功能和内容类型共享通用权限
  • 不同的ROLES可以共享相同的PERMISSIONS

所以看起来我需要一个角色和权限的表。现在我只需要找到PERMISSIONS表格的样子。

schema postgresql database-design

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

为视图计数创建单独的表是一个好习惯吗?

我创建了一个blog表,其中有一个名为的字段views_count,但我听说更新views_count每个页面视图上的字段很麻烦。所以我现在创建了一个单独的视图计数表,如下所示:

views:
id,
blog_id,
ip_address,
counter
Run Code Online (Sandbox Code Playgroud)

现在我将独特的访问存储在views表中。当我在视图表中保存记录时,我也会更新blog字段views_count字段,那么这是一个好方法吗?或者有更好的选择吗?

完整创建架构:

CREATE TABLE `video_blog` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `category_id` int(11) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `sub_title` varchar(255) DEFAULT NULL,
  `slug` varchar(255) NOT NULL,
  `video_embed_code` text,
  `video_thumbnail` varchar(255) DEFAULT NULL,
  `video_thumbnail_alt` varchar(255) DEFAULT NULL,
  `description` text,
  `views` int(11) UNSIGNED NOT NULL,
  `is_active` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY …
Run Code Online (Sandbox Code Playgroud)

mysql database-design best-practices relations

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

在 SQl Server 中恢复备份所需的最小磁盘空间?

假设我要在 SQL Server 中恢复备份(2 GB),我的磁盘中有足够的空间(20 GB),但是 SQL Server 是否遵循任何算法来计算所需的最小磁盘空间或只是随机检查磁盘空间和备份才能成功恢复。

因为我想了解SQL Server的内部工作原理。

提前致谢。

database-design sql-server backup disk-space restore

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

我应该将语义上几乎相同的实体拆分到不同的表中吗?

假设您有 2 个不同的实体:

  • 实体 1:PersonalNote - 您为自己创建的注释
  • 实体 2:SharedNote - 您与其他人分享的笔记

PersonalNote 也可以被视为仅与您自己共享的 SharedNote。因此,它们的数据库模式可以相同或几乎相同。

这种语义差异是否足以证明每个数据库表都需要一个单独的数据库表,或者最好将两者合并到同一个数据库表中,因为它们的模式可以相同(其中一个有一个 NULL 字段)?

两个表的一个缺点是有很多看起来相似的代码和几乎相同但独立的数据类。我认为一张桌子的一个缺点是性能。

我已经考虑这个问题有一段时间了,但我无法决定选择哪个。也许我也错过了一些重要的东西。这里最好的选择是什么?

database-design table

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

2 个外键具有相同辅助列值的约束

假设我有一个像 Users 这样的表,它有一个 id 和一个 company_id,我想创建一个第二个表,其中有一对用户 id 的 ex: (primary_key_id, user1_id, user2_id)。

这些用户对的用户 ID 必须位于同一公司。

如何向我的数据库添加约束以实现此要求?

mysql database-design constraint

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

如果PostgreSQL数据库或服务器异常关闭,脏数据会怎样?

假设我的 PostgreSQL 实例突然异常停止,并且数据是脏的并且没有保存在 RAM 或 WAL 中。那样的话会发生什么?

我可以从哪里恢复这些数据?如果服务器也关闭,在这种情况下脏数据会发生什么?

是否有任何单独的文件来存储脏数据以进行恢复?

postgresql database-design postgresql-performance postgresql-13 postgresql-14

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

如何设计数据库?

请按步骤描述过程。你使用什么工具?

mysql postgresql database-design

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

为什么在少数列上启用聚集索引属性而不在其他列上启用?

听说只能有一个聚集索引?我可能错了,但我确定我在某个地方读过。

在我的 SQL Server 2005 表之一中,我有以下列:

SerialNum ------- BigInt -------- 主键

-------- nvarchar(50)

SchemeType ------ nvarchar(50)

当我使用 SQL Server Management Studio 在设计模式下打开表时,我注意到为District启用了聚集索引属性,而为SchemeType禁用了

如果只能有一个聚集索引,那么为什么在SerialNum已定义为主键的情况下,District 还要启用此属性?

如果可以有更多的聚集索引,那么如何为SchemeType列启用此属性?

sql-server-2005 database-design sql-server index-tuning

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

为 SQL 用户设置对所有对象的权限

我有一个过程,它遍历数据库中的所有对象并为它们分配适当的权限给该对象。我想知道是否有更好的方法来做到这一点?我使用模型数据库来创建新数据库,因此每次创建新数据库时都必须运行它。这是它的外观的一个想法(注意:从一开始就丢失了一个块,它会删除所有用户并重新创建必要的用户;自从 SID 更改后,这是必要的):

CREATE PROCEDURE usp_SetPermissions 
AS 
 BEGIN

DECLARE @CurrentId INT
DECLARE @ObjectName NVARCHAR(128)
DECLARE @Message NVARCHAR(160)
DECLARE @Error INT
DECLARE @Sql NVARCHAR(256)

CREATE TABLE #tmpDbObjects 
(
   ID INT IDENTITY(1,1),
   ObjectName NVARCHAR(128),
   Completed BIT
)

INSERT #tmpDbObjects(ObjectName, Completed)
SELECT DISTINCT [Name], 0 As Completed 
FROM sys.objects 
WHERE [type] = 'U' AND is_ms_shipped <> 1

WHILE EXISTS (SELECT 1 FROM #tmpDbObjects)
 BEGIN
    -- Pick first uncompleted object
    SELECT TOP 1 @CurrentId = ID,
                 @ObjectName = ObjectName
    FROM #tmpDbObjects

    -- Grant permissions …
Run Code Online (Sandbox Code Playgroud)

security database-design sql-server

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