标签: database-schema

如何从 SQL Server CE 数据库检索所有表名称的列表?

是否有一些 SQL 要么返回一个表名列表,要么(切入正题)返回一个布尔值以确定具有某种模式的表名是否存在?

具体来说,我需要知道数据库中是否有一个名为 、 、 、 、 、 、 等的表INV[Bla]INVclayINVcherri部分INVkelvinINVmorganINVgrandFunk正在INVgobbledygook寻找INV2468WhoDoWeAppreciateINV;表名的其余部分几乎可以是任何内容)。

IOW,SQL语句中可以使用“通配符”吗,例如:

SELECT * tables 
FROM database 
WHERE tableName = 'INV*'
Run Code Online (Sandbox Code Playgroud)

或者这将如何实现?

sql windows-ce sql-server-ce database-schema

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

如果表存在于oracle中,如何删除表?

我正在尝试使用我生成的架构文件通过我的 Java 应用程序创建数据库。在模式中,我也包含了 drop 查询。但我想对 DROP QUERY 做一些改进。所以我想在运行 drop 查询之前检查 db 对象的存在,并且只有当它存在时才删除。我用谷歌搜索并找到了一些 oracle 链接,一些链接建议遵循以下语法,有些提到ORACLE 不支持这种语法

 SYNTAX A: 
IF EXISTS DROP TABLE TABLE_NAME

SYNTAX B:
DROP [TEMPORARY] TABLE [IF EXISTS]
        tbl_name [, tbl_name] ...
        [RESTRICT | CASCADE]
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下查询:-

IF EXISTS (SELECT * FROM dba_objects WHERE OBJECT_NAME = 'BBB'  )
DROP TABLE [BBB]
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:-

Error starting at line 2 in command:
DROP TABLE [BBB]
Go
Error report:
SQL Error: ORA-00903: invalid table name
00903. 00000 -  "invalid table name"
*Cause: …
Run Code Online (Sandbox Code Playgroud)

ddl oracle11g database-schema

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

创建配方数据库

我正在为我正在使用的食谱网站构建 SQL 数据库。我是多对多风格的新手,对我目前拥有的东西没有信心。不可避免地,我希望最终结果是建立一个可靠的设置,用户可以:

  1. 将配方添加到数据库

  2. 按准备时间、烹饪时间、菜肴、类别、食物类别和课程排序

  3. 通过添加所选食谱中的成分总量,能够从每周膳食计划中生成购物清单。(这是最重要的!)

我将挑战自己找出如何添加食谱中的成分以生成购物清单,但这篇文章的问题是“我应该如何构建我的表格并连接所有内容?”

这是我迄今为止在我的 SQL 数据库中所拥有的:

如果您认为自己有答案,请构建与我的表格类似的表格。我是一个视觉学习者,将不胜感激。此外,如果您能解释我可能遗漏或可能不会遗漏的内容,将不胜感激。

- Recipe(table)
 - recipe_id (primary key)
 - recipe_name
 - recipe_description
 - course
 - food_category
 - cuisine
 - prep_time
 - cook_time

- Ingredients(table)
 - ingredient_id (primary key)
 - ingredient_name
 - recipe_id (foreign key)

- Quantity(table)
 - quantity_id (primary key)
 - recipe_id (foreign key)
 - ingredient_id (foreign key)
 - ingredient_quantity
 - ingredient_measurement

- Recipe Steps(table)
 - step_id (primary key)
 - step_description
 - recipe_id (foreign key)

- Join(table)*
 - join_id (primary key) …
Run Code Online (Sandbox Code Playgroud)

sql database-schema

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

为什么我的 schema.rb 文件没有更新?

我最近查看了我的 schema.rb 文件,并惊讶地发现我的数据库中确实存在的某些列没有出现,并且一些表完全丢失了。通过“def change add_column”迁移将丢失的列添加到数据库中,尽管以这种方式添加的某些列确实在 schema.rb 中按预期显示。

仔细检查后,我意识到自从我创建用户表以来,schema.rb 还没有更新。

20151019205241_create_users.rb:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps null: false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这在实践中并没有给我带来问题,但我认为 schema.rb 应该保持自动更新,并且更新它以重新创建数据库非常重要。谁能帮我弄清楚为什么它不会更新?

一种可能性是当我将数据库从 sqlite3 切换到 postgresql 时它停止更新。我记不太清楚了,但我认为时机是有道理的。

postgresql ruby-on-rails database-schema

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

需要更好的数据库设计方法

我为订阅产品设计了一个数据库架构。用户可以选择从某个日期开始订阅一定天数。用户可以在几天内取消订阅,但之后仍保持订阅有效。这意味着如果用户订阅一个月,她可以在 10,15 和 20 天取消订阅,因此只需支付 27 天(30 减 3)。
到目前为止,我已经提出了这个模式。在此处输入图片说明

  • 每个用户都有一个配置文件。
  • 用户可以选择一个计划。
  • 一旦用户选择了一个计划,它就会被记为交易,它还存储有关该计划的开始日期和持续时间的信息。
  • 每笔交易都有付款(稍后重点介绍该部分)

