标签: schema

约束关系

我有以下设计。每个用户都有它自己的联系人,它自己的主机并将它们分配给一个只属于他的

我想确保您分配给主机属于该分配给的用户

这是我必须在我的应用程序逻辑中确保的东西吗?

如果我设置domains.user_id foreign key为参考host.user_iduser_id.id它会消除我的问题吗?

在此处输入图片说明

顺便说一句,谁能建议我为我的架构设计更好的设计?

mysql schema database-design constraint

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

从数据库模式自动创建 ER 图

我有一个包含 193 个表的数据库,我需要从它们创建一个实体关系图。表之间没有关于 FK 的正式关系。关系映射到 1-* 表。

有问题的数据库是在这里找到的 MusicBrainz 数据库。

SchemaSpy不检测这些关系。

除了我自己手动创建它之外,没有人有任何建议。或者有没有熟悉这个数据库的人可以提供一些帮助?

schema erd database-design database-diagrams

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

通过 information_schema 更新 mysql 触发器——访问被拒绝?

对于 MySQL(实际上是 MariaDB)中的某些触发器,我有一些错误的“定义器”。我认为纠正它们的最简单方法是以下版本:

use information_schema;
update triggers set definer=current_user() where trigger_schema='foobar';
Run Code Online (Sandbox Code Playgroud)

它产生:

ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'
Run Code Online (Sandbox Code Playgroud)

在同一个会话中,我可以使用“删除触发器”和“创建触发器”删除并重新创建触发器,因此我不了解权限问题。我的用户是否需要一些它没有的特权?

mysql schema trigger

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

SQL Server 2012 如何从现有数据库中创建新架构,仅选择数据库对象的子集?

我正在寻找一种从现有数据库创建新模式的方法,只选择数据库对象的子集。即我想要一些“数据库表示”,它只包括明确指定的表的子集。创建包含/无法访问数据库中所有对象的模式的最简单方法是什么。有可能吗?
我正在尝试在 MS SQL Server 2012 R2 中执行此操作。

schema sql-server-2012

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

空白数据库的数据库架构很大。20MB

仅具有架构的空白数据库很大是否正常?或者有没有办法减少初始数据库的大小?

schema sql-server sql-server-2008-r2

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

MongoDB _id 字段有多独特?

我正在尝试为我正在创建的 MongoDB 数据库的文档和集合创建模式。我已经阅读了一些文档,描述_id每个文档在创建时生成的字段。

我还阅读了这篇关于在 Mongo 中实现一对多关系的文章,并决定我的案例属于“一对多”类别。因此,我将从我的“当前”集合中字段引用多个其他集合中的多个其他文档_id。从我在文章中可以看出,这似乎可以正常工作。虽然我依稀记得读过一篇文章说_id字段不能保证在不同的集合中是唯一的,但它们在集合内(原谅我,我找不到它的链接)。

例如,假设我为一家销售苹果和橙子的公司收集了三个系列;OrdersApples、 和OrangesOrders持有有关苹果和橙子订单的文件。ApplesOranges保存有关这些水果的各种类型的数据。

Orders文档中,我可能有字段

{
    ...
    "OrangesOrdered" :
    [
        { "Amount" : 2, "OrangeID" : "OrangeObjectID12"}
    ]
    ...
    "ApplesOrdered" :
    [
        { "Amount" : 4, "AppleID" : "AppleObjectID65"}
    ]
    ...
}
Run Code Online (Sandbox Code Playgroud)

其中OrangeObjectID12_id特定类型 OrangeAppleObjectID65_id字段, 是特定类型 Apple的字段。

有没有可能这两个_id …

schema mongodb

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

默认架构允许在不使用架构前缀的情况下选择 dbo 表

我在我的服务器上创建了一个登录名和一个数据库用户,如下所示:

USE master
GO
CREATE LOGIN MyLogin WITH PASSWORD=N'Password123!'
GO
USE AdventureWorks2014
GO
CREATE USER MyLogin FOR LOGIN MyLogin
GO
ALTER USER MyLogin WITH DEFAULT_SCHEMA=HumanResources
GO
GRANT SELECT ON SCHEMA :: Production TO MyLogin
GO
GRANT SELECT ON SCHEMA :: HumanResources TO MyLogin
GO
GRANT SELECT ON SCHEMA :: dbo TO MyLogin
Run Code Online (Sandbox Code Playgroud)

