标签: schema

如何在线有效地创建新的 PRIMARY KEY CLUSTERED 定义

给定一个表具有主键定义(作为聚集索引),我想有效地更改定义(或者至少,刚刚聚集索引)的PRIMARY KEY的网络

我想简单地执行以下操作:

CREATE UNIQUE CLUSTERED INDEX PK_MyTable ON dbo.MyTable
(
    [Col2] ASC
) WITH (DROP_EXISTING = ON, ONLINE = ON);
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误:Cannot recreate index 'PK_MyTable'. The new index definition does not match the constraint being enforced by the existing index.. 我明白为什么。

有没有另一种方法来实现这一点?

对于背景:我们有一个只能通过非聚集索引查询的表。该索引的特性非常适合作为表的聚集索引(即唯一且不变的窄键,插入主要在“末尾”)。当前的 PRIMARY KEY(聚集索引)只是一个代理键。该表不是任何 FK 关系的目标,并且从不通过当前 PRIMARY KEY 查询行。我们想在线有效地更改聚集索引。我们正在运行企业版。

如果条款“在线”操作;至少我们希望继续插入新行,但我们可以暂时挂起查询,直到操作完成。

如果无法在线使用现有表执行此操作,是否有一种方法(可能涉及新表并复制数据)可以在尽可能少的中断情况下工作?

schema sql-server primary-key clustered-index

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

为科学数据设计。具有数百列的数据表或具有通用值列和数百行 (EAV) 的数据表?

我正在尝试改进我最近开始工作的生物医学科学实验室的数据存储。现有的工作流程非常糟糕,涉及许多不同格式的 Excel 工作表,所有这些工作表都通过复制粘贴和错误宏的过程进行聚合。

我的目的是创建一个简单的 python 脚本,它将实验的所有数据聚合到 SQLite 数据库中,然后生成必要的 CSV/XLSX 输出。

我的问题是,对于我们实验的单次试验,我们最终在大约 10 个不同的时间点记录了大约 100 个变量。我最初的冲动是创建一个valuevariable表:

CREATE TABLE value (val_id INTEGER PRIMARY KEY, 
                    value TEXT, 
                    var_id INTEGER,
                    event_id INTEGER,
                    exp_id INTEGER,
                    FOREIGN KEY (var_id) REFERENCES variable(var_id),
                    FOREIGN KEY (event_id) REFERENCES event(event_id),
                    FOREIGN KEY (exp_id) REFERENCES experiemnt(exp_id)
);

CREATE TABLE variable (var_id INTEGER PRIMARY KEY,
                      var_name TEXT,
                       var_type TEXT
);

value:
val_id | value | var_id | ...
0      | 10    | 0
1      | "ROSC"| 5

variable: …
Run Code Online (Sandbox Code Playgroud)

schema database-design eav

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

如何创建只能访问一个数据库中一个模式的登录名和用户

我执行了以下操作:

USE [MyDatabase];
GO
CREATE LOGIN [MyDomain\MyAccount] FROM WINDOWS WITH DEFAULT_DATABASE=[MyDatabase];
CREATE USER [MyDomain\MyAccount] FOR LOGIN [MyDomain\MyAccount];
GRANT EXECUTE   ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
GRANT SELECT    ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
GRANT INSERT    ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
Run Code Online (Sandbox Code Playgroud)

(我没有授予任何角色,因为我不希望此登录名能够访问此数据库中的任何其他架构。)

我以 MyDomain\MyAccount 的身份运行 SSMS(以不同的用户身份运行)。然后我尝试连接到这个实例。但是,我得到:

无法打开用户默认数据库。登录失败。用户
“MyDomain\MyAccount”登录失败。(Microsoft SQL Server,错误:4064)

如果我在连接属性中将默认数据库设置为 MyDatabase,我会得到相同的结果。

我运行了 Profiler 跟踪并看到错误 18456 状态 38:

用户“MyDomain\MyAccount”登录失败。原因:无法打开明确指定的数据库“MyDatabase”。[客户:MyIpAddress]

接下来是错误 18456 状态 40:

用户“MyDomain\MyAccount”登录失败。原因:无法打开登录属性中指定的数据库“MyDatabase”。[客户:MyIpAddress]

MyDatabase 在线,我可以使用其他登录名轻松连接到它。我需要向 MyDomain\MyAccount 授予哪些额外权限?还有什么我想念的吗?

schema sql-server permissions sql-server-2012 logins

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

MySql 发票和订阅模式

我建立了一个电子商务数据库,我正在添加订阅。请参阅下面的简化结构。

orders
id, customer_id

order_items
id, order_id, product_id

invoices
id, order_id

subscriptions
id, customer_id, product_id, run_date
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是该invoices表需要一个order_id但订阅只会生成一张发票。我可以将原件order_id放在订阅表中以跟踪沿袭,但随后会变得混乱,因为该invoices表将具有重复的订单 ID。我试图消除orderorder_items和保持invoices表格并添加一个invoice_items完全表绕过订单ID,但我认为它更有意义,让他们因为人们还可以购买正规产品,如T恤,而这些都是技术上的订单。是否有推荐的方法来构建表格以便正确生成发票?订单是否应该用于单次购买的产品而发票仅用于订阅?

mysql schema database-design

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

在 AUTHORIZATION 中使用多用户在 db 中创建 postgres 模式

是否可以在同一个数据库中创建一个由多个用户拥有或访问的模式?

我正在阅读postgres create schema文档和postgres alter schema文档,并且没有提供多个用户的语法。

我也在谷歌上搜索这样的解决方案,无论是简单的还是困难的,但一无所获,甚至没有找到任何解决方法。

