我正在寻找一个开源替代品 SQLMaestro for PostgreSQL 的因为它具有可视化数据库设计器,而 pgAdmin 中没有它,这使得数据库设计变得如此简单。
PS 我不确定这在这里是否违法,但我不得不问一下,因为谷歌没有帮助我找到替代方案。
我继承了一个数据库,其中没有在表上定义主键。也没有分配给表的聚集索引。
如果我执行一个更改表来分配主键,这会导致 SQL Server 也创建聚集索引吗?如果是这样,由于数据在硬盘上重新定位,我应该期望数据库速度变慢吗?
我有一个相当简单的查询,使用sys.dm_db_missing_index_group_stats来标识我的 SQL Server 数据库中缺少的索引。这是非常常用的。我的问题是如何确定这些索引中哪些是重要的并且应该创建,我应该全部创建它们还是有任何其他秘密?我特别应该在 avg_user_impact 或 avg_total_user_cost 列中寻找什么?
我正在创建一个新的数据库表,用于存储产品图片。我想确定图片中代表的产品“类型”。假设我们有所有产品的 3 个一般类别:
我最好创建 3 个布尔列is_table、is_chair、 和is_lamp?
或者我最好创建一个枚举,然后为该枚举使用单个列:
CREATE TYPE product_type AS ENUM ('table', 'chair', 'lamp' );
Run Code Online (Sandbox Code Playgroud)
(请注意,对于我们存储的工程产品图片,可以保证产品/图片永远不会符合 2 种类型。它必须始终是 1 种非常具体的类型。)
我正在为学校项目设计 dB- 机票数据库。(使用 MySQL 工作台)
到目前为止,我想出了以下设计:

以下是我无法弄清楚的几件事:
Varchar)是个好主意吗?? Flight特定航班的到达城市和出发城市(从表中)不同?这是我存储数据的典型方式(显然不是以纯文本形式存储密码)
用户表
| 用户名 | 用户名 | 全名 | 电子邮件 | 密码 |
|--------|----------|----------|---------|-------- --|
|1 |userAAA |用户 Aaa |aa@aa.com|aAaaA |
|1 |userBBB |用户 Bbb |bb@bb.com|bBbbB |
|1 |userCCC |用户抄送 |cc@cc.com|cCccC |
|--------|----------|----------|---------|-------- --|
以以下方式存储它有什么问题吗?
用户表属性表
| 用户名 | 用户名 | |属性ID | 属性 |
|--------|----------| |------------|-----------|
|1 |用户AAA | |1 |全名 |
|1 |用户BBB | |2 |电子邮件 |
|1 |用户CCC | |3 |密码 |
|--------|----------| |------------|-----------|
属性值表
|用户ID | 属性ID | 属性值 |
|-------|-------------------------|----------------|
|1 | 1 |用户 Aaa … 我有以下表格:
广告和网站都有很多点击次数(即两种模型都与点击次数是一对多的关系)。在这种情况下,使用多个一对多关系更好,还是 Clickable 多态设置更好?
我是一名程序员,被我自己命名为 Wilson 的排球扔到了 DBA/系统管理员岛。我正在努力在这里生存。
我应该为应用程序创建一个数据库。之前运行它的服务器有一个非常相似的应用程序的数据库。我对 Oracle 了解不多,所以我重用了 ZFS 文件系统,并保留了它们的创建方式(因为老实说,我不知道它们为什么这样创建,但我很确定这是有充分理由的) .
app/oradata_smart_ora1 858M 12.2G 858M /oradata/SMART/ora1
app/oradata_smart_ora2 7.18M 18.0G 7.18M /oradata/SMART/ora2
app/oradata_smart_ora3 7.18M 36.0G 7.18M /oradata/SMART/ora3
app/oradata_smart_ora4 60.6K 400G 60.6K /oradata/SMART/ora4
app/oradata_smart_redo1 400M 2.61G 400M /oradata/SMART/redo1
app/oradata_smart_redo2 200M 2.80G 200M /oradata/SMART/redo2
app/oradata_smart_redo3 200M 2.80G 200M /oradata/SMART/redo3
Run Code Online (Sandbox Code Playgroud)
因为我重用了文件系统,所以我创建了我的数据库并将控制文件放在旧数据库文件所在的相同位置(/oradata/SMART/ora1、/oradata/SMART/ora2、/oradata/SMART/ora3)。像 MySQL 一样思考我app/oradata_smart_ora4 60.6K 400G 60.6K /oradata/SMART/ora4专门创建的用于将数据库存储在那里的工作。
数据库启动和安装没有问题。现在是我被困的地方。我读过这个,这个,这个,这个,这个等等,但我仍然有疑问。
请注意,该服务器将在其整个生命周期内管理数百万/数十亿条记录。
对于所有这些问题,我真的很抱歉,但我真的很想在遵循 Oracle 最佳实践的同时正确地做到这一点。如果您需要更多信息来回答您的问题,请告诉我。
我已经使用 SchemaSpy 进行了分析。
该工具给了我两个表的警告消息。警告信息是:
列名递增的表,可能表示非规范化
上述错误是什么意思?
以供参考 :
我基本上是在制作一个数据库数据库。管理用户可以进入并点击“创建数据库”(基本上是一个表)并设置列类型和列数。然后其他用户可以进入并通过界面向数据库添加条目。关键是要为公司内部的信息创建一个管理系统。如在,管理员可以创建一个“雇佣”数据库来存储具有正确列等的工人。
我认为我永远不应该让用户创建新表(这就是“数据库”)甚至列。我创建了两个表来存储从用户角度定义数据库/表应该是什么的信息,以及另外两个表来存储这些条目的条目和数据。
我觉得有点像我在重新发明轮子。是否可以让用户添加新表。
database-design ×10
mysql ×2
schema ×2
sql-server ×2
index ×1
index-tuning ×1
linux ×1
oracle ×1
postgresql ×1
tablespaces ×1