标签: schema

书签系统的数据库设计

我正在创建一个书签系统,人们可以在其中保存他们的书签。每个用户都有自己的带有书签的个人页面。书签应至少有一个标签,最多五个。每个用户可以创建无限的书签/标签。

我创建了以下表格:

User
----
Id
Email


Bookmark
--------
Id
UserId
Title
Url


Tag
---
Id
UserId
Title
Description


TagBookmark
-----------
TagId
BookmarkId
Run Code Online (Sandbox Code Playgroud)

这是正常化了吗?或者我应该采取不同的做法?对于一百万个书签来说,这会表现良好吗?

我也不确定是否应该重用现有的书签/标签。

示例1:

User1 和 User2 都创建书签“ http://google.com ”。我应该将其保存为一个书签吗?或者为每个用户单独保存它们?

示例2:

User1 和 User2 都创建标签“search-engine”。我应该将其另存为一个标签吗?或者为每个用户单独保存它们?

如果我不在用户之间重复使用书签和标签,这些表可能会变得相当大。

schema erd normalization database-design

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

SQL:传输数据库架构

如果我想将架构所有权转移到另一个架构,我知道我需要使用以下内容:

ALTER SCHEMA destinationschema TRANSFER sourceschema.objectname;
Run Code Online (Sandbox Code Playgroud)

但它与以下有何不同:

ALTER AUTHORIZATION ON OBJECT::sourceschema.objectname TO destinationschema ;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

schema sql-server-2008 security

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

SQL Xml 在空记录集上返回空根标记

我正在使用 Sql Server 2005 Express 版本在 xml 输出中显式地生成用户定义的节点。下面的代码工作正常,只是当用户表中不存在记录集时,我无法生成一个空节点。

代码:

select 1 as tag, null as parent,

FirstName as [User!1!FirstName!Element],

LastName as [User!1!LastName!Element]

FROM Users

FOR XML EXPLICIT
Run Code Online (Sandbox Code Playgroud)

输出:

<Users>
<FirstName>Ammy</FirstName>
<LastName>Dammy</LastName>
</Users>
<Users>
<FirstName>Lammy</FirstName>
<LastName>Lolly</LastName>
</Users>
Run Code Online (Sandbox Code Playgroud)

空表的预期输出:

<Users></Users>
Run Code Online (Sandbox Code Playgroud)

注意:我不喜欢这种xsnil方法,欢迎所有其他解决问题的方法

schema sql-server-2005 xml select

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

在事务中修改表结构?

在 Oracle(也可能在其他地方)中,执行 ALTER TABLE 语句将对当前事务进行隐式提交。

我们有一个工具(用 Java 编写)应该通过以下方式修改模式:

  • 添加一些列
  • 删除一些列
  • 使用新的架构布局更新描述表

编写的工具将向用户显示当前模式布局并允许他对其进行修改。(基本上是向某些表添加或删除自定义“属性”列)一旦他满意,他就可以应用他的更改。

请注意:基本架构布局以及您需要通过 ALTER TABLE 更改某些内容这一事实是由标准预定义的,我们无法更改,因为其他工具将不再起作用。

现在的问题是我们不能在单个事务中运行这些更改,因为 AFAIK,不可能在一个事务中执行多个 ALTER TABLE 语句。

如果在应用更改时出现问题,我们有哪些选项可以“回滚”到初始状态?

注意:这里有人提出了 RESTORE POINT + FLASHBACK——从这个(Java)工具调用它是个好主意吗?(在一些应该使用该工具的站点上,我们没有完全控制数据库实例。)

注意:Oracle 10g2 及以上

schema oracle flashback alter-table

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

SQL Server 2008:如何更改 dbo 的默认架构?

当我尝试在 SQL Server Management Studio 中更改 dbo 的默认架构时,ALTER 失败并指出无法更改 dbo 帐户的架构。是否有任何技巧可以将“dbo”的 dbo 默认架构更改为“xxx”?

谢谢!

schema sql-server-2008 sql-server

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

设计此里程表的最佳方法是什么?

我将填充每加仑英里数 (MPG) 表。它来自里程表源。

目前设置如下:

  id               (primary_key)
, truck_num
, start_date
, end_date
, start_miles
, end_miles
, start_fuel
, end_fuel
, miles
, gals
, mpg
Run Code Online (Sandbox Code Playgroud)

