我正在为我们的销售团队设计一个数据库,用作快速工作报价工具。我想要一些关于设计特定方面的反馈。
报价基本上是通过选择一个预定义的“组件”列表来建立的,每个“组件”都具有商定的价格。主窗体的简化视图如下所示:
+------------ --- ---+
| Assembly options |
+------------+------------+----------+------------+---+---+---+ --- +--+
| assembly ? | unit cost | quantity | total cost | 1 | 2 | 3 | |50|
+------------+------------+----------+------------+---+---+---+ --- +--+
| VSD55 | £10'000 | 2 | £25'500 | 1 | 1 | | | |
| RDOL2.2 | £2'000 | 1 | £1'500 | | 1 | | | |
| DOL5.0 | £1'000 | 1 | £1'200 | | | 1 | | | …Run Code Online (Sandbox Code Playgroud) 我正在为公元 1000 年之前扩展的记录创建一个数据库,但 MySQL 日期和日期时间字段仅支持从 1000 开始的日期。
有没有比使用 bigint 类型使用 Unix 时间戳计算 1/1/1970 之前/之后的秒数或切换到支持更大日期范围的数据库软件更方便的方法?
我正在处理一个包含用于迁移的映射数据库元素的项目,我想知道其他人使用哪些工具来执行此操作?
Excel 是一种非常灵活的记录简单映射的方式,但我想知道是否有人有他们遵循的特定方法或他们可以推荐的其他工具?
早些时候,对我来说,关于是否(总是)使用/避免聚集索引的辩论/讨论没有定论。
好吧,我知道它们有时会在适当的+特定目的和上下文中使用。
“SQL Azure 不支持没有聚簇索引的表。一个表必须有一个聚簇索引。如果一个表是在没有聚簇约束的情况下创建的,那么在允许对该表进行插入操作之前必须先创建一个聚簇索引”
不符合先前的结论、理由和解释。
我在前面的解释中遗漏了严格要求无任何例外地普遍存在的聚集索引的基本原理是什么?
我有一张代表电影的表。这些字段是:
id (PK), title, genre, runtime, released_in, tags, origin, downloads。
我的数据库不会被重复的行污染,所以我想强制执行唯一性。问题是不同的电影可能有相同的标题,甚至除了tags和之外的相同字段downloads。如何实现唯一性?
我想到了两种方法:
downloads主键以外的所有字段。downloads因为它是 JSON,所以我一直在外面,它可能会影响性能。id作为主键保留,但为所有其他列添加唯一约束(再次除外downloads)。我读了这个非常相似的问题,但我不太明白我该怎么做。目前该表与任何其他表都没有关系,但将来可能会。
目前我的记录略少于 20,000 条,但我预计这个数字会增长。我不知道这是否与问题有些相关。
编辑:我修改了架构,这里是我将如何创建表:
CREATE TABLE movies (
id serial PRIMARY KEY,
title text NOT NULL,
runtime smallint NOT NULL CHECK (runtime >= 0),
released_in smallint NOT NULL CHECK (released_in > 0),
genres text[] NOT NULL default ARRAY[]::text[],
tags text[] NOT NULL default ARRAY[]::text[],
origin text[] NOT NULL …Run Code Online (Sandbox Code Playgroud) 我们目前正在使用基于 mssql 服务器的解决方案在资源边缘运行。
我们现在有许多关于下一步处理负载的传统选择:
在许可和硬件或时间方面,所有这些都是昂贵的。因此,我想通过将整个系统移动到 nosql 引擎 cassandra 承诺的可扩展解决方案来添加另一个选项。
然而,我不确定也没有使用 noSQL 数据库的经验,所以我需要了解“非结构化”数据的结构。
在我们的应用程序中,我们基本上将用户以各种方式输入的数据存储为“键值”列表。有一个父表,其中包含头元素(如 Order),还有一个子表,其中包含包含订单内容的键值对(如 Order_Lines)。
在业务方面,Order 和 OrderLines 是一个单元。但是由于 RDBMS,它们存储在表中并且必须一直连接。
在操作过程中,我们有时会选择只加载顶部,但大多数时候,我们加载头部行+一些KVP来显示一些有用的信息。
例如,在概览列表中,我们在每行的列中显示头部标识符 + 一些值。
更新:我们存储任何形式的表格。所以,基本上我们存储“文件”。然而,我们必须准备并通过任何值、排序等来搜索这些表单。数据访问控制为数据库增加了另一层复杂性。
您可能会猜到,某些 KVP 的数量和可用性因对象而异。没有为每种对象创建单个表的有效可能性,因为我们必须为不同的数据组合创建数千个表。
这种“字典”之类的数据集会更好地存储在 noSQL 数据库中吗?我们会从中获得性能优势吗?cassandra 会将这些 head+KVP 建模为一个数据集吗?查看 cassandra 网页和一些教程,我的印象是,我们的 RDBMS 和 cassandra 在数据组织方面没有太大区别——如果您想选择 5 个 KVP,那么我们的连接数量也相同对于每一行的列表。
欢迎启蒙,也可以提供解释问题的论文的指针。
在 ORDBMS 数据库中,我看到可以使用复杂类型:
create type name as( ...)
Run Code Online (Sandbox Code Playgroud)
我可以在创建新表时引用这些类型,例如:
create table example (row_name ref(name))
Run Code Online (Sandbox Code Playgroud)
如何在 PostgreSQL 中实现相同的目标?
我有一些不是时间序列的数据库快照。例如:
快照第 1 天:
+----+---------------+------------+------------+
| ID | Title | Category | Date |
+----+---------------+------------+------------+
| 1 | My First Post | helloworld | 2015-01-01 |
+----+---------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)快照第 2 天(今天添加了一个新帖子):
+----+----------------+------------+------------+
| ID | Title | Category | Date |
+----+----------------+------------+------------+
| 1 | My first post | helloworld | 2015-01-01 |
| 2 | My second post | other | 2015-01-02 |
+----+----------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)快照第 3 天(今天删除了帖子 2):
+----+---------------+------------+------------+
| ID | Title | Category | Date |
+----+---------------+------------+------------+
| …Run Code Online (Sandbox Code Playgroud)我有一个表,需要添加一个没有默认值的新列:
ALTER TABLE integrations.billables
DROP CONSTRAINT IF EXISTS cc_at_least_one_mapping_needed_billables,
ADD CONSTRAINT cc_at_least_one_mapping_needed_billables
CHECK ((("qb_id" IS NOT NULL) :: INTEGER +
("xero_id" IS NOT NULL) :: INTEGER +
("freshbooks_id" IS NOT NULL) :: INTEGER +
("unleashed_id" IS NOT NULL) :: INTEGER +
("csv_data" IS NOT NULL) :: INTEGER +
("myob_id" IS NOT NULL) :: INTEGER) > 0);
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE integrations.billables
DROP COLUMN IF EXISTS myob_id,
ADD COLUMN myob_id varchar(255);
Run Code Online (Sandbox Code Playgroud)
如何为下一个值添加约束,而不是为那些已经存在的值添加约束?(否则我会得到某些行违反了错误检查约束“”)。
这与我之前的问题有关:错误:某些行违反了检查约束
postgresql null database-design postgresql-9.2 check-constraints
database-design ×10
postgresql ×3
mysql ×2
sql-server ×2
cassandra ×1
date-format ×1
ddl ×1
index ×1
migration ×1
nosql ×1
null ×1
primary-key ×1
timestamp ×1