使用 Microsoft SQL Server Management Studio 创建的图表的默认架构设置为dbo。创建图表时似乎无法设置另一个架构。
对于桌子来说,
alter schema NewSchemaName transfer dbo.TableName
Run Code Online (Sandbox Code Playgroud)
将指定的表移动到新架构。但同样的命令不适用于图表。
创建图表后是否可以更改架构?
我必须选择将使用动态字段存储内容类型(例如,博客文章,页面,文档,发票,估计等等)的数据库的结构:例如,Estimate内容类型应具有字段title,date和total price.
然而,在这些田地可以添加矿石去除的时间,所以1年后,Estimate含有类型的notes田地可以有.
这是由着名的CMS(例如drupal)提供的常见任务,但我想知道什么是获得最佳性能和灵活性的最佳方法:例如Drupal用于拥有一个带有basic字段的表(例如title),并且所有辅助字段都是存储在动态创建的子表中,并使用外键链接到主表:
table node
| id | title | ...
| 1 | First example |
table fields_node_total_price
| id | node_id | value |
| 1 | 1 | 123.45 |
table fields_node_date
| id | node_id | value |
| 1 | 1 | 12345677 |
Run Code Online (Sandbox Code Playgroud)
等等..
我的观点是这种方法非常灵活,但很容易陷入性能问题:为了获取文档的所有字段,您必须多次连接表,并且代码本身必须多次迭代才能构建查询(但这不应该是一个问题).
顺便说一句多表是最常用的方法..因此必须有很多缺点.
我在考虑使用单个表会有什么样的不利之处:
| id | title | total_price | date | ec... …Run Code Online (Sandbox Code Playgroud) 我找不到如何将xid(事务 ID 类型)列设置为表中唯一的。它抱怨 btree 缺少类方法,我不知道如何解决它。
这是使用 PostgreSQL 9.0。
在这些论坛或互联网上找不到任何类似的问题。:-(
我有一个 PostgreSQL 9.3 数据库,其中有一个用户表,该表以保留大小写的格式存储用户名。所有查询都不区分大小写,因此我应该有一个支持它的索引。此外,无论大小写,用户名都必须是唯一的。
这就是我想出的:
forum=> \d users
Table "public.users"
Column | Type | Modifiers
------------+--------------------------+------------------------
name | character varying(24) | not null
Indexes:
"users_lower_idx" UNIQUE, btree (lower(name::text))
Run Code Online (Sandbox Code Playgroud)
用标准 SQL 语法表示:
CREATE TABLE users (
name varchar(24) NOT NULL
);
CREATE UNIQUE INDEX "users_lower_idx" ON users (lower(name));
Run Code Online (Sandbox Code Playgroud)
通过这个模式,我已经满足了所有的约束,尽管没有主键。SQL 标准不支持功能主键,因此我无法提升索引:
forum=> ALTER TABLE users ADD PRIMARY KEY USING INDEX users_lower_idx;
ERROR: index "users_lower_idx" contains expressions
LINE 1: ALTER TABLE users ADD PRIMARY KEY USING INDEX users_lower_id...
^
DETAIL: Cannot create a …Run Code Online (Sandbox Code Playgroud) 我有以下数据:
Date Code
2014-08-01 A
2014-08-02 A
2014-08-03 A
2014-08-04 A
2014-08-05 A
2014-08-06 A
2014-08-07 A
2014-08-08 XXXX
2014-08-09 XXXX
2014-08-10 BB
2014-08-11 CCC
2014-08-12 CCC
2014-08-13 CCC
2014-08-14 CCC
2014-08-15 CCC
2014-08-16 CCC
2014-08-17 CCC
2014-08-18 XXXX
2014-08-19 XXXX
2014-08-20 XXXX
2014-08-21 XXXX
2014-08-22 XXXX
2014-08-23 XXXX
2014-08-24 XXXX
2014-08-25 XXXX
2014-08-26 XXXX
2014-08-27 XXXX
2014-08-28 XXXX
2014-08-29 XXXX
2014-08-30 XXXX
2014-08-31 XXXX
Run Code Online (Sandbox Code Playgroud)
我想用代码和日期范围对数据进行分组,以便输出变为:
Min Date Max Date Code
2014-08-01 2014-08-07 A
2014-08-08 2014-08-09 XXXX
2014-08-10 2014-08-10 BB …Run Code Online (Sandbox Code Playgroud) 我需要为公司的职位构建组织结构图(CTO 回答 CEO,开发人员回答 CTO 等),我需要创建一个友好的 UI 来反映这一点。UI 部分现在不是我关心的,因为如果我正确构建后端,前端就会很容易。
因此,如果不使用任何花哨的模式(如图表),Position模型的最佳结构是什么(在获取组织结构图时让我的生活更轻松)?
到目前为止,我已经想到了类似以下内容,但是parent如果我需要在组织结构图中深入 10 个级别,那么拥有自己的外键对我没有多大帮助。
class Position(models.Model):
name = models.CharField(max_length=100)
company = models.ForeignKey(Company) # irrelevant
level = models.PositiveSmallIntegerField() # depth level (not sure if I need this since I have parent_position)
parent_position = models.ForeignKey("self")
Run Code Online (Sandbox Code Playgroud)
附注。在我之前的问题中,我想避免使用图表等,仅仅是因为我对它们的了解为零,并且日程安排很紧。在这种情况下,学习和使用图表会有很大帮助吗?
PostgreSQL 中是否可以创建只能访问单个模式的用户?
这是我尝试过的:
REVOKE ALL ON DATABASE testdb FROM public;
GRANT CONNECT ON DATABASE testdb TO testuser;
Run Code Online (Sandbox Code Playgroud)
当我以测试用户身份连接时,我确实无法访问实际数据:
> SELECT * FROM some_table;
ERROR: permission denied for relation some_table
Run Code Online (Sandbox Code Playgroud)
但是,我仍然可以列出所有其他模式中的所有表等:
SELECT * FROM pg_tables;
schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers | rowsecurity
--------------------+-------------------------------------------+------------+------------+------------+----------+-------------+-------------
test2 | foo | postgres | | t | f | f | f
test2 | bar | postgres | | t | f | f | f …Run Code Online (Sandbox Code Playgroud) postgresql permissions database-schema postgresql-9.5 sql-grant
DBI 包中是否有一个函数可以获取有关数据库架构的信息?
我正在使用 DBI 包和 odbc 驱动程序连接到 SQL Server。这些dbListTables函数允许使用schema参数显示特定模式中的表,但我找不到查询存在哪些模式的方法。
我在插入 mongoDB 时遇到问题,因为好的对象不会通过 mongoDB validator。
更糟糕的是,该错误是一个通用错误:Document failed validation在大型多嵌套对象中,该错误可能会使验证失败的具体位置变得混乱。
myValidatorIs =
{ validator:
{ $jsonSchema :
{ bsonType: "object"
, required: [ "price" ]
, properties:
{ price:
{ bsonType: "double" // price needs to be a double, tried with decimal also.
, description: "must be a double/float and is required"
}
}
}
}
, validationAction: "error"
, validationLevel: "strict"
};
db.collection("collection").insertOne({ price : 4.5 }); // this works
db.collection("collection").insertOne({ price : 4.0 }); // this …Run Code Online (Sandbox Code Playgroud) database-schema ×10
postgresql ×4
database ×2
sql ×2
accounting ×1
django ×1
jsonschema ×1
mongodb ×1
permissions ×1
r ×1
r-dbi ×1
schema ×1
sql-grant ×1
t-sql ×1
unique ×1
validation ×1