标签: schema

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

我正在创建一个与 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
查看次数

将数据从一个数据库中的自定义架构移动到新数据库中的默认架构需要哪些步骤

为了便于论证,让我们假设我在单个 SQL Server 数据库中有以下表。

mySchema.Users
mySchema.Products
-- 
secondSchema.Users
secondSchema.Contracts
secondSchema.ContractItems
--
oldSchema.People
oldSchema.Table1
oldSchema.Table2
oldSchema.Table3
oldSchema.Table4
-- 
and so on and so forth
Run Code Online (Sandbox Code Playgroud)

每个“模式”都完全独立于其他“模式”。它们位于单个数据库中的唯一原因是托管和成本限制。在一个完美的世界中,这些本来应该在单独的数据库中。

当(如果有的话)我需要将 secondSchema 移动到一个新数据库时,我需要做什么,这完全是因为它的使用量增加了,现在需要将它存放在自己的数据库中。


我已经查看了关于何时使用非 dbo 模式与新数据库的决策标准,正如我上面所说的,它们在同一个数据库中没有关系或事务的理由。他们在那里是出于成本原因。

schema sql-server

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

在 Oracle 中,如何授予一个用户更改另一个用户架构的权限?

我有一个 Oracle DB (10.2),我有一个顾问 (Dogbert),我想在它上面做一些工作。特别是他们需要更改我的许多用户使用的模式(我们称之为 Wally)中表的表结构。

我不想向 Dogbert 提供 Wally 架构帐户的密码。所以我为 Dogbert 创建了一个临时帐户。

如何授予 Dogbert 的帐户权限以更改 Wally 架构的结构?我知道我当然可以给 Dogbert 插入/更新/删除/选择,但这不会影响结构。

schema oracle permissions

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

具有许多属性的数据建模,其中很少适用于每条记录

我对数据建模很陌生,所以如果我错过了一些明显的东西,请原谅。我试图决定一个模式(或者可能是一个 DBMS)来处理一些数据,其中有很多可能的属性(可能是 60-100),但只有少数适​​用于每条记录。这是我看到的选项。

选项 1:非常宽的桌子

只需将每个属性包含为列,对于任何给定记录,大多数属性将为 NULL。

优点:保持架构简单,保持查询简单

缺点:不优雅,笨拙,添加/删除属性需要更改架构

选项 2:实体-属性-值模型

用于列出属性及其值的单独表格。这就是我之前看到这个问题的处理方式。例如,WordPress 在他们的*meta表格中使用了这样的东西。

优点:概念上易于理解,灵活

缺点:查询构造变得很痛苦,性能受到影响,最终会得到大量重复数据(即一遍又一遍地列出相同的属性名称)。

选项 3:NoSQL 文档或图形 DBMS

使用专为处理无模式数据而构建的 DBMS。我看过 MongoDB、RethinkDB 和 OrientDB。OrientDB 看起来很酷,但我不懂 Java,而且它似乎主要是 Java 的东西(例如,PHP 驱动程序看起来有问题)。

优点:专为处理灵活的模式而构建,速度快

缺点:关系似乎很困难,我没有使用它们的经验,似乎有很多重复的数据(例如,如果我想更改属性名称会发生​​什么?),查询似乎更复杂

附带说明一下,此应用程序不会获得很多流量,并且并发连接也很少。因此,可扩展性是一个相当小的问题。感谢您的任何建议。

schema nosql database-design

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

Key-Value 类型的表还需要一个自增键吗?

假设我有一个非常简单的表来存储类似变量的数据,如下所示:

+-----------+-----------------+
|    key    |      value      |
+-----------+-----------------+
| site_url  | helloworld.com  |
| site_name | Hello World     |
| time_zone | Asia Taipei     |
+-----------+-----------------+
Run Code Online (Sandbox Code Playgroud) 我还需要创建一个ID列吗?
或者只是简单地将key列设置为主键
key将是唯一的

schema database-design

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

PostgreSQL 如何获取不区分大小写的模式名称

我创建了一个带有大写字母的架构,如下所示:

CREATE SCHEMA "requeteSQL"  AUTHORIZATION ......;
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试GRANT一些特权时,例如:

