简洁版本:
移民怎么了down?在什么情况下您需要使用它?
长版:
许多支持数据库模式版本的框架(包括但不限于Rails的“迁移”)允许开发人员指定如何up反转数据升级(操作down),甚至通过分析代码自动生成降级操作(如 Rails 的change方法)。
事实上,在我遇到的所有 Rails 迁移代码中这样做似乎非常常见,这让我想知道这是否被认为是最佳实践。
就我个人而言,我从来没有需要降级数据库模式,而且我无法想象我想要的合理场景,无论是在开发还是生产中。我的经历似乎与普遍的down迁移不一致,所以我猜我错过了一些东西......
a 在哪些最常见的场景中down有用?
ruby-on-rails database-migration database-schema rails-migrations
我想获取按其依赖顺序排序的表名。
例如:如果我有 table users,users_orders并且orders我想按以下顺序获取表名:(users或orders无关紧要), orders, users_orders.
如果有办法请帮忙。
我在http://dba.stackexchange.com上提出了这个问题,但它已经关闭了,我在这里应该问一下,因为它与设计而不是管理有关.
我正在构建一个站点("站点"),我正在考虑如何为它设计数据库架构.
我有一些会影响结果的场景:
我该如何设计数据库的架构?
对于前两种情况,我认为有一个名为表Users有一个id和type领域.类型参考不同的表,例如FacebookUsers或GoogleUsers,每个具有user_id场-其具有外国相对于Users.id场-和其他领域,如first_name,profile_picture等.
但这种方法不支持第三种情况.所以我想到了以下内容:为每个外部站点设置
一个名为table Users和table 的基表,我希望允许用户连接到我的站点(即站点).
该表将包含有关用户的基本信息(例如- 所有可选),其中包含一个名称将保存值的列,或者这些值的序列化数组.
的外部站点小号表(例如)将持有的相关数据为外部站点与用户相关的,并以一个参考表" 字段.Usersfirst name, last name, username, password, emailaccountsnative|facebook|twitterFlickrUsersUsersuser_id
当用户将其帐户与外部站点(例如flickr,instagram)连接时,我使用该 …
我有一个ASP.NET MVC网站.在我的后端,我有一个名为People以下列的表:
我有一个通用的网页,使用模型绑定来查询这些数据.这是我的控制器动作:
public ActionResult GetData(FilterParams filterParams)
{
return View(_dataAccess.Retrieve(filterParams.Name, filterParams.Age, filterParams.location, . . .)
}
Run Code Online (Sandbox Code Playgroud)
映射到这样的东西:
http://www.mysite.com/MyController/GetData?Name=Bill .. .
Run Code Online (Sandbox Code Playgroud)
dataAccess层只是检查每个参数以查看它是否已填充以添加到db where子句.这非常有效.
我现在希望能够存储用户的过滤查询,我试图找出存储特定过滤器的最佳方法.由于某些过滤器在queryString中只有一个参数,而其他过滤器在过滤器中有10个以上的字段,因此我无法找到将此查询"过滤信息"存储到我的数据库中的最优雅方法.
我能想到的选择是:
有一个完整的表复制(有一些额外的cols),但称之为PeopleFilterQueries并在每个记录中填充一个FilterName并将过滤器的值放在每个字段(名称等)中
存储一个只有FilterName的表和一个字符串,我存储实际的查询字符串Name = Bill&Location = NewYork.这样,如果过滤器更改或增长,我将不必继续添加新列.
这种情况的最佳做法是什么?
我的数据库布局需要为每个新客户创建新架构.目前我使用我在网上找到的内部功能并进行了一些修改.
CREATE FUNCTION copy_schema(
source_schema character varying,
target_schema character varying,
copy_data boolean)
RETURNS integer AS
$BODY$
DECLARE
t_ex integer := 0;
s_ex integer := 0;
src_table character varying;
trg_table character varying;
BEGIN
if (select 1 from pg_namespace where nspname = source_schema) THEN
-- we have defined target schema
s_ex := 1;
END IF;
IF (s_ex = 0) THEN
-- no source schema exist
RETURN 0;
END IF;
if (select 1 from pg_namespace where nspname = target_schema) THEN
-- we have …Run Code Online (Sandbox Code Playgroud) 对于具有特定关系的Django应用程序,我感到困惑.我一直在查看以下数据库模式:http://www.databaseanswers.org/data%5Fmodels/customers_and_orders/index.htm
我对Customer_addresses与Customers和Addresses之间的关系感到困惑.
我知道:
这是否等同于多对多的关系?
当我在django中构建模型时,我有(简化):
class Customer_Address(models.Model):
customer = models.ManyToManyField('inventory.Customer')
address = models.ManyToManyField('inventory.Address')
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?或者这更有意义:
class Customer_Address(models.Model):
customer = models.ForeignKeyField('inventory.Customer')
address = models.ManyToManyField('inventory.Address')
Run Code Online (Sandbox Code Playgroud)
更新的问题:
基于这种想法,它是一个多对多的关系.有一个ManyToMany关系,需要两个ManyToManyFields吗?
基于以下内容:http: //en.wikipedia.org/wiki/Many-to-many_%28data_model%29
由于Django支持ManyToManyFields,我甚至不需要联结表吗?如果我使用联结表(Customer_addresses),文章似乎暗示使用两个OneToMany关系,这不仅仅是这样的两个外键?
class Customer_Address(models.Model):
customer = models.ForeignKeyField('inventory.Customer')
address = models.ForgeinKeyField('inventory.Address')
Run Code Online (Sandbox Code Playgroud)
更新的问题:
现在我们知道Django构建了中间表,并且不需要表Customer_Addresses.哪个表应该有ManyToManyfield?客户表?还是地址表?
示例:https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany
在Person/Groups示例中.. Groups具有ManyToManyField.是否有任何原因无法在Person表中定义ManyToManyfield?
在某个地方出现问题,我似乎无法找出原因.如果这已经被要求道歉.
我的数据库中有3个模式:COLLDESK LOCAL_IT GERBEN
COLLDESK是我们的主要模式,LOCAL_IT是我们进行本地开发的地方,而GERBEN是最终用户(应该只有选择选项).
现在我的COLLDESK模式中有一个名为GESTIONES的表.在LOCAL_IT中,我有一个名为ACTIONS的视图.这将保留COLLDESK模式中GESTIONES表中的4列.到现在为止还挺好!
现在我想在视图ACTIONS中给出GERBEN模式选择权限.但是,当我说
grant select on LOCAL_IT.ACTIONS to GERBEN
Run Code Online (Sandbox Code Playgroud)
我收到错误ORA-01720:COLLDESK.GESTIONES不存在授予选项
现在我尝试向GESTIONES提供GERBEN select权限,但我仍然收到错误消息
任何帮助将不胜感激!
亲切的问候
戈
我试图在同一台服务器上比较两个数据库的模式.
这两个数据库被命名为benchmarkdb和benchmarkdb_dev.
在Visual Studio 2017中,我转到工具> SQL Server>新架构比较...
从标有"选择源"和"选择目标"的下拉菜单(如下图所示),我想选择benchmarkdb作为源和bencmarkdb_dev目标.
单击选择源后,弹出"选择源模式",然后单击"选择连接..."按钮,这会弹出另一个弹出窗口.最新的弹出窗口(下图中右侧的弹出窗口)显示了我想要比较的两个数据库.
但是,在我为源或目标选择一个之后,所有弹出窗口关闭,但没有任何内容填充"选择源..."或"选择目标..."下拉菜单.事实上,它只是回到第一张图片.
有没有解决方案,所以我可以比较数据库之间的模式?
更新:
我在VS 2012,2015和2017上尝试了这一点.所有人都面临同样的问题.VS软件和系统软件是最新的.以下是我正在使用的某些版本的软件,如果有任何帮助的话.
Windows 7企业版SP1
VS 2012,2015和2017
SQL Server 2014
.NET Framework v4.7.02053
sql-server database-schema schema-compare visual-studio-2017
我有一个现有的数据库,它有两个模式,命名为schools和students,包含在一个实例中,declarative_base并通过从该实例继承的两个不同类
class DirectorioEstablecimiento(Base):
__table_args__ = {'schema': 'schools'}
__tablename__ = 'addresses'
# some Columns are defined here
Run Code Online (Sandbox Code Playgroud)
和
class Matricula(Base):
__table_args__ = {'schema': 'students'}
__tablename__ = 'enrollments'
# some Columns are defined here
Run Code Online (Sandbox Code Playgroud)
我可以使用该Base实例Base.metadata.create_all(bind=engine)在我在 postgres 中拥有的测试数据库中重新创建它。如果我查询,我可以确认这是没有问题的pg_namespace
In [111]: engine.execute("SELECT * FROM pg_namespace").fetchall()
2017-12-13 18:04:01,006 INFO sqlalchemy.engine.base.Engine SELECT * FROM pg_namespace
2017-12-13 18:04:01,006 INFO sqlalchemy.engine.base.Engine {}
Out[111]:
[('pg_toast', 10, None),
('pg_temp_1', 10, None),
('pg_toast_temp_1', 10, None),
('pg_catalog', 10, '{postgres=UC/postgres,=U/postgres}'),
('public', 10, …Run Code Online (Sandbox Code Playgroud) database-schema ×10
mysql ×3
postgresql ×2
asp.net-mvc ×1
database ×1
foreign-keys ×1
grant ×1
multi-tenant ×1
oracle ×1
python ×1
query-string ×1
schema ×1
select ×1
sql ×1
sql-server ×1
sqlalchemy ×1