似乎有一些冗余。的miles(end_miles - start_miles),对于同上gals

我们应该预先计算这些milesgals列并存储在数据库中吗?它肯定会使查询更容易,但会牺牲空间。mpg计算相同的问题。计算列会减慢速度,不是吗?

什么索引最有效?每周大约有 3,000 辆卡车(记录)成批插入。

我正在使用 SQL Server 2008 R2。

编辑:我将使用的示例查询

-- find average mpg for since ytd
select m.truck_num, avg(mpg)
from mpg m
join truck t on t.truck_num = m.truck_num
where start_date >= @begin_of_year and end_date <= @today
group …
Run Code Online (Sandbox Code Playgroud)

schema sql-server-2008 database-design

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

mysql 动态更改架构

最近我遇到了一个问题,我的数据库变得非常大,每次我想更改架构时,我都不能让自己停机。

这使我开始寻找在线更改架构的解决方案。

1) pt-online-schema-change。非常有吸引力的项目,但老实说我很失望。下载了最新版本后,我不得不更改代码以使脚本正常工作。在开始脚本失败并显示错误消息。所有这些都是我在 Percona 的错误报告中找到的。在修补脚本完成它的工作后,希望很好。

2)橡木在线更改表。同样非常有趣的项目,facebook 在MySQL 的 Online Schema Change上提到它是好产品。明天我去试试。

如果您更有经验,请与我们分享您的意见。什么是最好和最可靠的产品?

mysql schema

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

如何在 MySQL 的另一个数据库/模式中插入行

假设我有以下数据库/模式设置和下表:

    SCHEMA_1 (default):
        TABLE_1

    SCHEMA_2:
        TABLE_2
Run Code Online (Sandbox Code Playgroud)

如何在另一个模式的表中插入行?以下似乎不起作用:

    INSERT INTO TABLE_2 (...) VALUES(...)
Run Code Online (Sandbox Code Playgroud)

如何在另一个架构中插入行?

mysql schema insert

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

2500 亿行 - 大规模计算互连性

我有一个大约 700k 行的表,每行都由一个唯一的 itemnumber 标识。

通过计算指示关联强度的单个数值或两个项目之间的数学“距离”,每行/项目可以与表中的任何其他行/项目相关联,没有关联/无限距离由“0”表示" 而数值“1”表示相同项目/无距离。

这些关联编号难以计算/计算密集并且基于存储在单独数据库中的数据。因此,为所有行组合预先计算一次,然后只为添加的新行(每年 <4k 新行)预先计算它们似乎是有道理的。

生成的关联表可能如下所示:

itemnumber    |  associatedwithitem        | associationstrength

23920390293   |   12356456885              | 0.12255888644888

45468411516   |   44565464884              | 0.91155684161123

45648855222   |   98956221818              | 0.00000000000000

45468411516   |   23920390293              | 0.46813185844468
Run Code Online (Sandbox Code Playgroud)

然而,这样一个表的大小将是巨大的:((700,000 x 700,000) - 700,000)/2 = 244.999.650.000 = 大约 2500 亿行,即使在丢弃所有自连接(公式中的 -700,000)并存储之后每个连接只有一种方式(公式中除以二)。

我将只运行一种类型的查询,如下所示:

“给定一个 itemnumber 列表(见上表示例),计算平均(mean)关联数。”

针对关联表运行的每个 itemnumber 列表通常包含 < 1k itemnumber,但很少会大到 50k。但是因为 1k 个 itemnumber 的列表中的每个数字都将与 700k 个其他 itemnumber 相关联,这样的查询将提取 700,000 x 1000 = 700,000,000 个关联号,然后需要计算这 700m 个关联号的平均值。

对以下方面的任何想法:

  1. 保存此表的最佳数据管理系统
  2. 结构(2500 亿行 vs …

schema performance database-design optimization

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

每晚仅备份数据库架构

我在 SQL Server 2012 上有一个包含 15 个数据库的实例。我将设置备份系统,该系统每晚都可以工作。我只想备份模式,因为有几个数据库非常大。我还没有找到解决这个问题的任何方法。

如何仅备份带有作业的架构?

schema sql-server backup jobs

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