请问您能否指出解决方案或可能的解决方法,或者让我确定这种事情无论如何都不可能?

schema postgresql authorization users postgresql-9.3

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

更新:关系(或 NoSQL)数据库设计

(用更多细节更新了这个问题。决定使用关系数据库,并希望对其设计发表一些评论)

该数据库保存了造船的装配指令数据,稍后在增强现实 Android 应用程序中使用。应用程序要求服务器 (Node.JS) 提供必要的文件。

简单的说:工作包包含几个零件,必须安装,每个部分有文件所需的应用程序所需。

数据库结构

  • 工作包依赖于其他工作包(WD_Dependencies),上图中S1依赖于1和2;
  • 工人可以被分配一个特定的工作包,如果没有,返回的工作包TypeDepartment之间匹配的组合。

更新:

(在新选项卡中打开以获得更好的查看效果)

数据库设计

数据库在项目蓝图和该蓝图的具体执行之间“划分”。这也允许多次执行同一蓝图。

问题:

  1. 这是一个好的设计吗?划分蓝图和项目?
  2. 递归查找工作包的所有依赖项的高效 SQL 查询?
  3. 您是否发现关系或冗余有任何问题?
  4. 欢迎任何意见或帮助。

我知道这可能是一个广泛的/意见问题,但我对这种规模的数据库没有经验,希望得到帮助。

mysql schema database-design relational-theory

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

ER 与数据库模式图

当我在网上搜索“ER 图”和“数据库模式”时,找到了这 3 种图类型,但它们都被称为“ER 图”。我想知道:

  • 什么是数据库架构图,什么是 ER 图?
  • 为什么都命名为“ER图”?

图一 在此处输入图片说明

schema erd

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

Web 开发公司的 ERD

我正在研究一个 ERD,它表示Web 开发公司行为模型中实体之间的关系。在那里我有这样的实体:

  1. 顾客
  2. 服务 -----------(如:网页开发、网页设计、网页咨询、...)
  3. 订单项 -------(如:网页开发、网页设计、网页咨询等)
  4. 命令
  5. 发票
  6. 项目
  7. 项目阶段
  8. 任务 ---------------(如:网页开发任务 3、网页设计任务 7)
  9. 开发商
  10. 交付 -----------(例如:开发的网络应用程序、网络咨询会议、...)

到目前为止,我有这张图,但我知道它仍然存在重大问题,这只是一个起点:

ERD1

主要概念

  • 客户在order-items 上生成services,组合形成与order相关的invoice
  • 每个project都有多个project-phases,每个都project-phase与一个 相关order
  • 每个project-phase都有多个tasks,每个都分配给一个developer
  • 每个project-phase都有一个delivery,将在相关orders付款后交付invoice

问题

  1. hascontains完全一样的吗?如果不是,如何在他们之间选择关系?!什么措施?!
  2. 主要概念部分是否有任何合理的问题?
  3. 任何有用的想法或建议来改进这个模型?

对此有任何帮助,将不胜感激。

更新 1

精制版图

ERD2

更新 2

考虑一个快餐店的类比会有所帮助:

  1. 客户 ---------- 饥饿的人 …

schema erd database-design database-diagrams

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

多语言内容的高效数据库模式?

假设我有一个用于博客文章posts、 和架构的表

id
author
title
content
Run Code Online (Sandbox Code Playgroud)

每个都post可以属于一些categories

id
name
descrtiption
Run Code Online (Sandbox Code Playgroud)

所以一篇博文可以属于多个类别。

显然titleand contentin posts、 andnamedescriptionincategories可以翻译成不同的语言。

那么,考虑到现有的 db 模式设计,扩展对多语言应用程序的支持的最有效和最合理的方法是什么?

schema database-design application-design

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

金融数据库架构

我的公司正在启动一项旨在从头开始构建财务数据库的新计划。

我们将通过以下方式使用它:

  • 时间序列分析:公司的财务数据(例如:IBM 一段时间内的固定资产总额)、聚合(例如:材料部门一段时间内的固定资产总额)等。
  • 单一公司快照:单一公司的各种数据点
  • 在单个时间范围内(通常是当天)跨多个数据字段分析多家公司。
  • 想法和自定义因素的回测、排名分析、数据分析等。

数据的大致范围:

  • 3000家企业
  • 3500 个数据字段(例如:固定资产总额、收益等)
  • 500 个聚合级别

周期:每日、每月、每季度、每年

20 年的回顾会随着时间的推移而增长

问题:在我们的 PostgreSQL 数据库中,我们应该使用什么模式?现在我正在考虑每个公司的一个时间序列表,完全规范化数据库的每个数据字段类别。例如,一个表用于 IBM 的所有资产负债表字段,另一个表用于 IBM 的现金流项目等,用于所有类别的数据和每个公司。时间戳作为记录和数据字段作为列/字段。然后对于快速查询,创建一个仓库和视图等,它们没有完全规范化,但针对我上面列出的用例的查询进行了优化。但是,如果您查看我上面的公司和领域的数量,如果我的表格很宽,我可能会得到超过 200,000 个表格,仅用于我的基本财务数据,这也不是很好。这是很多表,但我没有看到另一种好的方法来做到这一点。

如果有更好的地方问这个问题,请告诉我。

如果您需要更多信息,我很乐意编辑我的问题并添加它。

PS - 我在 SO Quant 网站上问了一个类似的问题,但没有得到太多的架构帮助。此外,非模式集中的答案是可以的,但请注意,我正在寻求模式设计方面的帮助。

schema data-warehouse database-design timestamp

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