GRANT SELECT ON ALL TABLES IN SCHEMA requetesql  TO ....;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR:  schema "requetesql" does not exist
Run Code Online (Sandbox Code Playgroud)

schema postgresql

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

更改所有架构对象的所有者

我想更改架构中所有对象的所有者。为此,我使用以下函数:

CREATE OR REPLACE FUNCTION chown(in_schema VARCHAR, new_owner VARCHAR) 
RETURNS void AS
$$
DECLARE
  object_types VARCHAR[];
  object_classes VARCHAR[];
  object_type record;

  r record;
BEGIN
  object_types = '{type,table,sequence,index,table,view}';
  object_classes = '{c,t,S,i,r,v}';

  FOR object_type IN 
      SELECT unnest(object_types) type_name, 
                unnest(object_classes) code
  loop
    FOR r IN 
      EXECUTE '
          select n.nspname, c.relname 
          from pg_class c, pg_namespace n 
          where n.oid = c.relnamespace 
            and nspname = ''' || in_schema || '''
            and relkind = ''' || object_type.code || ''''
    loop 
      raise notice 'Changing ownership of % %.% to …
Run Code Online (Sandbox Code Playgroud)

schema postgresql role plpgsql

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

在 dbo 模式上设置只读权限,但允许在另一个模式中创建实体?

是否可以在数据库中创建自定义架构,以便在该数据库中对 dbo 架构具有只读访问权限的用户可以设置为能够为自定义架构创建和修改实体?

schema sql-server permissions sql-server-2008-r2

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

多对多 - 概念

我知道有很多关于多对多关系的问题,但似乎没有一个对我有用,因为它更多地是关于概念而不是代码的问题。所以我需要澄清一下如何实现我的想法。

我正在尝试制作乐高数据库。我有可以有很多小人仔的套装。某些 MINIFIGURES 也可以出现在许多 SETS 中。我是这样做的,在 Excel(csv) 文件中。它是 SETS “表”。

Id  Set_Name                        Set_Id   Minifigures_List
1   Spider-Man's Doc Ock Ambush     6873     Doc Ock, Spider-Man, Iron Fist
2   Spider-Man: Spider-Cycle Chase  76004    Spider-Man, Venom, Nick Fury
3   Electro                         5002125  Electro
.....
Run Code Online (Sandbox Code Playgroud)

我的数据库实现的第一步是创建一个SETS表。

CREATE TABLE Sets (
ID int NOT NULL AUTO_INCREMENT,
Set_Name varchar(255),
Set_Id varchar(255),
);
Run Code Online (Sandbox Code Playgroud)

然后插入数据:

Insert into Sets (Set_Name, Set_Id)
VALUES ('Spidermans Doc Ock Ambush' , '6837'), 
('Spider-Man: Spider-Cycle Chase' , '76004')
('Electro', '5002125')
;
...
Run Code Online (Sandbox Code Playgroud)

下一步是创建一个MINIFIGS …

schema database-design many-to-many

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

区分sql server中的test和prod数据

我们在 ms sql server 中有一个生产数据库,我的团队也在同一个 prod 数据库上进行测试。我想知道哪些是测试数据,以便将来我可以删除这些条目。我如何区分这些?任何帮助,将不胜感激。谢谢

schema database-design sql-server

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

为什么不在 PostgreSQL 中嵌套模式?

我只使用 PostgreSQL,我这辈子再也不会切换数据库软件了,所以我不在乎与一些理论上的“SQL 标准”兼容,这些标准实际上并不存在。

我喜欢“模式”的想法,我很清楚它们是什么,但让我烦恼的一件事是你不能嵌套它们。因此,您只能有一个“类别”,任何“子类别”都必须是表名的一部分。

为什么不支持嵌套模式?既然“模式”无论如何都不在 SQL 标准中,为什么它们不完全采用并允许嵌套模式?

当然,我还没有真正需要它,但它在理论上和各种复杂情况下似乎很有用。

schema postgresql

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

如何从 MySQL 模式生成 Cassandra 数据模型?

是否有用于从 MySQL 数据库生成 Cassandra 模型的工具?

mysql schema cassandra

-4
推荐指数
1
解决办法
962
查看次数