标签: schema

具有多个变体/属性的产品的架构设计?

我正在使用 MySQL。这个想法类似于 shopify 具有不同的概念,因此用户将添加具有多种类型的变体和属性的产品。

从我所做的所有研究来看,这对我来说似乎是最有可能的解决方案,我只是想知道以下模式是否有任何问题以及有哪些优点/缺点?

谢谢

Table: products
------------------------------
| ID | ProductName           |
|----------------------------| 
| 1  | Leather Wallet Case   |
| 2  | Jeans                 |
| 3  | Power Bank            |



Table: products_variants
-------------------------------
| ID | ProductId | ParentId | Variant  | VariantName | SKU  | StockTotal | WholeSalePrice | BuyPrice | OnSale | OnSalePrice |
|---------------------------------------------------------------------------------------------------------------------------|
| 1  | 1         | null     | model    | iPhone5     | SKU  | 10         | 3              | 10       | null …
Run Code Online (Sandbox Code Playgroud)

mysql schema database-design eav

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

Redgate SQL 与 Visual Studio 2010 Premium/Ultimate 数据库项目的比较

我目前使用Visual Studio 专业版,它有数据库项目作为项目模板,但它的一些功能不可用,例如Schema Compare tool。架构比较和数据库更新脚本生成仅在Visual Studio 2010 Premium/Ultimate 版本中可用。

但是,Visual Studio 中的模式比较和更新脚本生成功能是否与Redgate SQL 比较工具中的功能一样丰富?(我也没有用过)我没能找到功能比较列表。任何人都使用过它们,可以帮助说清楚吗?

schema tools feature-comparison scripting

17
推荐指数
2
解决办法
3606
查看次数

如何在 SQL Server 2012 中转移 dbo 架构的所有权

我不小心给了用户 db_owner 架构的所有权(使用 UI 中的复选框,如下所示),现在我不能:

  1. 将所有权转让给其他用户
  2. 从数据库中删除用户(尽管我可以删除 SQL Server 中的登录名)

我试过数据库主体在数据库中拥有一个架构,并且无法删除。

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo
Run Code Online (Sandbox Code Playgroud)

虽然它成功完成,但用户仍然拥有所有权,并且它是灰色的,所以我似乎也无法在 UI 中执行此操作。

在此处输入图片说明

找到了解决办法:

除了Arron 的回答之外,我意识到我会在错误的数据库(facepalm!)中运行上述命令。一旦数据库得到纠正,上面的 SQL 和下面的答案都有效。

schema security sql-server-2012

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

PostgreSQL:模式差异/补丁工具

考虑以下设置:

  • 生产数据库
  • 一个开发数据库,​​在其上进行架构更改以启用新功能

当新功能的开发完成后,我必须手动更新 prod db 模式,直到pg_dump --schema-only两个数据库上的相同为止。这个过程容易出错且乏味。