现在,由于用户可以在任何一天取消订阅,我应该如何跟踪不同的用户和他们订阅的日期?

我想到的解决方案是创建一个新表 Plan_Transaction_user,它将跟踪该日期的每个日期和交易 ID。这样,如果用户在特定日期取消订阅,则该交易 ID 将没有该日期的记录。

表将如下所示:

Date       Transaction ID       
1-1-2017   1
1-1-2017   2
1-1-2017   3
1-2-2017   1
1-2-2017   3
Run Code Online (Sandbox Code Playgroud)

由于与 transaction_id 2 关联的用户在第 2 天取消了她的交易记录,因此该表中不存在。

现在,如果我有 5000 个客户群,那么在一年内最好的情况下,我将拥有 5000 * 365 ~ 180 万行。我确信这不是最好的方法。您能否向我建议更好的模式或对现有模式进行一些更有效的更改?以防万一您想知道我将使用 MariaDB (AWS RDS) 作为数据库并使用 Python 2 作为我的语言。

谢谢你,奥哈斯

mysql database-design software-design database-schema

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

模式中不存在类型“几何”,但扩展名存在

注意:不是Postgis 安装的副本:类型“几何”不存在

我正在尝试使用 Postgis 几何列在名为test.

首先我跑了:

SET search_path TO test;
Run Code Online (Sandbox Code Playgroud)

然后当我尝试运行以下语句时:

CREATE TABLE spatials (id serial, name text, geo geometry, PRIMARY KEY (id));
Run Code Online (Sandbox Code Playgroud)

我收到错误 type "geometry" does not exist

我试过运行以下两个:

CREATE EXTENSION postgis;
--AND:
CREATE EXTENSION postgis SCHEMA test;
Run Code Online (Sandbox Code Playgroud)

但两者都会导致错误 extension "postgis" already exists

请注意,使用public模式时它工作正常。

有什么我在这里想念的吗?

sql postgresql postgis database-schema

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

如何获取雪花数据仓库中模式的总字节大小

我喜欢SHOW TABLES查询如何返回列出的每个表的行和字节,但不幸的是,SHOW SCHEMAS查询并非如此。

获取模式列表总字节大小的最佳方法是什么?

size database-schema snowflake-cloud-data-platform

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

产品投票系统的数据库设计

我正在建立一个用户可以对产品进行投票或投票的系统,我需要能够明确计算出产品的起伏数量,以及最近一段时间的总分.

每个投票都可以选择对其进行评论,并且用户需要能够回应/提升其他人的评论(有点像转推),这也将根据转发的父投票加/减产品的总分.

以下是我目前提出的表格:

产品
ID,名称,category_id

投票
ID,user_id,product_id,parent_id,评论,分数,日期时间

用户
名,用户名等

我想我可能需要一个评论表来有效地做到这一点?根据我在StackOverflow上读到的一些建议,投票'得分字段是1或-1,这将允许我收集该SUM()列来计算总票数,另一种可能是单独的vote_up和vote_down表...但是我我只是不确定.

database database-design cakephp relational-database database-schema

0
推荐指数
1
解决办法
3667
查看次数

如何在模式中列出postgres中的所有表

我正在尝试列出数据库中的所有表.\ dt没有这样做,可能是因为名称冲突.我尝试了很多命令,但是当不同模式中的两个表共享一个名称时,只有一个表被\ dt列出:

CREATE DATABASE tester;
\c tester
CREATE SCHEMA hid1;
CREATE SCHEMA hid2;
CREATE TABLE a (a int);
CREATE TABLE b (a int);
CREATE TABLE hid1.a (a int);
CREATE TABLE hid1.b (a int);
CREATE TABLE hid1.c (a int);
CREATE TABLE hid2.a (a int);
CREATE TABLE hid2.d (a int);
\dt
SET search_path TO public,hid1,hid2;
\dt
SET search_path TO hid1,public,hid2;
\dt
SET search_path TO hid2,hid1,public;
\dt
Run Code Online (Sandbox Code Playgroud)

tester=# \dt
       List of relations
 Schema | Name | Type  | Owner
--------+------+-------+-------
 hid1 …
Run Code Online (Sandbox Code Playgroud)

postgresql command-prompt database-schema

0
推荐指数
1
解决办法
2824
查看次数

MySQL性能极其缓慢

我有一个包含大约500K作业的表,每个作业都有一个唯一的ID用作主键,状态用于指示作业是挂起,完成还是失败.状态是一个非关键的整数.

我的问题是,我尝试根据状态选择作业的简单查询需要花费太多时间,超过10分钟.在DB中连接了大约46个线程,我也重新启动但它没有帮助性能.

我粘贴了表模式和我尝试在此运行的查询:http: //pastie.org/10416054

有没有办法找到瓶颈和优化表,所以它不需要那么长时间?

mysql sql performance database-schema

0
推荐指数
1
解决办法
91
查看次数