当我作为 MyLogin 登录时,我现在可以在 HumanResources 模式中选择对象而不使用四部分名称(因为 HumanResources 是该用户的默认模式)

SELECT * FROM HumanResources.Department
Run Code Online (Sandbox Code Playgroud)

现在可以在没有架构名称的情况下运行:

SELECT * FROM Department
Run Code Online (Sandbox Code Playgroud)

这可以。如果我然后尝试从生产模式中的表中选择而不使用模式前缀:

SELECT * FROM ProductDescription
Run Code Online (Sandbox Code Playgroud)

我按预期收到错误。这可以通过使用以下方法解决:

SELECT * FROM Production.ProductDescription
Run Code Online (Sandbox Code Playgroud)

因此,基于此,我需要在从默认架构之外的任何表中进行选择时指定架构名称。

那么为什么当我从 …

schema sql-server permissions sql-server-2014

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

是否可以在 Microsoft SQL Server 中备份数据库的子集?

使用 Microsoft SQL Server,有没有办法备份生产数据库的子集?我只想要数据库结构,以及几个选定表的极少量交易数据。

我想用这个备份文件来刷新开发数据库。

对于 Oracle,我看到这是使用此 Powershell 脚本实现的:

userid="/ as sysdba"
compression=all
directory=TEST_DIR
flashback_time=systimestamp
dumpfile=XX.dmp
logfile=xx.log
schemas=XXXXX
query=SCHEMA.TABLE:"where <condition>
exclude=TABLE:"IN (x)"
Run Code Online (Sandbox Code Playgroud)

schema sql-server backup dump

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

如何创建新的 Oracle 模式?

我对关系 DBMS 非常熟悉,但对 Oracle 不熟悉。我在 Docker 内部运行 Oracle 18c XE(在 MacOS 上)。我使用第三方客户端(MacOS 上的 SQLPro Studio)连接到它。现在我想开始。

如果这是 MySQL,我可以发出CREATE DATABASE whatever; USE whatever;并继续处理这些表。与 Microsoft SQL Server 相同,与 PostgreSQL 类似。我还可以创建一个额外的模式来保持更好的组织。

我认为 Oracle XE 只为您提供一个数据库,我想创建一个合适的模式。此时我在海上。我认为我需要创建一个与模式关联的新用户。

我也知道不同的 RDBMS 对什么是数据库或模式有不同的想法,所以我不确定这是否是正确的定义或解决方案。

我在客户端中创建新用户或新架构都没有成功。

我试过了:

CREATE USER fred IDENTIFIED BY 'h3art0fg0ld`;
Run Code Online (Sandbox Code Playgroud)

但我收到消息:

无效的通用用户名或角色名

我还读到我应该使用类似的东西c##fred,它确实有效,但是 (a) 我真的不知道这意味着什么和 (b) 声明GRANT connect, resource, create sessions TO c##printsdb;给了我“缺少或无效特权”的消息,所以我没有进一步先。

在 Docker 容器中,我不知道我是否可以访问 SQL*Plus,这是一些在线教程所假定的。

如何创建和使用架构,或包含表集合所需的任何内容?

schema oracle oracle-xe docker oracle-18c

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

来自 PostgreSQL 信息架构的意外结果

我编写了一个简单的查询,它应该以人类可读的格式显示任何给定模式的所有表大小:

select table_name, pg_relation_size(quote_ident(table_name))
from information_schema.tables
where table_schema = 'my_schema'
order by 2
Run Code Online (Sandbox Code Playgroud)

当我在 PgAdmin 中运行此查询时,出现以下错误:

ERROR:  relation "my_table" does not exist
SQL state: 42P01
Run Code Online (Sandbox Code Playgroud)

这个错误怎么可能?我根本没有改变 information_schema ,如果关系首先不存在,为什么它会在 information_schema 中?知道这是怎么发生的吗?

schema postgresql database-size information-schema

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