所以,我正在寻找一种可以:

  • 显示两个模式之间差异的摘要(如diff)。请注意,我不是在寻找模式的单纯文本差异,而是一个更精细的工具,可以得出诸如“表X有一个新列Y”之类的结论。
  • 自动生成将一种模式转换为另一种模式的 SQL 代码(如patch

是否有架构差异/补丁工具可以帮助我将生产架构转换为更高级的开发架构?

schema postgresql

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

为什么在 psql 中使用 \dt(+) 时看不到我的表 (PostgreSQL)?

我已经按照以下方式donor在架构中创建了表reference

CREATE TABLE reference.donor (
    donor_code smallint PRIMARY KEY,
    donor_name character varying NOT NULL,
    donor_type smallint REFERENCES reference.donor_type (type_id),
    alpha_2_code char(2) REFERENCES reference.iso_3166_1 (alpha_2_code)
);
Run Code Online (Sandbox Code Playgroud)

我已经按照以下方式填充了表格:

INSERT INTO reference.donor (donor_code, donor_name, donor_type, alpha_2_code)
SELECT donor_code, donor_name, donor_type, alpha_2_code
FROM reference.donor_template;
Run Code Online (Sandbox Code Playgroud)

当我运行时:

\dt+ reference.*
Run Code Online (Sandbox Code Playgroud)

在 psql 我看到reference.donor表:

                          List of relations
  Schema   |      Name      | Type  |  Owner   | Size  | Description 
-----------+----------------+-------+----------+-------+-------------
 reference | donor          | table | postgres | 16 kB | 
 reference | …
Run Code Online (Sandbox Code Playgroud)

schema postgresql psql table

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

无模式/灵活 + ACID 数据库?

我正在考虑将基于 VB 的本地(本地安装)应用程序(发票+库存)重写为面向小型企业客户的基于 Web 的 Clojure 应用程序。我打算将其作为 SaaS 应用程序提供给类似行业的客户。

我正在查看数据库选项:我的选择是 RDBMS:Postgresql/MySQL。我可能会在第一年扩大到 400 个用户,通常每个用户每天 20-40 个页面浏览量 - 主要用于交易而不是静态浏览。每个视图都将涉及获取数据和更新数据。符合 ACID 是必要的(或者我认为)。所以交易量并不大。

根据我的偏好选择其中任何一个是不费吹灰之力的,但对于这一要求,我认为这是 SaaS 应用程序的典型特征:随着我添加更多客户/用户以及每个客户的需求,架构将发生变化不断变化的业务需求(我将提供一些有限的灵活性,只是在开始时)。由于我不是数据库专家,根据我能想到和读到的内容,我可以通过多种方式处理这个问题:

  1. 在 MySQl/Postgresql 中有一个传统的 RDBMS 模式设计,单个 DB 托管多个租户。并在每个表中添加足够的“自由浮动”列,以便在我添加更多客户或为现有客户进行更改时进行更改。每次对架构进行小的更改时,这可能会带来将更改传播到数据库的缺点。我记得在 Postgresql 中读到可以在不锁定的情况下实时更新模式。但不确定在这个用例中它有多痛苦或有多实用。而且,由于架构更改也可能会引入新的/次要的 SQL 更改。
  2. 拥有 RDBMS,但以灵活的方式设计数据库模式:接近实体属性值或仅作为键值存储。(例如工作日,FriendFeed)
  3. 将整个事物作为对象存储在内存中,并定期将它们存储在日志文件中。(例如,edval、lmax)
  4. 选择像 MongoDB 或 Redis 这样的 NoSQL DB。但是根据我所能收集到的信息,它们不适合这个用例并且不完全符合 ACID。
  5. 选择一些 NewSQL Dbs,如 VoltDb 或 JustoneDb(基于云的),它们保留了 SQL 和 ACID 兼容行为并且是“新一代”RDBMS。
  6. 我查看了 neo4j(graphdb),但不确定它是否适合这个用例

在我的用例中,不仅仅是可扩展性或分布式计算,我正在寻找一种更好的方法来实现“架构的灵活性 + ACID + 一些合理的性能”。我在网上可以找到的大多数文章都将模式的灵活性作为导致性能(在 NoSQL DB 的情况下)和可伸缩性的原因,同时忽略了 ACID/事务方面。

这是“架构灵活性与 ACID”事务的“非此即彼”案例还是有更好的出路?

schema nosql database-design

15
推荐指数
2
解决办法
2065
查看次数

PostgreSQL 抱怨共享内存,但共享内存似乎没问题

我一直在执行一种密集的模式删除和通过 PostgreSQL 服务器创建,但现在抱怨..:

WARNING:  out of shared memory
ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.
Run Code Online (Sandbox Code Playgroud)

但是如果 PostgreSQL 只是用 重新启动,问题仍然存在service postgresql restart,我怀疑 max_locks_per_transaction 不会调整任何内容。

我有点疏远,因为此错误的故障排除列表对我不起作用。

更多信息 1409291350:缺少一些细节,但我保留了核心 SQL 结果。

postgres=# SELECT version();
PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2,
 64-bit
Run Code Online (Sandbox Code Playgroud)

和:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty
Run Code Online (Sandbox Code Playgroud)

schema postgresql memory

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

是否有开源元数据管理解决方案?

是否有开源元数据管理解决方案?我想创建一个元数据存储库,它将保存数百个企业数据库的数据库模式、表和数据项的元数据的详细信息。

我对可以自动查询数据库模式数据以便能够跟踪与表相关的元数据更改的东西特别感兴趣。即更改列数据大小、添加的表和列等。

schema metadata

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

将 XML 数据存储在哪种数据类型中:VARCHAR(MAX) 或 XML

我正在使用 SQL Server 2008 为一组新资源定义架构...在这种情况下,每条记录(例如行)都需要存储 XML 片段。时; 虽然不经常;我需要查询 XML 以查找元素和属性值。如果留给我自己的设备,我会倾向于使用XML数据类型,尽管我一直认为这是有问题的。所以这让我想到了我的问题。

鉴于这种情况,在尝试决定将 XML 存储在XML列中还是varchar(MAX)列中时,我应该考虑哪些因素

如果有帮助……这里有一些额外的细节:

  • 尚未决定对这些片段(例如 XSD)使用模式
  • 碎片的大小从小到大不等
  • 所有 XML 都将是格式良好的
  • 在一天的过程中,将收集多达约 10,000 个片段,需要约 3 个月的在线查询支持
  • 对 XML 的查询将全天发生,但应该保持轻量级,很少有这种类型的并发查询

schema sql-server-2008 xml database-design datatypes

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

对于大型应用程序,在同一数据库中不同模式的表上创建外键是个坏主意吗?

我正在将一个大型 pl/sql 基于 web 的应用程序转移到专用服务器。该应用程序位于一个包含 70 个程序代码包的模式中。这个应用程序是在不同的时间大约有 15 人完成的。我们通常的做法是在不同模式中的引用表上创建外键,因为它非常方便并且保持数据库非常干净,因为我们不需要在不同模式中保留相同的引用表。

但无论如何,我的 DBA(他用 DB 创建了新实例并将我的应用程序复制到 Solaris 区域内)今天说得很严厉,“不同模式上的外键是邪恶的,你需要销毁它!”。他没有解释他的观点。

在大型应用程序中这样做真的很糟糕吗?

schema oracle foreign-key database-design

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