我注意到在 USERS 表空间中创建了一个架构,但我们的本地规则是它应该单独位于一个表空间中。在 Oracle 中,您如何将架构移动到不同的表空间?
首先,如果我听起来很愚蠢,我想道歉,因为我对 SQL Server 没有太多了解。
我最近开始了一个使用 SQL Server 2008 R2 的项目。我可以使用 Windows 身份验证访问数据库。登录后,我可以访问所有数据库等...我的问题是,对于我的用户 DOMAIN/Glen,我想为其中一个数据库添加默认架构。我已经在相关数据库下的用户部分中更改了“DOMAIN\Glen”的默认架构,但是每当我在表上运行没有架构前缀的脚本时,它都不会运行。
我一直在环顾四周,尝试了一些东西,据我所知,我出于某种原因使用 SA 帐户而不是 DOMAIN\Glen 登录名。
如果有人可以帮助我将我的登录用户从 SA 更改为 DOMAIN\Glen,那将是一个很大的帮助。
谢谢
博尔东伦
编辑
当我直接在服务器上访问数据库时,它以 DOMAIN\Glen 的身份登录,但是当我从我的计算机访问它时,它以 SA 的身份登录。
编辑 2
此外,当我通常连接到服务器上的 SQL Server 时,我会获得我添加的默认架构,但是如果我以管理员身份在服务器上运行 SQL Server,我将获得 dbo 的默认架构。
有任何想法吗?
我正在尝试创建一个数据库来存储有关学校的信息。
我需要存储学校的每个部门。每个部门都有一个教师名单。每个老师都有一个班级列表,每个班级都有一个学生列表。
部门名称将是唯一的。但是,教师可能跨部门。另一件需要注意的事情是,如果老师A教一门名为“数学”的课程,而老师B也教一门名为“数学”的课程,那么这些在数据库中应该是不同的实体(我认为)。例如,我可能想要获取仅与“老师 A”一起参加“数学”课程的学生列表。
到目前为止,我有这个:
部门(部门标识,部门名称)
教师(教师身份,教师姓名);
Department_and_teachers( department_and_teachers_id ,department_id(FK),teacher_id(FK))
学生(学生ID,学生姓名)
我认为哪个是好的数据库设计?但是,它不包含有关“类”的任何信息,我不确定更改架构的最佳方法是什么。对于每个部门和教师组合,我需要添加所教授的课程列表。做这样的事情是否合理:
编辑- 基于收到的答案的新建议
唯一与我正在开发的内容最接近的是 Facebook 的用户活动日志。所以我想如果我能问一下 FB 如何可能在数据库层实现这样的功能,那么它可能会让我对如何解决我自己的类似问题有一些了解。
如何在 MySQL 数据库中设计一个模式来保存特定用户的所有活动。在 FB 的例子中,你有很多用户可以做的活动,比如某事、评论某事、添加朋友、使用应用程序等。所有这些活动都有自己的数据库架构,我敢肯定,所以我假设活动日志架构需要以某种方式引用这些其他数据。
所以我要问的是想法。我能想出的唯一想法是创建一个活动表和多个“连接表”,这些表引用了活动表和活动数据(例如对某事的评论、喜欢某事等)。但是,对于每种新类型的活动和新业务逻辑,此模式都需要一个新表来处理这些新表。也许人们无法解决这个问题,但我对一种模式感兴趣,当新类型的活动添加到系统中时,它几乎不需要对模式和业务逻辑进行更新。
需要明确的是,这个问题听起来并不像是我只是想构建另一个 Facebook 克隆。我只使用 FB 作为对类似于我正在尝试做的事情的参考。更抽象地说明我的问题:我试图将我的数据库中的各种数据聚合到一个可以查询的单一模式中,并且只要有一种新的数据,几乎没有任何模式更改,否则是什么重点是什么?FB 有两个这种聚合的实例,活动日志和通知(我能想到的)。
任何帮助表示赞赏。
我是一个 ruby 爱好者,完全没有与数据库相关的经验。我正在编写一个应用程序,该应用程序将在 SQLite3 数据库中收集和备份推文和博客文章(通过 rss 提要)。
第一个版本只支持备份特定用户的推文,因为我想为我的 twitter 帐户创建备份。所以 SQLite3 模式很简单:1 个数据库,每个用户 1 个表。
现在我想为以下内容添加备份支持:基于位置的推文(即来自德国的推文)、基于用户名的推文和基于主题标签的推文以及支持 RSS 提要。
由于 SQLite3 不支持任何类型的子表,并且我想创建一个在我开始测试时不需要更改的模式,我想就如何处理这个问题发表意见。
我在网上阅读了很多关于 SQL 数据库设计的文章或文章,还找到了几本书。还没有购买任何东西,我只是在考虑阅读有关 db 设计的一些基础知识,因为我不需要一本广泛的书,只是我正在评估的介绍。我不确定这些文章是否让我更加困惑。
我想出的 db 模式是一个 INDEX 表,其中将保存用户的信息,然后每个用户的每个选项都有一个表,例如:
? lib git:(dev) ? cat sqlite_scheme.txt
SQLite3 Table Scheme
MRParent
--------
db_key
table_id
twitter_id
twitter_option {what and how}
feed_url
short_description
MRChild-id-tweet-usr
---------
db_key
tweet_id {from MRParent}
table_id
tweet_date
tweet_location
tweet_text
MRChild-id-tweet-location
-------------------------
db_key
table_id {from MRParent}
tweet_id
tweet_date
tweet_location
tweet_text
MRChild-id-tweet-hashtag
------------------------
db_key
table_id {from MRParent}
tweet_hashtag
tweet_id
tweet_date …Run Code Online (Sandbox Code Playgroud) 我正在建模一个用于车辆备件库存管理的数据库,但我被卡住了......
一些备件可以从套件分解成组件。我想创建一个支持此功能的模型,但不知道如何构建它。
备件可以成套或件发。数据库应该保存关于我们有多少完整集以及有多少被分解成碎片的信息。例如,一套活塞环将有 6 个不同的单独活塞环。
你能为我指出正确的方向吗?
SQL Server 2008 R2
我们有一个名为“JoeBlogs”的登录和用户,这个用户有它自己的默认schemaJoeBlogs——它Public只能访问数据库。
然后我们SELECT在一个dbo视图上授予它-dbo但是该视图从属于非 dbo模式的基础表中选择数据- 所以我们从视图中选择数据时出现错误,说明对基础表的访问被拒绝。
如何将用户配置为对dbo视图有选择访问权限,但对底层非 dbo表没有访问权限?
这甚至可能吗?
乔丹
我正在学习数据库设计并寻找一些工具,最好是开源软件,可以帮助从 ERD 到数据库,反之亦然。
作为记录,我使用的数据库是 MySQL。
我从对象 ID 和数据库 ID 开始。在用户定义的函数中,我想获取数据库、架构和对象的全名和 ID。如何在不使用 UDFS 内部禁止的动态 SQL 的情况下获取架构ID?
笔记:
DB_NAMEOBJECT_NAME因为它接受数据库 ID 作为第二个参数OBJECT_SCHEMA_NAME因为它也接受数据库 ID 作为第二个参数[db_name_i_want].sys.schemas,但这在 UDF 中是不允许的更新(目的)
为了从更远的调用堆栈中解决DB_ID 上下文的可能解决方案,我正在调整Gabriel McAdams 的一些调用堆栈函数以跨多个数据库工作。他的版本只是将每个调用级别的 proc ID 推送到CONTEXT_INFO流中。我已经修改了它以推送数据库 ID。我也可以推送模式 ID,但随后事情开始变得拥挤,因为它CONTEXT_INFO被限制为 128 字节。因此,我希望能够从创建调用堆栈视图 (CallStackView) 的函数中的 db id 和对象 id 重建架构 ID。
代码
-- @db_id, @proc_id are saved in a logging function
DECLARE @db_name …Run Code Online (Sandbox Code Playgroud) 我在 Oracle 11g 数据库中有一个大表,它保存了几年的历史数据,所以我想按年对其进行分区。问题是该表有多个日期列并且它们都用于查询,所以我不能只选择一个日期列并将其用作分区键。
大多数时间日期彼此接近,所以我为每一年创建了分区,加上一个“溢出”分区,用于保存跨越年份边界的行。这是一个简化的示例:
create table t (
start_year int,
end_year int,
partition_year int as (case when start_year=end_year then start_year else 0 end),
data blob
)
partition by range(partition_year) (
partition poverflow values less than (1000),
partition p2000 values less than (2001),
partition p2001 values less than (2002),
partition p2002 values less than (2003),
partition p2003 values less than (2004),
partition p2004 values less than (2005)
);
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是必须在查询中显式引用partition_year或分区修剪(非常可取,因为表很大)不会生效。该表用于多个用户的即席聚合查询;没想到大家都记得这个逻辑。
这可以通过视图解决
create or replace view v as …Run Code Online (Sandbox Code Playgroud) schema ×10
sql-server ×3
oracle ×2
erd ×1
mysql ×1
security ×1
sqlite ×1
tablespaces ×1
tools ×1
view ×1